This commit was manufactured by cvs2svn to create branch
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20040401-1.c
blobd74afda470744647cb49d75986c479e66847a50e
1 /* PR optimization/8634 */
3 extern void abort (void);
5 struct foo {
6 const char a, b, c, d, e, f, g, h, i, j;
7 };
9 struct bar {
10 const char a, b, c, d, e, f, g, h, i;
11 char j;
14 int test1 ()
16 struct foo X = { a : 'A', c : 'C', e : 'E', g : 'G', i : 'I' };
17 char buffer[10];
18 __builtin_memcpy (buffer, &X, 10);
19 if (buffer[0] != 'A' || buffer[1] != '\0'
20 || buffer[2] != 'C' || buffer[3] != '\0'
21 || buffer[4] != 'E' || buffer[5] != '\0'
22 || buffer[6] != 'G' || buffer[7] != '\0'
23 || buffer[8] != 'I' || buffer[9] != '\0')
24 abort ();
25 return 0;
28 int test2 ()
30 struct bar X = { a : 'A', c : 'C', e : 'E', g : 'G', i : 'I' };
31 char buffer[10];
32 __builtin_memcpy (buffer, &X, 10);
33 if (buffer[0] != 'A' || buffer[1] != '\0'
34 || buffer[2] != 'C' || buffer[3] != '\0'
35 || buffer[4] != 'E' || buffer[5] != '\0'
36 || buffer[6] != 'G' || buffer[7] != '\0'
37 || buffer[8] != 'I' || buffer[9] != '\0')
38 abort ();
39 return 0;
42 int test3 ()
44 struct foo X = { .b = 'B', .d = 'D', .f = 'F', .h = 'H' , .j = 'J' };
45 char buffer[10];
46 __builtin_memcpy (buffer, &X, 10);
47 if (buffer[0] != '\0' || buffer[1] != 'B'
48 || buffer[2] != '\0' || buffer[3] != 'D'
49 || buffer[4] != '\0' || buffer[5] != 'F'
50 || buffer[6] != '\0' || buffer[7] != 'H'
51 || buffer[8] != '\0' || buffer[9] != 'J')
52 abort ();
53 return 0;
56 int test4 ()
58 struct bar X = { .b = 'B', .d = 'D', .f = 'F', .h = 'H' , .j = 'J' };
59 char buffer[10];
60 __builtin_memcpy (buffer, &X, 10);
61 if (buffer[0] != '\0' || buffer[1] != 'B'
62 || buffer[2] != '\0' || buffer[3] != 'D'
63 || buffer[4] != '\0' || buffer[5] != 'F'
64 || buffer[6] != '\0' || buffer[7] != 'H'
65 || buffer[8] != '\0' || buffer[9] != 'J')
66 abort ();
67 return 0;
70 int main ()
72 test1 (); test2 (); test3 (); test4 ();
73 return 0;