https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113729
Hongtao Liu <liuhongt at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |liuhongt at gcc dot gnu.org --- Comment #1 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- At gimple level it's (int) b + 200, it's different from (int)(b +200) when there's overflow, i.e. b = 200. For extern unsigned char b; unsigned char foo (void) { return 200 + b; } gcc already generate sub al, BYTE PTR b[rip], 56