[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