summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/microsoft-dtor-lookup.cpp
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2014-02-24 15:58:24 +0000
committerHans Wennborg <hans@hanshq.net>2014-02-24 15:58:24 +0000
commit3d79154aecd98a5ff59e11bd30e94c8d2206393e (patch)
tree47d4cbdd00fd7065ca7b56b3bc9cd37fe47b7174 /clang/test/SemaCXX/microsoft-dtor-lookup.cpp
parentdc59a36caa73a7de021423ff9769525ce9cdb969 (diff)
downloadbcm5719-llvm-3d79154aecd98a5ff59e11bd30e94c8d2206393e.tar.gz
bcm5719-llvm-3d79154aecd98a5ff59e11bd30e94c8d2206393e.zip
[Win32 ABI] Defer operator delete checks until vtable is marked used
We were previously checking at every destructor declaration, but that was a bit excessive. Since the deleting destructor is emitted with the vtable, do the check when the vtable is marked used. Differential Revision: http://llvm-reviews.chandlerc.com/D2851 llvm-svn: 202046
Diffstat (limited to 'clang/test/SemaCXX/microsoft-dtor-lookup.cpp')
-rw-r--r--clang/test/SemaCXX/microsoft-dtor-lookup.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/test/SemaCXX/microsoft-dtor-lookup.cpp b/clang/test/SemaCXX/microsoft-dtor-lookup.cpp
index a9f6f652312..51129aee5d1 100644
--- a/clang/test/SemaCXX/microsoft-dtor-lookup.cpp
+++ b/clang/test/SemaCXX/microsoft-dtor-lookup.cpp
@@ -1,12 +1,11 @@
// RUN: %clang_cc1 -triple %itanium_abi_triple -fsyntax-only %s
-// RUN: %clang_cc1 -triple %ms_abi_triple -verify -DMSVC_ABI %s
+// RUN: %clang_cc1 -triple %ms_abi_triple -verify %s
namespace Test1 {
// Should be accepted under the Itanium ABI (first RUN line) but rejected
// under the Microsoft ABI (second RUN line), as Microsoft ABI requires
-// operator delete() lookups to be done at all virtual destructor declaration
-// points.
+// operator delete() lookups to be done when vtables are marked used.
struct A {
void operator delete(void *); // expected-note {{member found by ambiguous name lookup}}
@@ -24,6 +23,10 @@ struct VC : A, B {
virtual ~VC(); // expected-error {{member 'operator delete' found in multiple base classes of different types}}
};
+void f(VC vc) {
+ // This marks VC's vtable used.
+}
+
}
namespace Test2 {
OpenPOWER on IntegriCloud