Thread overview
[Issue 22310] Template instantiation failures can be *very* costly
Sep 15, 2021
kinke
Sep 15, 2021
kinke
Sep 15, 2021
kinke
Sep 15, 2021
Dlang Bot
Sep 21, 2021
Dlang Bot
Dec 17, 2022
Iain Buclaw
September 15, 2021
https://issues.dlang.org/show_bug.cgi?id=22310

--- Comment #1 from kinke <kinke@gmx.net> ---
(In reply to kinke from comment #0)
> Note that failing to instantiate BooleanTypeOf!T for non-bool T also seems to lead to all successfully instantiated templates in there not to be cached (AliasThisTypeOf!T, OriginalType!T).

Scratch that, OriginalType!T *is* cached, only AliasThisTypeOf!T isn't,
possibly because of the speculative instantiation inside `static if (is(...))`.

--
September 15, 2021
https://issues.dlang.org/show_bug.cgi?id=22310

--- Comment #2 from kinke <kinke@gmx.net> ---
(In reply to kinke from comment #1)
> only AliasThisTypeOf!T isn't,
> possibly because of the speculative instantiation inside `static if
> (is(...))`.

... and scratch that too - that's most likely just another manifestation of the same issue, as all AliasThisTypeOf instantiations fail for the testcase.

--
September 15, 2021
https://issues.dlang.org/show_bug.cgi?id=22310

kinke <kinke@gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |performance

--
September 15, 2021
https://issues.dlang.org/show_bug.cgi?id=22310

Dlang Bot <dlang-bot@dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #3 from Dlang Bot <dlang-bot@dlang.rocks> ---
@kinke created dlang/dmd pull request #13075 "[stable] Fix Issue 22310 - Cache failed template instantiations" fixing this issue:

- Fix Issue 22310 - Cache failed template instantiations

  Semantic is re-run anyway for error messages in case errors were
  gagged for the first instantiation but aren't gagged for the current
  instantiation, see line 5645.

https://github.com/dlang/dmd/pull/13075

--
September 21, 2021
https://issues.dlang.org/show_bug.cgi?id=22310

--- Comment #4 from Dlang Bot <dlang-bot@dlang.rocks> ---
@kinke created dlang/dmd pull request #13093 "Fix Issue 22310 - Cache failed template instantiations" fixing this issue:

- Fix Issue 22310 - Cache failed template instantiations

  Only allow one retry attempt for gagged (speculative) instantiations,
  which seems to be crucial to make Phobos unittests compile.

https://github.com/dlang/dmd/pull/13093

--
December 17, 2022
https://issues.dlang.org/show_bug.cgi?id=22310

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P2

--