The following test case was reduced from code passing a core.time.Duration using std.concurrency: --- struct Foo { this(long) {} } struct FooContainer { Foo value; } auto get() { union Buf { FooContainer result; } Buf buf = {}; return buf.result; } void writerThread() { auto a = get(); } --- DMD 3bfac139 (on OS X) fails with: Internal error: backend/cod1.c 1677 In the original much larger test case, the error was different, although probably related (I'll re-test it once this version has been addressed): --- el:0x1008c5d70 cnt=0 cs=0 call 8 TYstruct 0x1008a27d0 0x1008aad70 el:0x1008a27d0 cnt=0 cs=0 var TYD func _D3std7variant17__T8VariantNVm32Z8VariantN37__T3getTS4file20FlushIntervalMessageZ3getMFNdNeZS4file20FlushIntervalMessage el:0x1008aad70 cnt=0 cs=0 + TY* 0x1008c6a30 0x1008aabf0 el:0x1008c6a30 cnt=1 cs=0 var TY* this el:0x1008aabf0 cnt=0 cs=0 const TYuns long long 8LL Internal error: backend/cod1.c 3235 ---
*** Issue 8327 has been marked as a duplicate of this issue. ***
Reduced test case. Bug8283 can be either a struct or a union. --------------------------- struct Ctor8283 { this(int n) {} } struct Bug8283 { Ctor8283 value; } Bug8283 get8283() { Bug8283 buf; return buf; } void outer8283() { Bug8283 x = get8283(); }
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/20083aa60aa612d89045eaad7cd8bdeb56b75bba fix Issue 8283 - ICE(cod1.c): returning struct with constructor as member of another struct
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/b16facabf3289ac2adc6a705f15a70decde05560 test case for Issue 8283
Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/68fa19e2cae1ae8c6799fb58e45b43e096f73ede fix Issue 8283 - ICE(cod1.c): returning struct with constructor as member of another struct
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル