1 /* { dg-require-effective-target int32plus } */
2 /* { dg-options "-fno-strict-overflow" } */
3 
4 extern void abort (void);
5 extern void exit (int);
6 
7 __attribute__ ((noinline)) void
foo(short unsigned int * p1,short unsigned int * p2)8 foo(short unsigned int *p1, short unsigned int *p2)
9 {
10   short unsigned int x1, x4;
11   int x2, x3, x5, x6;
12   unsigned int x7;
13 
14   x1 = *p1;
15   x2 = (int) x1;
16   x3 = x2 * 65536;
17   x4 = *p2;
18   x5 = (int) x4;
19   x6 = x3 + x4;
20   x7 = (unsigned int) x6;
21   if (x7 <= 268435455U)
22     abort ();
23   exit (0);
24 }
25 
26 int
main()27 main()
28 {
29   short unsigned int x, y;
30   x = -5;
31   y = -10;
32   foo (&x, &y);
33 }
34