modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20071029-1.c (about) 1 extern void exit (int); 2 extern void abort (void); 3 4 typedef union 5 { 6 struct 7 { 8 int f1, f2, f3, f4, f5, f6, f7, f8; 9 long int f9, f10; 10 int f11; 11 } f; 12 char s[56]; 13 long int a; 14 } T; 15 16 __attribute__((noinline)) 17 void 18 test (T *t) 19 { 20 static int i = 11; 21 if (t->f.f1 != i++) 22 abort (); 23 if (t->f.f2 || t->f.f3 || t->f.f4 || t->f.f5 || t->f.f6 24 || t->f.f7 || t->f.f8 || t->f.f9 || t->f.f10 || t->f.f11) 25 abort (); 26 if (i == 20) 27 exit (0); 28 } 29 30 __attribute__((noinline)) 31 void 32 foo (int i) 33 { 34 T t; 35 again: 36 t = (T) { { ++i, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; 37 test (&t); 38 goto again; 39 } 40 41 int 42 main (void) 43 { 44 T *t1, *t2; 45 int cnt = 0; 46 t1 = (T *) 0; 47 loop: 48 t2 = t1; 49 t1 = & (T) { .f.f9 = cnt++ }; 50 if (cnt < 3) 51 goto loop; 52 if (t1 != t2 || t1->f.f9 != 2) 53 abort (); 54 foo (10); 55 return 0; 56 }