[Issue 4578] New: Regression: ICE: Internal error: ../ztc/cg87.c 1364: var+arr[]
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Aug 3 15:52:47 PDT 2010
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 at puremagic.com
ReportedBy: baseball.mjp at gmail.com
--- Comment #0 from Michael P <baseball.mjp at 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: -------
More information about the Digitalmars-d-bugs
mailing list