------- Comment #2 from rguenth at gcc dot gnu dot org 2006-04-19 15:13 -------
"-CST" in this case is unsigned 4294967292, it just happens to be printed as
-4B.
So the addition wraps, as it is done using unsigned arithmetic. Writing
char *foo(char *p)
{
return p + 4294967292;
}
results in the same
D.1523 = p + -4B;
but the above source would be invalid due to the wrapping pointer. Now the
middle-end in some places assumes/assumed that pointers do not wrap.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |UNCONFIRMED
Resolution|INVALID |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27214