summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Expr.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-09-11 00:18:58 +0000
committerDouglas Gregor <dgregor@apple.com>2009-09-11 00:18:58 +0000
commit73341c4e63199356707c495456ce702ca6cd35f2 (patch)
tree7058207409e4c04b762c6a9bd42b9f31a925f61c /clang/lib/AST/Expr.cpp
parente0064d2e954aa351838f25b6508288f868f66ba7 (diff)
downloadbcm5719-llvm-73341c4e63199356707c495456ce702ca6cd35f2.tar.gz
bcm5719-llvm-73341c4e63199356707c495456ce702ca6cd35f2.zip
Diagnose VLAs as an error in C++.
Also, treat the GNU __null as an integral constant expression to match GCC's behavior. llvm-svn: 81490
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
-rw-r--r--clang/lib/AST/Expr.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 969098c2346..fb79f4d0f24 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -1331,7 +1331,6 @@ static ICEDiag CheckICE(const Expr* E, ASTContext &Ctx) {
case Expr::VAArgExprClass:
case Expr::AddrLabelExprClass:
case Expr::StmtExprClass:
- case Expr::GNUNullExprClass:
case Expr::CXXMemberCallExprClass:
case Expr::CXXDynamicCastExprClass:
case Expr::CXXTypeidExprClass:
@@ -1368,6 +1367,10 @@ static ICEDiag CheckICE(const Expr* E, ASTContext &Ctx) {
case Expr::ExprClass:
return ICEDiag(2, E->getLocStart());
+ case Expr::GNUNullExprClass:
+ // GCC considers the GNU __null value to be an integral constant expression.
+ return NoDiag();
+
case Expr::ParenExprClass:
return CheckICE(cast<ParenExpr>(E)->getSubExpr(), Ctx);
case Expr::IntegerLiteralClass:
OpenPOWER on IntegriCloud