https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99591
eggert at cs dot ucla.edu changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |eggert at cs dot ucla.edu --- Comment #3 from eggert at cs dot ucla.edu --- (In reply to Andrew Pinski from comment #2) > (In reply to Andrew Pinski from comment #1) > > Looks fixed for GCC 11+. It doesn't appear to be fixed in GCC 11.2.1 20210728 (Red Hat 11.2.1-1). For signed1_overflow I get the same suboptimal machine code described in comment #0. For signed2_overflow I get: signed2_overflow: movswl %si, %esi movswl %di, %edi addw %si, %di seto %al ret Although this is better than the machine code described in comment #0 it's still clearly suboptimal, as the two movswl instructions are redundant and both can be omitted.