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: nob...@puremagic.com ReportedBy: baseball....@gmail.com --- Comment #0 from Michael P <baseball....@gmail.com> 2010-08-03 15:52:45 PDT --- 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: -------