modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr60003.c (about) 1 /* PR tree-optimization/60003 */ 2 /* { dg-require-effective-target indirect_jumps } */ 3 4 extern void abort (void); 5 6 unsigned long long jmp_buf[5]; 7 8 __attribute__((noinline, noclone)) void 9 baz (void) 10 { 11 __builtin_longjmp (&jmp_buf, 1); 12 } 13 14 void 15 bar (void) 16 { 17 baz (); 18 } 19 20 __attribute__((noinline, noclone)) int 21 foo (int x) 22 { 23 int a = 0; 24 25 if (__builtin_setjmp (&jmp_buf) == 0) 26 { 27 while (1) 28 { 29 a = 1; 30 bar (); /* OK if baz () instead */ 31 } 32 } 33 else 34 { 35 if (a == 0) 36 return 0; 37 else 38 return x; 39 } 40 } 41 42 int 43 main () 44 { 45 if (foo (1) == 0) 46 abort (); 47 48 return 0; 49 }