[Issue 3496] ICE(cgelem.c, optimizer bug) cast(void *)(x1)== null.

2009-12-06 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3496


Walter Bright bugzi...@digitalmars.com changed:

   What|Removed |Added

 CC||bugzi...@digitalmars.com


--- Comment #7 from Walter Bright bugzi...@digitalmars.com 2009-12-06 
00:47:30 PST ---
Fixed dmd 1.053 and 2.037

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3496] ICE(cgelem.c, optimizer bug) cast(void *)(x1)== null.

2009-12-05 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3496


David Simcha dsim...@yahoo.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


--- Comment #6 from David Simcha dsim...@yahoo.com 2009-12-05 18:33:06 PST ---
Fixed 2.037.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3496] ICE(cgelem.c, optimizer bug) cast(void *)(x1)== null.

2009-11-23 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3496


Leandro Lucarella llu...@gmail.com changed:

   What|Removed |Added

 CC||llu...@gmail.com


--- Comment #5 from Leandro Lucarella llu...@gmail.com 2009-11-23 06:48:08 
PST ---
SVN commit: http://www.dsource.org/projects/dmd/changeset/267

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3496] ICE(cgelem.c, optimizer bug) cast(void *)(x1)== null.

2009-11-13 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3496


Don clugd...@yahoo.com.au changed:

   What|Removed |Added

Version|unspecified |1.00
Summary|ICE ..\ztc\cgelem.c 3387|ICE(cgelem.c, optimizer
   ||bug) cast(void *)(x1)==
   ||null.


--- Comment #3 from Don clugd...@yahoo.com.au 2009-11-13 12:42:02 PST ---
Reduced test case. Compile with -O (-inline not required). Not a regression;
fails on DMD0.165.

bool foo() {
int x;
return cast(void*) (x  1) == null;
}

Internal error: ztc\cgelem.c 3387

Really peculiar thing is that replacing  with | or ^ makes the bug disappear.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3496] ICE(cgelem.c, optimizer bug) cast(void *)(x1)== null.

2009-11-13 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3496


Don clugd...@yahoo.com.au changed:

   What|Removed |Added

   Keywords||patch


--- Comment #4 from Don clugd...@yahoo.com.au 2009-11-13 13:17:00 PST ---
This assert is actually completely harmless. It's part of a check for if the
equality comparison can be reduced to a single byte comparison. This can happen
if it's a pointer with all the high bits clear, which includes null. Here are 3
cases which trigger the same bug.

bool foo() 
{
int x;
//  return cast(void*) (x  1) == null;   // Case 1
//  return cast(void*) (x  1) == cast(void *)(2);  // Case 2
return cast(bool function()) (x  1) == null;// Case 3
}



PATCH:

cgelem.c, line 3387.
/* Try to convert to byte/word comparison for ((x  c)==d)
   when mask c essentially casts x to a smaller type
 */
if (OPTIMIZER 
e1-Eoper == OPand 
e1-E2-Eoper == OPconst 
(sz = tysize(e2-Ety))  CHARSIZE)
{   int op;

-assert(tyintegral(e2-Ety));
+assert(tyintegral(e2-Ety) || (e2-Ety == TYnptr));
#if TX86/* ending up with byte ops in A regs */
if (!(el_tolong(e2)  ~CHARMASK) 
!(el_tolong(e1-E2)  ~CHARMASK)
   )
{

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---