diff options
Diffstat (limited to 'test/CodeGenCXX/vtable-available-externally.cpp')
-rw-r--r-- | test/CodeGenCXX/vtable-available-externally.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/CodeGenCXX/vtable-available-externally.cpp b/test/CodeGenCXX/vtable-available-externally.cpp index b6e48c8f8c..11c1abda4b 100644 --- a/test/CodeGenCXX/vtable-available-externally.cpp +++ b/test/CodeGenCXX/vtable-available-externally.cpp @@ -53,3 +53,51 @@ namespace Test2 { void A::f() { } } + +// Test that we don't assert on this test. +namespace Test3 { + +struct A { + virtual void f(); + virtual ~A() { } +}; + +struct B : A { + B(); + virtual void f(); +}; + +B::B() { } + +void g(A* a) { + a->f(); +}; + +} + +// PR9114, test that we don't try to emit a definition of +namespace Test4 { + +template <class T> struct RefPtr { + T* p; + ~RefPtr() { + p->deref(); + } +}; + +struct A { + virtual ~A(); +}; + +struct Node; + +struct B : A { + virtual void deref(); + RefPtr<Node> m; +}; + +void f() { + RefPtr<B> b; +} + +} |