1 /* Test array initializion by store_by_pieces. */ 2 /* { dg-do run } */ 3 /* { dg-options "-O2" } */ 4 5 struct A { char c[10]; }; 6 extern void abort (void); 7 8 void 9 __attribute__((noinline)) check(struct A * a,int b)10check (struct A * a, int b) 11 { 12 const char *p; 13 switch (b) 14 { 15 case 0: 16 p = "abcdefghi"; 17 break; 18 case 1: 19 p = "j\0\0\0\0\0\0\0\0"; 20 break; 21 case 2: 22 p = "kl\0\0\0\0\0\0\0"; 23 break; 24 case 3: 25 p = "mnop\0\0\0\0\0"; 26 break; 27 case 4: 28 p = "qrstuvwx\0"; 29 break; 30 default: 31 abort (); 32 } 33 if (__builtin_memcmp (a->c, p, 10) != 0) 34 abort (); 35 } 36 37 int main(void)38main (void) 39 { 40 struct A a = { "abcdefghi" }; 41 check (&a, 0); 42 struct A b = { "j" }; 43 check (&b, 1); 44 struct A c = { "kl" }; 45 check (&c, 2); 46 struct A d = { "mnop" }; 47 check (&d, 3); 48 struct A e = { "qrstuvwx" }; 49 check (&e, 4); 50 return 0; 51 } 52