diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp | 6 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp | 43 |
2 files changed, 29 insertions, 20 deletions
diff --git a/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp b/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp index 088ed17ee68..ff99f0b0728 100644 --- a/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp +++ b/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp @@ -257,12 +257,12 @@ N n; struct O { virtual A *f(); }; struct P : O { virtual B *f(); }; P p; -// CHECK-O: VFTable for 'O' in 'P' (1 entries) -// CHECK-O-NEXT: 0 | B *P::f() - // CHECK-O: VFTable for 'O' (1 entries) // CHECK-O-NEXT: 0 | A *O::f() +// CHECK-O: VFTable for 'O' in 'P' (1 entries) +// CHECK-O-NEXT: 0 | B *P::f() + struct Q { // CHECK-Q: VFTable for 'Q' (2 entries) // CHECK-Q-NEXT: 0 | void Q::foo(int) diff --git a/clang/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp b/clang/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp index 333d30e3967..e40606f98b1 100644 --- a/clang/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp +++ b/clang/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp @@ -312,9 +312,7 @@ struct Z : Y, virtual B { // MANGLING-DAG: @"\01??_7Z@Test9@@6BX@1@@" // MANGLING-DAG: @"\01??_7Z@Test9@@6BY@1@@" - // FIXME this one is wrong: - // INCORRECT MANGLING-DAG: @"\01??_7Z@Test9@@6BB@@@" - // MANGLING-DAG-SHOULD-BE: @"\01??_7Z@Test9@@6B@" + // MANGLING-DAG: @"\01??_7Z@Test9@@6B@" }; Z z; @@ -347,11 +345,8 @@ struct W : Z, D, virtual A, virtual B { // MANGLING-DAG: @"\01??_7W@Test9@@6BD@@@" // MANGLING-DAG: @"\01??_7W@Test9@@6BX@1@@" - // FIXME: these two are wrong: - // INCORRECT MANGLING-DAG: @"\01??_7W@Test9@@6BB@@@" - // MANGLING-DAG-SHOULD-BE: @"\01??_7W@Test9@@6B@" - // INCORRECT MANGLING-DAG: @"\01??_7W@Test9@@6BY@1@Z@1@@" - // MANGLING-DAG-SHOULD-BE: @"\01??_7W@Test9@@6BY@1@@" + // MANGLING-DAG: @"\01??_7W@Test9@@6B@" + // MANGLING-DAG: @"\01??_7W@Test9@@6BY@1@@" }; W w; @@ -399,11 +394,8 @@ struct T : Z, D, virtual A, virtual B { // MANGLING-DAG: @"\01??_7T@Test9@@6BD@@@" // MANGLING-DAG: @"\01??_7T@Test9@@6BX@1@@" - // FIXME: these two are wrong: - // INCORRECT MANGLING-DAG: @"\01??_7T@Test9@@6BB@@@" - // MANGLING-DAG-SHOULD-BE: @"\01??_7T@Test9@@6B@" - // INCORRECT MANGLING-DAG: @"\01??_7T@Test9@@6BY@1@Z@1@@" - // MANGLING-DAG-SHOULD-BE: @"\01??_7T@Test9@@6BY@1@@" + // MANGLING-DAG: @"\01??_7T@Test9@@6B@" + // MANGLING-DAG: @"\01??_7T@Test9@@6BY@1@@" virtual void f(); virtual void g(); @@ -436,10 +428,7 @@ struct Y { virtual void g(); }; struct Z : virtual X, Y { // MANGLING-DAG: @"\01??_7Z@Test11@@6BY@1@@" - - // FIXME this one is wrong: - // MANGLING-DAG-SHOULD-BE: @"\01??_7Z@Test11@@6BX@1@@" - // INCORRECT MANGLING-DAG: @"\01??_7Z@Test11@@6BA@@@" + // MANGLING-DAG: @"\01??_7Z@Test11@@6BX@1@@" }; Z z; @@ -593,3 +582,23 @@ struct V : Z { V v; } + +namespace pr17748 { +struct A { + virtual void f() {} +}; + +struct B : virtual A { + B() {} +}; + +struct C : virtual B, A { + C() {} +}; +C c; + +// MANGLING-DAG: @"\01??_7A@pr17748@@6B@" +// MANGLING-DAG: @"\01??_7B@pr17748@@6B@" +// MANGLING-DAG: @"\01??_7C@pr17748@@6BA@1@@" +// MANGLING-DAG: @"\01??_7C@pr17748@@6BB@1@@" +} |