eccp optimized the assert away!?!, anyway I wanna fix the real error first...
[libfirm] / ir / be / test / struct.c
1 #include <stdio.h>
2
3 struct A {
4   int x;
5 };
6
7 struct B {
8   int y;
9   struct A a1;
10   struct A a2;
11 } b = { 1, 2, 3 };
12
13 struct C {
14   char s;
15   int d[3];
16 } c = { 'q', { 4, 5, 6 } };
17
18 int e[3] = { 7, 8, 9 };
19
20 struct X {
21   char c;
22 } x = { 'w' };
23
24 struct N {
25   struct C foo[3];
26   char c;
27   struct B b;
28 } n = { '1', { 10, 11, 12 },
29         '2', { 13, 14, 15 },
30         '3', { 16, 17, 18 },
31         'c',
32         { 19, 20, 21 }
33       };
34
35 int md[5][4][3] = { { { 22, 23, 24 }, { 25, 26, 27 }, { 28, 29, 30 }, { 31, 32, 33 } },
36                     { { 34, 35, 36 }, { 37, 38, 39 }, { 40, 41, 42 }, { 43, 44, 45 } },
37                     { { 46, 47, 48 }, { 49, 50, 51 }, { 52, 53, 54 }, { 55, 56, 57 } },
38                     { { 58, 59, 60 }, { 61, 62, 63 }, { 64, 65, 66 }, { 67, 68, 69 } },
39                     { { 70, 71, 72 }, { 73, 74, 75 }, { 76, 77, 78 }, { 79, 80, 81 } },
40                   };
41
42 struct G {
43   char z1;
44   int k[2][2][2];
45   char z2;
46 } g = {
47         'u',
48         { { { 82, 83 }, { 84, 85 } }, { { 86, 87 }, { 88, 89 } } },
49         'v'
50       };
51
52 struct X xarr[] = { { 'H' }, { 'e' }, { 'l' }, { 'l' }, { 'o' }, { ' ' }, { 'W' }, { 'o' }, { 'r' }, { 'l' }, { 'd' }, { '!' }, { '\n' } } ;
53
54 struct C carr[] = {
55                     { 'k', { 90, 91, 92 } },
56                     { 'm', { 93, 94, 95 } },
57                     { 'n', { 96, 97, 98 } }
58                   };
59
60 int main(void) {
61   int i = 0;
62
63   printf("expected 1 2 3\nfound    %d %d %d\n\n", b.y, b.a1.x, b.a2.x);
64
65   printf("expected q 4 5 6\nfound    %c %d %d %d\n\n", c.s, c.d[0], c.d[1], c.d[2]);
66
67   printf("expected 7 8 9\nfound    %d %d %d\n\n", e[0], e[1], e[2]);
68
69   printf("expected w\nfound    %c\n\n", x.c);
70
71   printf("expected 0\nfound    %d\n\n", i);
72
73   printf("expected 1 10 11 12 | 2 13 14 15 | 3 16 17 18 | c | 19 20 21\nfound    %c %d %d %d | %c %d %d %d | %c %d %d %d | %c | %d %d %d\n\n",
74       n.foo[0].s, n.foo[0].d[0], n.foo[0].d[1], n.foo[0].d[2],
75       n.foo[1].s, n.foo[1].d[0], n.foo[1].d[1], n.foo[1].d[2],
76       n.foo[2].s, n.foo[2].d[0], n.foo[2].d[1], n.foo[2].d[2],
77       n.c, n.b.y, n.b.a1.x, n.b.a2.x);
78
79   printf("expected numbers 22-81: %d %d %d | %d %d %d | %d %d %d | %d %d %d\n", md[0][0][0], md[0][0][1], md[0][0][2],
80                                                                                 md[0][1][0], md[0][1][1], md[0][1][2],
81                                                                                 md[0][2][0], md[0][2][1], md[0][2][2],
82                                                                                 md[0][3][0], md[0][3][1], md[0][3][2]);
83   printf("                        %d %d %d | %d %d %d | %d %d %d | %d %d %d\n", md[1][0][0], md[1][0][1], md[1][0][2],
84                                                                                 md[1][1][0], md[1][1][1], md[1][1][2],
85                                                                                 md[1][2][0], md[1][2][1], md[1][2][2],
86                                                                                 md[1][3][0], md[1][3][1], md[1][3][2]);
87   printf("                        %d %d %d | %d %d %d | %d %d %d | %d %d %d\n", md[2][0][0], md[2][0][1], md[2][0][2],
88                                                                                 md[2][1][0], md[2][1][1], md[2][1][2],
89                                                                                 md[2][2][0], md[2][2][1], md[2][2][2],
90                                                                                 md[2][3][0], md[2][3][1], md[2][3][2]);
91   printf("                        %d %d %d | %d %d %d | %d %d %d | %d %d %d\n", md[3][0][0], md[3][0][1], md[3][0][2],
92                                                                                 md[3][1][0], md[3][1][1], md[3][1][2],
93                                                                                 md[3][2][0], md[3][2][1], md[3][2][2],
94                                                                                 md[3][3][0], md[3][3][1], md[3][3][2]);
95   printf("                        %d %d %d | %d %d %d | %d %d %d | %d %d %d\n", md[4][0][0], md[4][0][1], md[4][0][2],
96                                                                                 md[4][1][0], md[4][1][1], md[4][1][2],
97                                                                                 md[4][2][0], md[4][2][1], md[4][2][2],
98                                                                                 md[4][3][0], md[4][3][1], md[4][3][2]);
99
100   printf("\nexpected u | 82 83 | 84 85 | 86 87 | 88 89 | v\nfound    %c | %d %d | %d %d | %d %d | %d %d | %c\n\n", g.z1, g.k[0][0][0],
101       g.k[0][0][1], g.k[0][1][0], g.k[0][1][1], g.k[1][0][0], g.k[1][0][1], g.k[1][1][0], g.k[1][1][1], g.z2);
102
103   printf("expected Hello World!\nfound    ");
104   for (i = 0; i < sizeof(xarr); i++) printf("%c", xarr[i].c);
105
106   printf("\nexpected k 90 91 92 | m 93 94 95 | n 96 97 98\nfound    %c %d %d %d | %c %d %d %d | %c %d %d %d\n",
107       carr[0].s, carr[0].d[0], carr[0].d[1], carr[0].d[2], carr[1].s, carr[1].d[0], carr[1].d[1], carr[1].d[2],
108       carr[2].s, carr[2].d[0], carr[2].d[1], carr[2].d[2]);
109
110   return 0;
111 }