https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95914
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement Target Milestone|--- |11.0 Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- .ident "GCC: (GNU) 11.0.1 20210228 (experimental) [master revision 5d9d6c1cd8d:fd96f7217ea:ec9dc4fa0803cb85ae0b981ca0d6a406e8f6669c]" Produces: addw %di, %si movl $-1, %eax cmovnc %esi, %eax Which is exactly what you would have expected really. This is because we find ADD_OVERFLOW now: _6 = .ADD_OVERFLOW (a_2(D), b_3(D)); c_4 = REALPART_EXPR <_6>; _7 = IMAGPART_EXPR <_6>; if (_7 == 0) goto <bb 4>; [65.00%] else goto <bb 3>; [35.00%] <bb 3> [local count: 375809640]: <bb 4> [local count: 1073741824]: # iftmp.0_1 = PHI <c_4(2), 65535(3)> So fixed.