Thread overview
[Issue 20092] void[1] auto slicing makes the compiler hang
Nov 15, 2019
Basile-z
Nov 15, 2019
Basile-z
Nov 16, 2019
Dlang Bot
Nov 25, 2019
Dlang Bot
Mar 21, 2020
Basile-z
Aug 25, 2020
Dlang Bot
November 15, 2019
https://issues.dlang.org/show_bug.cgi?id=20092

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |b2.temp@gmx.com

--- Comment #1 from Basile-z <b2.temp@gmx.com> ---
The loop happens in

  dmd.optimize.Expression.Expression_optimize(Expression e, int result, bool
keepLvalue)

But the background problem is that template parameter type deduction gives `ubyte ` instead of `void`. As a consequence the protections against infinite recursion when the optimizer visit a CastExpression don't work.

For example by rewriting the call in the test case this way

  (void[1]).init.front!void;

that works but

  (void[1]).init.front!ubyte;

loops...

--
November 15, 2019
https://issues.dlang.org/show_bug.cgi?id=20092

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice

--
November 16, 2019
https://issues.dlang.org/show_bug.cgi?id=20092

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

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

--- Comment #2 from Dlang Bot <dlang-bot@dlang.rocks> ---
@StianGulpen created dlang/dmd pull request #10571 "fix issue 20092 - void[1] auto slicing makes the compiler hang" fixing this issue:

- fix issue 20092 - void[1] auto slicing makes the compiler hang

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

--
November 25, 2019
https://issues.dlang.org/show_bug.cgi?id=20092

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #3 from Dlang Bot <dlang-bot@dlang.rocks> ---
dlang/dmd pull request #10571 "fix issue 20092 - void[1] auto slicing makes the compiler hang" was merged into stable:

- 738b5badd4b4395f7d2fce2e4b2a7c27b071be66 by Stian Gulpen:
  fix issue 20092 - void[1] auto slicing makes the compiler hang

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

--
March 21, 2020
https://issues.dlang.org/show_bug.cgi?id=20092

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|b2.temp@gmx.com             |

--
August 25, 2020
https://issues.dlang.org/show_bug.cgi?id=20092

--- Comment #4 from Dlang Bot <dlang-bot@dlang.rocks> ---
dlang/dmd pull request #11621 "[dmd-cxx] Fix Issue 20092 and Issue 20356 - recursive expansion/optimization fixes" was merged into dmd-cxx:

- 3cb450d070c5acffd0e848834ca3d34a585e0740 by Iain Buclaw:
  [dmd-cxx] Fix Issue 20092 - void[1] auto slicing makes the compiler hang

  Adds enum global.recursionLimit and uses it in all places where such
  errors can occur.

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

--