summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-10-08 22:45:29 +0000
committerReid Kleckner <reid@kleckner.net>2013-10-08 22:45:29 +0000
commitbe7a446637613f17ec94d34c18847d563064a539 (patch)
tree4bbb296eafc9ffea49825b6818f1cf03119039a8 /clang/lib/Sema/SemaDecl.cpp
parent0a903478c642c19b416aacdbef3e2e1859b11c18 (diff)
downloadbcm5719-llvm-be7a446637613f17ec94d34c18847d563064a539.tar.gz
bcm5719-llvm-be7a446637613f17ec94d34c18847d563064a539.zip
-Wmicrosoft: Don't warn on non-inline pure virtual method definitions
MSVC and clang with -fms-extensions allow pure virtual methods to be defined inline after the "= 0" tokens. Clang warns on these because it is not standard, but incorrectly warns on out-of-line definitions, which are standard. With this change, clang will only warn on inline definitions of pure virtual methods. Fixes some self-host warnings on out-of-line definitions of pure virtual destructors. llvm-svn: 192244
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index ba1822cfc43..52297d7f6ff 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -9633,7 +9633,7 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body,
// MSVC permits the use of pure specifier (=0) on function definition,
// defined at class scope, warn about this non standard construct.
- if (getLangOpts().MicrosoftExt && FD->isPure())
+ if (getLangOpts().MicrosoftExt && FD->isPure() && FD->isCanonicalDecl())
Diag(FD->getLocation(), diag::warn_pure_function_definition);
if (!FD->isInvalidDecl()) {
OpenPOWER on IntegriCloud