Merge to HEAD at tree-cleanup-merge-20041024 .
[official-gcc.git] / gcc / testsuite / gcc.dg / compat / struct-align-1.h
blobd9006c74159ec87f9d55220a258de2666050a4c7
1 /* Define several variants of a struct for which the alignment differs
2 between powerpc64-linux and powerpc64-aix. This might be interesting
3 for other targets as well. */
5 #define DESC_orig "original"
6 struct B1_orig {
7 char c;
8 double d;
9 };
11 struct A2_orig {
12 double d;
15 struct B2_orig {
16 char c;
17 struct A2_orig a2;
20 struct A3_orig {
21 double d;
22 int i;
25 struct B3_orig {
26 char c;
27 struct A3_orig a3;
30 #ifndef SKIP_ATTRIBUTE
31 #define DESC_p_all "packed attribute for all"
32 struct B1_p_all {
33 char c;
34 double d;
35 } __attribute__ ((packed));
37 struct A2_p_all {
38 double d;
39 } __attribute__ ((packed));
41 struct B2_p_all {
42 char c;
43 struct A2_p_all a2;
44 } __attribute__ ((packed));
46 struct A3_p_all {
47 double d;
48 int i;
49 } __attribute__ ((packed));
51 struct B3_p_all {
52 char c;
53 struct A3_p_all a3;
54 } __attribute__ ((packed));
56 #define DESC_p_inner "packed attribute for inner"
57 struct B1_p_inner {
58 char c;
59 double d;
62 struct A2_p_inner {
63 double d;
64 } __attribute__ ((packed));
66 struct B2_p_inner {
67 char c;
68 struct A2_p_inner a2;
71 struct A3_p_inner {
72 double d;
73 int i;
74 } __attribute__ ((packed));
76 struct B3_p_inner {
77 char c;
78 struct A3_p_inner a3;
81 #define DESC_p_outer "packed attribute for outer"
82 struct B1_p_outer {
83 char c;
84 double d;
85 } __attribute__ ((packed));
87 struct A2_p_outer {
88 double d;
91 struct B2_p_outer {
92 char c;
93 struct A2_p_outer a2;
94 } __attribute__ ((packed));
96 struct A3_p_outer {
97 double d;
98 int i;
101 struct B3_p_outer {
102 char c;
103 struct A3_p_outer a3;
104 } __attribute__ ((packed));
106 #define DESC_a_max "maximum useful struct alignment for all"
107 struct B1_a_max {
108 char c;
109 double d;
110 } __attribute__ ((aligned));
112 struct A2_a_max {
113 double d;
114 } __attribute__ ((aligned));
116 struct B2_a_max {
117 char c;
118 struct A2_a_max a2;
119 } __attribute__ ((aligned));
121 struct A3_a_max {
122 double d;
123 int i;
124 } __attribute__ ((aligned));
126 struct B3_a_max {
127 char c;
128 struct A3_a_max a3;
129 } __attribute__ ((aligned));
131 #define DESC_m_outer_p_inner "maximum alignment for outer, packed inner"
132 struct B1_m_outer_p_inner {
133 char c;
134 double d;
135 } __attribute__ ((aligned)) __attribute__ ((packed));
137 struct A2_m_outer_p_inner {
138 double d;
139 } __attribute__ ((packed));
141 struct B2_m_outer_p_inner {
142 char c;
143 struct A2_m_outer_p_inner a2;
144 } __attribute__ ((aligned));
146 struct A3_m_outer_p_inner {
147 double d;
148 int i;
149 } __attribute__ ((packed));
151 struct B3_m_outer_p_inner {
152 char c;
153 struct A3_m_outer_p_inner a3;
154 } __attribute__ ((aligned));
156 #define DESC_m_inner_p_outer "maximum alignment for inner, packed outer"
157 struct B1_m_inner_p_outer {
158 char c;
159 double d;
160 } __attribute__ ((aligned)) __attribute__ ((packed));
162 struct A2_m_inner_p_outer {
163 double d;
164 } __attribute__ ((aligned));
166 struct B2_m_inner_p_outer {
167 char c;
168 struct A2_m_inner_p_outer a2;
169 } __attribute__ ((packed));
171 struct A3_m_inner_p_outer {
172 double d;
173 int i;
174 } __attribute__ ((aligned));
176 struct B3_m_inner_p_outer {
177 char c;
178 struct A3_m_inner_p_outer a3;
179 } __attribute__ ((packed));
180 #endif