summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2012-01-23 05:50:57 +0000
committerNico Weber <nicolasweber@gmx.de>2012-01-23 05:50:57 +0000
commit5882927d7a1f05ea3a190a9929c34d4ca2a5f34a (patch)
treeb03c5136ffa3686a5b321d42200e7891fcbb3645 /clang/lib/Sema/SemaExprCXX.cpp
parent624e30894afbfa5d3370804bc0678a3c20d85502 (diff)
downloadbcm5719-llvm-5882927d7a1f05ea3a190a9929c34d4ca2a5f34a.tar.gz
bcm5719-llvm-5882927d7a1f05ea3a190a9929c34d4ca2a5f34a.zip
In microsoft mode, downgrade pseudo-destructors on void from error to warning.
This matches cl.exe's behavior and fixes PR11791. llvm-svn: 148682
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index edc5b089006..d3bbc14728c 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -4380,8 +4380,11 @@ ExprResult Sema::BuildPseudoDestructorExpr(Expr *Base,
return ExprError();
if (!ObjectType->isDependentType() && !ObjectType->isScalarType()) {
- Diag(OpLoc, diag::err_pseudo_dtor_base_not_scalar)
- << ObjectType << Base->getSourceRange();
+ if (getLangOptions().MicrosoftMode && ObjectType->isVoidType())
+ Diag(OpLoc, diag::ext_pseudo_dtor_on_void);
+ else
+ Diag(OpLoc, diag::err_pseudo_dtor_base_not_scalar)
+ << ObjectType << Base->getSourceRange();
return ExprError();
}
OpenPOWER on IntegriCloud