diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-09-11 00:18:58 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-09-11 00:18:58 +0000 |
| commit | 73341c4e63199356707c495456ce702ca6cd35f2 (patch) | |
| tree | 7058207409e4c04b762c6a9bd42b9f31a925f61c /clang/lib/AST/Expr.cpp | |
| parent | e0064d2e954aa351838f25b6508288f868f66ba7 (diff) | |
| download | bcm5719-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.cpp | 5 |
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: |

