modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20071219-1.c (about) 1 /* PR c++/34459 */ 2 3 extern void abort (void); 4 extern void *memset (void *s, int c, __SIZE_TYPE__ n); 5 6 struct S 7 { 8 char s[25]; 9 }; 10 11 struct S *p; 12 13 void __attribute__((noinline,noclone)) 14 foo (struct S *x, int set) 15 { 16 int i; 17 for (i = 0; i < sizeof (x->s); ++i) 18 if (x->s[i] != 0) 19 abort (); 20 else if (set) 21 x->s[i] = set; 22 p = x; 23 } 24 25 void __attribute__((noinline,noclone)) 26 test1 (void) 27 { 28 struct S a; 29 memset (&a.s, '\0', sizeof (a.s)); 30 foo (&a, 0); 31 struct S b = a; 32 foo (&b, 1); 33 b = a; 34 b = b; 35 foo (&b, 0); 36 } 37 38 void __attribute__((noinline,noclone)) 39 test2 (void) 40 { 41 struct S a; 42 memset (&a.s, '\0', sizeof (a.s)); 43 foo (&a, 0); 44 struct S b = a; 45 foo (&b, 1); 46 b = a; 47 b = *p; 48 foo (&b, 0); 49 } 50 51 void __attribute__((noinline,noclone)) 52 test3 (void) 53 { 54 struct S a; 55 memset (&a.s, '\0', sizeof (a.s)); 56 foo (&a, 0); 57 struct S b = a; 58 foo (&b, 1); 59 *p = a; 60 *p = b; 61 foo (&b, 0); 62 } 63 64 int 65 main (void) 66 { 67 test1 (); 68 test2 (); 69 test3 (); 70 return 0; 71 }