summaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/ubsan/pr66313.c
blob: 7fd627dd40fd965d7c849d21224375c75b9f2c07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* { 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;
}