diff options
author | Nico Weber <nicolasweber@gmx.de> | 2012-01-23 05:50:57 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2012-01-23 05:50:57 +0000 |
commit | 5882927d7a1f05ea3a190a9929c34d4ca2a5f34a (patch) | |
tree | b03c5136ffa3686a5b321d42200e7891fcbb3645 /clang/lib/Sema/SemaExprCXX.cpp | |
parent | 624e30894afbfa5d3370804bc0678a3c20d85502 (diff) | |
download | bcm5719-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.cpp | 7 |
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(); } |