diff options
| author | Hans Wennborg <hans@hanshq.net> | 2014-02-24 15:58:24 +0000 |
|---|---|---|
| committer | Hans Wennborg <hans@hanshq.net> | 2014-02-24 15:58:24 +0000 |
| commit | 3d79154aecd98a5ff59e11bd30e94c8d2206393e (patch) | |
| tree | 47d4cbdd00fd7065ca7b56b3bc9cd37fe47b7174 /clang/test/SemaCXX | |
| parent | dc59a36caa73a7de021423ff9769525ce9cdb969 (diff) | |
| download | bcm5719-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')
| -rw-r--r-- | clang/test/SemaCXX/microsoft-dtor-lookup.cpp | 9 |
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 { |

