https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66313
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Ok, then I'll try to fix it up there. A testcase: /* PR middle-end/66313 */ /* { dg-do run } */ /* { dg-options "-fsanitize=undefined -fsanitize-undefined-trap-on-error" } */ int __attribute__ ((__noinline__)) f (int a, int b, int c) { return a * b + a * c; } int main () { int a = f (0, __INT_MAX__, __INT_MAX__); asm ("" : : "r" (a)); a = f (-1, __INT_MAX__, 1); asm ("" : : "r" (a)); }