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