https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115899
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[14 Regression] Misaligned |Signed integer overflow |address check missing |check is not done if on | |left side comma operator | |and unused --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced testcase: ``` int16_t func_1(void) { int32_t l_4 = 0x9351F200; int t = (((uint16_t)l_4 * (uint16_t)l_4) == 123), 1 ; return t; } ``` First off GCC never produced an overflow check here; which I think is correct as left hand side of the comma operator has no side effects otherwise. Yes there is undefined behavior in that multiply with respect to an overflow but I am not sure GCC needs to report it ...