- more -f combo tests
[libfirm] / ir / be / test / Arrays.c
1 #include <stdio.h>
2 #include <string.h>
3
4 struct Arr2Object {
5     int a[10];
6     int inrom[10];
7     int b[10];
8 } arr_init = {
9   { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
10   { 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 },
11   { 1000, 1001 , 1002, 1003, 1004 , 1005, 1006, 1007, 1008, 1009}
12 };
13
14 struct ArrObject {
15   int num;
16 };
17
18 void ctorArrObject(struct ArrObject *pThis, int i) {
19   pThis->num = i;
20 }
21
22 void f(struct ArrObject *pThis) {
23   printf("num is %d\n", pThis->num);
24 }
25
26 static void pass_array_test(struct ArrObject *a, int a_len)
27 {
28   int i;
29
30   for(i = 0; i < a_len; i++) {
31     f(&a[i]);
32   }
33 }
34
35 #define length(a)       (sizeof(a)/sizeof((a)[0]))
36
37 int main(int argc, char *argv[]) {
38   int i, j, bi;
39   struct ArrObject ao[10];
40   struct Arr2Object a2o[2];
41   struct Arr2Object a2;
42
43   for(i = 0; i < length(ao); i++)
44     ctorArrObject(&ao[i], i);
45
46   for(i = 0; i < 10; i++) {
47     f(&ao[i]);
48   }
49
50   pass_array_test(ao, length(ao));
51
52   for(i = 0; i < length(a2o); i++)
53     memcpy(&a2o[i], &arr_init, sizeof(arr_init));
54
55   for(i = 0; i < length(a2o[0].a); i++) {
56     memcpy(&a2, &a2o[0], sizeof(a2));
57     j = a2.a[i];
58     printf("%d\n", j);
59   }
60
61   a2o[0].a[5] = 4711;
62
63   printf("length(a2o[0].a) = %d\n", length(a2o[0].a));
64   for(i = 0; i < length(a2o[0].a); i++) {
65     printf("%d\n", a2o[0].a[i]);
66   }
67
68   printf("length(a2o[1].a) = %d\n", length(a2o[1].a));
69   for(i = 0; i < length(a2o[1].a); i++) {
70     printf("%d\n", a2o[1].a[i]);
71   }
72
73   printf("length(a2o[0].b) = %d\n", length(a2o[0].b));
74   for(i = 0; i < length(a2o[0].b); i++) {
75     memcpy(&a2, &a2o[0], sizeof(a2));
76     bi = a2.b[i];
77     printf("%d\n", bi);
78   }
79
80   printf("inrom 0 .. 9:\n");
81   for(i = 0; i < 10; i++) {
82     printf("%d\n", arr_init.inrom[i]);
83   }
84   return 0;
85 }