Bug 8283 – ICE(cod1.c): returning struct with constructor as member of another struct

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-06-22T08:46:00Z
Last change time
2012-07-21T22:12:01Z
Keywords
ice
Assigned to
nobody
Creator
code

Comments

Comment #0 by code — 2012-06-22T08:46:53Z
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 ---
Comment #1 by code — 2012-06-30T13:05:46Z
*** Issue 8327 has been marked as a duplicate of this issue. ***
Comment #2 by clugdbug — 2012-07-16T02:00:26Z
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(); }
Comment #3 by github-bugzilla — 2012-07-21T22:06:36Z
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
Comment #4 by github-bugzilla — 2012-07-21T22:08:34Z
Comment #5 by github-bugzilla — 2012-07-21T22:12:01Z
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