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)17iaddv (int a, int b) 18 { 19 return a + b; 20 } 21 main(void)22int 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