/* { dg-do run } */ /* { dg-require-effective-target int32plus } */ /* We use -ftrapv so that when SCEV final value replacement introduces undefined overflow we trap. UBSAN inhibits final value replacement. */ /* { dg-additional-options "-ftrapv" } */ int __attribute__((noclone,noinline)) foo(int a, int b) { int sum = 0; for (int i = 0; i < 60000; i++) sum += a + i * b; return sum; } int main(int argc, char **argv) { if (foo (-30000, 2) != 1799940000) __builtin_abort (); return 0; }