https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121470
--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Segher Boessenkool from comment #10) > (In reply to Andrew Pinski from comment #8) > > (In reply to Segher Boessenkool from comment #7) > > > Please stop the vandalism. This is NOT a dup. > > > > How is it not? > > (unsigned char)0x80 vs (unsigned short)0x8000 that is the only difference > > between the two bug reports? > > That "unsigned char" is a negative number in GCC internal representation. > But > 32768 is not negative. unsigned short is also a negative number in GCC internal representation (RTL/const_int) For tree/gimple level INTEGER_CST is handled differently with still the full type on the constant. So knowing if treating as a signed or unsigned type for printing. This was true even back pre-ssa.