[Bug middle-end/38934] [4.3/4.4 Regression] ICE in set_value_range, at tree-vrp.c:398
jakub at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Jan 27 11:30:00 GMT 2009
------- Comment #12 from jakub at gcc dot gnu dot org 2009-01-27 11:29 -------
The difference is in interpret_integer:
579 if (itk == itk_none)
580 /* cpplib has already issued a warning for overflow. */
581 type = ((flags & CPP_N_UNSIGNED)
582 ? widest_unsigned_literal_type_node
583 : widest_integer_literal_type_node);
584 else
585 type = integer_types[itk];
in both cases the overflow warning has been issued, but
widest_integer_literal_type_node differs between 32-bit HWI and 64-bit HWI -
in the former case it is signed DImode, in the latter case signed TImode.
Negating TImode 0x8000000000000000 doesn't overflow, but negating
DImode 0x8000000000000000 does and thus the warning in 32-bit HWI case.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38934
More information about the Gcc-bugs
mailing list