------- 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

Reply via email to