1 /* { dg-do run } */
2 /* { dg-additional-options "-ftrapv -fno-ipa-vrp" } */
3 /* { dg-require-effective-target trapping } */
4 /* { dg-require-fork "" } */
5 
6 #include <stdlib.h>
7 #include <unistd.h>
8 #include <sys/types.h>
9 #include <sys/wait.h>
10 
11 /* Verify SImode operations properly trap.  PR middle-end/52478  */
12 
13 /* Disallow inlining/cloning which would constant propagate and trigger
14    unrelated bugs.  */
15 
16 int __attribute__((noipa))
iaddv(int a,int b)17 iaddv (int a, int b)
18 {
19   return a + b;
20 }
21 
main(void)22 int main(void)
23 {
24   pid_t child = fork ();
25   int status = 0;
26   if (child == 0)
27     {
28       volatile int x = iaddv (__INT_MAX__, 1);
29       exit (0);
30     }
31   else if (child == -1)
32     return 0;
33   if (wait (&status) == child
34       && status == 0)
35     abort ();
36   return 0;
37 }
38