/* { dg-options "-O -fexpensive-optimizations -fno-tree-bit-ccp" } */ __attribute__ ((noinline, noclone)) int foo (unsigned short x, unsigned short y) { int r; if (__builtin_mul_overflow (x, y, &r)) __builtin_abort (); return r; } int main (void) { int x = 1; int y = 2; if (foo (x, y) != x * y) __builtin_abort (); return 0; }