diff options
Diffstat (limited to 'test/CodeGenCXX/microsoft-abi-vbtables.cpp')
-rw-r--r-- | test/CodeGenCXX/microsoft-abi-vbtables.cpp | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/test/CodeGenCXX/microsoft-abi-vbtables.cpp b/test/CodeGenCXX/microsoft-abi-vbtables.cpp index 6de556b1d814..8b86d6bd3c8e 100644 --- a/test/CodeGenCXX/microsoft-abi-vbtables.cpp +++ b/test/CodeGenCXX/microsoft-abi-vbtables.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -fno-rtti -cxx-abi microsoft -triple=i386-pc-win32 -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 %s -fno-rtti -triple=i386-pc-win32 -emit-llvm -o - | FileCheck %s // See microsoft-abi-structors.cpp for constructor codegen tests. @@ -477,3 +477,54 @@ F f; // CHECK-DAG: @"\01??_8F@Test26@@7BD@1@@" = linkonce_odr unnamed_addr constant [4 x i32] [i32 0, i32 16, i32 12, i32 20] // CHECK-DAG: @"\01??_8F@Test26@@7BE@1@@" = linkonce_odr unnamed_addr constant [2 x i32] [i32 -4, i32 28] } + +namespace Test27 { +// PR17748 +struct A {}; +struct B : virtual A {}; +struct C : virtual B {}; +struct D : C, B {}; +struct E : D {}; +struct F : C, E {}; +struct G : F, D, C, B {}; +G x; + +// CHECK-DAG: @"\01??_8G@Test27@@7BB@1@@" = +// CHECK-DAG: @"\01??_8G@Test27@@7BB@1@F@1@@" = +// CHECK-DAG: @"\01??_8G@Test27@@7BC@1@@" = +// CHECK-DAG: @"\01??_8G@Test27@@7BC@1@D@1@@" = +// CHECK-DAG: @"\01??_8G@Test27@@7BC@1@E@1@@" = +// CHECK-DAG: @"\01??_8G@Test27@@7BC@1@F@1@@" = +// CHECK-DAG: @"\01??_8G@Test27@@7BD@1@@" = +// CHECK-DAG: @"\01??_8G@Test27@@7BF@1@@" = +} + +namespace Test28 { +// PR17748 +struct A {}; +struct B : virtual A {}; +struct C : virtual B {}; +struct D : C, B {}; +struct E : C, D {}; +struct F : virtual E, virtual D, virtual C {}; +F x; + +// CHECK-DAG: @"\01??_8F@Test28@@7B01@@" = +// CHECK-DAG: @"\01??_8F@Test28@@7BB@1@@" = +// CHECK-DAG: @"\01??_8F@Test28@@7BC@1@@" = +// CHECK-DAG: @"\01??_8F@Test28@@7BC@1@D@1@@" = +// CHECK-DAG: @"\01??_8F@Test28@@7BC@1@D@1@E@1@@" = +// CHECK-DAG: @"\01??_8F@Test28@@7BC@1@E@1@@" = +// CHECK-DAG: @"\01??_8F@Test28@@7BD@1@@" = +// CHECK-DAG: @"\01??_8F@Test28@@7BE@1@@" = +} + +namespace Test29 { +struct A {}; +struct B : virtual A {}; +struct C : virtual B {}; +struct D : C {}; +D d; + +// CHECK-DAG: @"\01??_8D@Test29@@7BB@1@@" = linkonce_odr unnamed_addr constant [2 x i32] zeroinitializer +} |