1 /* { dg-do run { target *-*-linux* *-*-gnu* *-*-uclinux* } } */ 2 /* { dg-options "-O" } */ 3 4 #include <unistd.h> 5 #include <signal.h> 6 #include <stdlib.h> 7 8 static char var1 = 0L; 9 static char *var2 = &var1; 10 do_exit(int i)11void do_exit (int i) 12 { 13 exit (0); 14 } 15 main(void)16int main(void) 17 { 18 struct sigaction s; 19 sigemptyset (&s.sa_mask); 20 s.sa_handler = do_exit; 21 s.sa_flags = 0; 22 sigaction (SIGALRM, &s, NULL); 23 alarm (1); 24 /* The following loop is infinite, the division by zero should not 25 be hoisted out of it. */ 26 for (; (var1 == 0 ? 0 : (100 / var1)) == *var2; ); 27 return 0; 28 } 29