[Issue 3041] Array slices can be compared to their element type: bad codegen or ICE
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Jun 8 16:17:26 PDT 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3041
Don <clugdbug at yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
CC| |clugdbug at yahoo.com.au
--- Comment #1 from Don <clugdbug at yahoo.com.au> 2009-06-08 16:17:25 PDT ---
Root cause: CmpExp::toElem() and EqualExp::toElem() have a special case
for a[] == b[], but not for a[]==b.
--- e2ir.c (revision 27)
+++ e2ir.c (working copy)
@@ -2191,6 +2191,14 @@
e = el_bin(eop, TYint, e, el_long(TYint, 0));
el_setLoc(e,loc);
}
+ else if ((int)eop > 1 &&
+ (t1->ty == Tarray || t1->ty == Tsarray) ||
+ (t2->ty == Tarray || t2->ty == Tsarray))
+ {
+ error("Invalid array comparison operation");
+ e = toElemBin(irs, eop);
+ return e;
+ }
else
{
if ((int)eop <= 1)
@@ -2285,6 +2293,14 @@
e = el_bin(OPxor, TYint, e, el_long(TYint, 1));
el_setLoc(e,loc);
}
+ else if ((t1->ty == Tarray || t1->ty == Tsarray) ||
+ (t2->ty == Tarray || t2->ty == Tsarray))
+ {
+ error("Invalid array equality operation");
+ e = toElemBin(irs, eop);
+ return e;
+
+ }
else
e = toElemBin(irs, eop);
return e;
*/
--
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