summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-02-25 18:08:48 +0000
committerReid Kleckner <reid@kleckner.net>2014-02-25 18:08:48 +0000
commitdb673ca26af8501ddc1ab06d1f1209e96e76687e (patch)
tree5d8b6f29cbfb099edd1f9fa2e7d0dc8f1d0fb2f6 /clang/test
parent00e8a1915a258bf02edae8a349a1d751362fe979 (diff)
downloadbcm5719-llvm-db673ca26af8501ddc1ab06d1f1209e96e76687e.tar.gz
bcm5719-llvm-db673ca26af8501ddc1ab06d1f1209e96e76687e.zip
MS ABI: Just use getTypeInfoInChars to get the field size
This was changed to use manual desugaring and multiplication in r201832 and fixed for multi-dimensional arrays in r201917. However, it breaks down in the presence of typedefs. Rather than attempting to handle all the desugaring, just go back to calling the generic type info code. This was discovered while compiling SIInstrWaits.cpp in the R600 backend. llvm-svn: 202175
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Layout/ms-x86-basic-layout.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/Layout/ms-x86-basic-layout.cpp b/clang/test/Layout/ms-x86-basic-layout.cpp
index c522de84b28..c7501a6cbb2 100644
--- a/clang/test/Layout/ms-x86-basic-layout.cpp
+++ b/clang/test/Layout/ms-x86-basic-layout.cpp
@@ -800,6 +800,22 @@ struct ArrayOfArrayFieldOfRecords {
// CHECK-X64-NEXT: | [sizeof=16, align=4
// CHECK-X64-NEXT: | nvsize=16, nvalign=4]
+struct RecordArrayTypedef {
+ typedef A4 ArrayTy[2];
+ ArrayTy InlineElts[2];
+};
+
+// CHECK: *** Dumping AST Record Layout
+// CHECK-NEXT: 0 | struct RecordArrayTypedef
+// CHECK-NEXT: 0 | ArrayTy [2] InlineElts
+// CHECK-NEXT: | [sizeof=16, align=4
+// CHECK-NEXT: | nvsize=16, nvalign=4]
+// CHECK-X64: *** Dumping AST Record Layout
+// CHECK-X64-NEXT: 0 | struct RecordArrayTypedef
+// CHECK-X64-NEXT: 0 | ArrayTy [2] InlineElts
+// CHECK-X64-NEXT: | [sizeof=16, align=4
+// CHECK-X64-NEXT: | nvsize=16, nvalign=4]
+
int a[
sizeof(TestF0)+
sizeof(TestF1)+
@@ -823,4 +839,5 @@ sizeof(F5)+
sizeof(F6)+
sizeof(ArrayFieldOfRecords)+
sizeof(ArrayOfArrayFieldOfRecords)+
+sizeof(RecordArrayTypedef)+
0];
OpenPOWER on IntegriCloud