digitalmars.D.bugs - [Issue 4578] New: Regression: ICE: Internal error: ../ztc/cg87.c 1364: var+arr[]
- d-bugmail puremagic.com (48/48) Aug 03 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4578
- d-bugmail puremagic.com (27/27) Aug 04 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4578
- d-bugmail puremagic.com (12/12) Aug 05 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4578
http://d.puremagic.com/issues/show_bug.cgi?id=4578 Summary: Regression: ICE: Internal error: ../ztc/cg87.c 1364: var+arr[] Product: D Version: D1 Platform: Other OS/Version: Linux Status: NEW Severity: regression Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: baseball.mjp gmail.com --- Code to create ICE: void main() { int[] foo; int y = 2; int[] c = y + foo[]; } $ dmd test.d Internal error: ../ztc/cgcod.c 1596 The same error occurs if using the operators +, -, or %. The proper error is given with operators * and /. (Proper error I think is what is being given in 1.061) In 1.061, I would receive this error: test.d(5): Error: Array operation y + foo[] not implemented This seems to be because functions AddExp::toElem, MinExp::toElem and ModExp::toElem in e2ir.c do not have the code that checks for a non-valid array. The code from these was taken out in 1.062. The code seemed to be added for MulExp and DivExp because of this issue: http://d.puremagic.com/issues/show_bug.cgi?id=3522 but was later taken out of AddExp and MinExp. Perhaps this code in BinExp::toElem: if ((tb1->ty == Tarray || tb1->ty == Tsarray) && (tb2->ty == Tarray || tb2->ty == Tsarray) && op != OPeq ) Should be: if ((tb1->ty == Tarray || tb1->ty == Tsarray) || (tb2->ty == Tarray || tb2->ty == Tsarray) && op != OPeq ) That might catch array ops errors for all of the xxxExp types. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 03 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4578 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch CC| |clugdbug yahoo.com.au Version|D1 |D1 & D2 Summary|Regression: ICE: Internal |Regression(2.047,1.062): |error: ../ztc/cg87.c 1364: |ICE(cgcod.c): var+arr[] |var+arr[] | OS/Version|Linux |All That suggested patch is almost right. It fails even for the test case, though! It needs to allow void assignments. This patch below passes the test suite. PATCH: e2ir.c, BinExp::toElemBin(), line 2004. if ((tb1->ty == Tarray || tb1->ty == Tsarray || tb2->ty == Tarray || tb2->ty == Tsarray) && tb2->ty != Tvoid && op != OPeq && op != OPandand && op != OPoror ) { error("Array operation %s not implemented", toChars()); return el_long(type->totym(), 0); // error recovery } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 04 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4578 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED 11:16:41 PDT --- http://www.dsource.org/projects/dmd/changeset/600 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 05 2010