1 struct A { int i, j; char pad[512]; } a; 2 3 int __attribute__((noinline)) foo(void)4foo (void) 5 { 6 __builtin_memset (&a, 0x26, sizeof a); 7 return a.i; 8 } 9 10 void __attribute__((noinline)) bar(void)11bar (void) 12 { 13 __builtin_memset (&a, 0x36, sizeof a); 14 a.i = 0x36363636; 15 a.j = 0x36373636; 16 } 17 18 int main(void)19main (void) 20 { 21 int i; 22 if (sizeof (int) != 4 || __CHAR_BIT__ != 8) 23 return 0; 24 25 if (foo () != 0x26262626) 26 __builtin_abort (); 27 for (i = 0; i < sizeof a; i++) 28 if (((char *)&a)[i] != 0x26) 29 __builtin_abort (); 30 31 bar (); 32 if (a.j != 0x36373636) 33 __builtin_abort (); 34 a.j = 0x36363636; 35 for (i = 0; i < sizeof a; i++) 36 if (((char *)&a)[i] != 0x36) 37 __builtin_abort (); 38 return 0; 39 } 40