xref: /llvm-project/clang/test/Layout/aix-power-alignment-typedef.cpp (revision 7178ee190235bd5b6cc7c71d3ccc061d4b12656b)
1 // RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts %s | \
2 // RUN:   FileCheck %s
3 
4 // RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts %s | \
5 // RUN:   FileCheck %s
6 
7 namespace test1 {
8 typedef double __attribute__((__aligned__(2))) Dbl;
9 struct A {
10   Dbl x;
11 };
12 
13 int b = sizeof(A);
14 
15 // CHECK:          0 | struct test1::A
16 // CHECK-NEXT:     0 |   Dbl x
17 // CHECK-NEXT:       | [sizeof=8, dsize=8, align=2, preferredalign=2,
18 // CHECK-NEXT:       |  nvsize=8, nvalign=2, preferrednvalign=2]
19 
20 } // namespace test1
21 
22 namespace test2 {
23 typedef double Dbl __attribute__((__aligned__(2)));
24 typedef Dbl DblArr[];
25 
26 union U {
27   DblArr da;
28   char x;
29 };
30 
31 int x = sizeof(U);
32 
33 // CHECK:          0 | union test2::U
34 // CHECK-NEXT:     0 |   DblArr da
35 // CHECK-NEXT:     0 |   char x
36 // CHECK-NEXT:       | [sizeof=2, dsize=2, align=2, preferredalign=2,
37 // CHECK-NEXT:       |  nvsize=2, nvalign=2, preferrednvalign=2]
38 
39 } // namespace test2
40 
41 namespace test3 {
42 typedef double DblArr[] __attribute__((__aligned__(2)));
43 
44 union U {
45   DblArr da;
46   char x;
47 };
48 
49 int x = sizeof(U);
50 
51 // CHECK:          0 | union test3::U
52 // CHECK-NEXT:     0 |   DblArr da
53 // CHECK-NEXT:     0 |   char x
54 // CHECK-NEXT:       | [sizeof=2, dsize=2, align=2, preferredalign=2,
55 // CHECK-NEXT:       |  nvsize=2, nvalign=2, preferrednvalign=2]
56 
57 } // namespace test3
58 
59 namespace test4 {
60 typedef double Dbl __attribute__((__aligned__(2)));
61 
62 union U {
63   Dbl DblArr[];
64   char x;
65 };
66 
67 int x = sizeof(U);
68 
69 // CHECK:          0 | union test4::U
70 // CHECK-NEXT:     0 |   Dbl[] DblArr
71 // CHECK-NEXT:     0 |   char x
72 // CHECK-NEXT:       | [sizeof=2, dsize=2, align=2, preferredalign=2,
73 // CHECK-NEXT:       |  nvsize=2, nvalign=2, preferrednvalign=2]
74 
75 } // namespace test4
76