| /* { dg-do run } */ |
| /* { dg-options "-fsanitize=undefined -fsanitize-undefined-trap-on-error" } */ |
| |
| int __attribute__((noinline,noclone)) |
| f(int a, int b, int c) |
| { |
| return a * b + a * c; |
| } |
| int __attribute__((noinline,noclone)) |
| g(int a) |
| { |
| return a * (__INT_MAX__/2) + a * (__INT_MAX__/2 + 2); |
| } |
| int __attribute__((noinline,noclone)) |
| h(int a, int b) |
| { |
| return a * (__INT_MAX__/2 + 1) + b * (__INT_MAX__/2 + 1); |
| } |
| int main() |
| { |
| volatile int tem = f(0, __INT_MAX__, __INT_MAX__); |
| tem = f(-1, __INT_MAX__/2 + 1, __INT_MAX__/2 + 1); |
| tem = g(-1); |
| tem = h(-1, -1); |
| return 0; |
| } |