aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGenCXX/virtual-destructor-calls.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2012-08-15 20:02:54 +0000
committerDimitry Andric <dim@FreeBSD.org>2012-08-15 20:02:54 +0000
commit56d91b49b13fe55c918afbda19f6165b5fbff87a (patch)
tree9abb1a658a297776086f4e0dfa6ca533de02104e /test/CodeGenCXX/virtual-destructor-calls.cpp
parent41e20f564abdb05101d6b2b29c59459a966c22cc (diff)
Notes
Diffstat (limited to 'test/CodeGenCXX/virtual-destructor-calls.cpp')
-rw-r--r--test/CodeGenCXX/virtual-destructor-calls.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/CodeGenCXX/virtual-destructor-calls.cpp b/test/CodeGenCXX/virtual-destructor-calls.cpp
index 1cc8bcc7753e..7ef50b23fa7c 100644
--- a/test/CodeGenCXX/virtual-destructor-calls.cpp
+++ b/test/CodeGenCXX/virtual-destructor-calls.cpp
@@ -46,3 +46,14 @@ C::~C() { }
// CHECK: call void @_ZdlPv
// Base dtor: just an alias to B's base dtor.
+
+namespace PR12798 {
+ // A qualified call to a base class destructor should not undergo virtual
+ // dispatch. Template instantiation used to lose the qualifier.
+ struct A { virtual ~A(); };
+ template<typename T> void f(T *p) { p->A::~A(); }
+
+ // CHECK: define {{.*}} @_ZN7PR127981fINS_1AEEEvPT_(
+ // CHECK: call void @_ZN7PR127981AD1Ev(
+ template void f(A*);
+}