It seems to be a BUG of ldc2 compiler

Kai Nacke kai at redstar.de
Wed Nov 13 11:34:31 PST 2013


Hi tae!

On Wednesday, 13 November 2013 at 03:42:27 UTC, tae hoo wrote:
> <test.d>
> module test;
> void poo()
> {
>     wchar[4096] buffW;
> }
>
> ldc2 --output-o -c -IC:/LDC/ldc/runtime/druntime/src 
> -IC:/LDC/ldc/runtime/druntime/src/gc test.d -oftest.obj -w -d 
> -O0 -release -IC:/LDC/ldc/runtime/phobos
>
> if you compile the above test.d, same error message generated
>>> Unknown frame setup opcode!
>>> UNREACHABLE executed at 
>>> C:\LDC\llvm\lib\Target\X86\X86MCInstLower.cpp:855!
>
>
> But, if reduce the stack variable size to below 2000,
> error message not generated.
>
> <test.d>
> module test;
> void poo()
> {
>     wchar[2000] buffW;
> }

Yes, you are right. It is a bug! The sub instruction after a call 
to __chkstk was not regarded as valid. I already updated the 
patch. Please retry.

And thanks for the report. :-)

> It seems to be a BUG of ldc2 compiler not stack alingment 
> problem.

A wouldn't call a problem caused by a LLVM patch a bug of ldc2, 
even if the author of the patch happens to be a maintainer of the 
ldc project. ;-)

Regards,
Kai


More information about the digitalmars-d-ldc mailing list