From 3be4b122d38ebe00bfa585b3f5c99d146398398f Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Sat, 29 Nov 2008 04:51:27 +0000 Subject: Implement the GNU __null extension llvm-svn: 60235 --- clang/lib/AST/Expr.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'clang/lib/AST/Expr.cpp') diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 7a8119c5e3d..3c021c262d6 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -1031,8 +1031,11 @@ bool Expr::isNullPointerConstant(ASTContext &Ctx) const { = dyn_cast(this)) { // See through default argument expressions return DefaultArg->getExpr()->isNullPointerConstant(Ctx); + } else if (isa(this)) { + // The GNU __null extension is always a null pointer constant. + return true; } - + // This expression must be an integer type. if (!getType()->isIntegerType()) return false; @@ -1383,6 +1386,10 @@ Stmt::child_iterator TypesCompatibleExpr::child_end() { Stmt::child_iterator ChooseExpr::child_begin() { return &SubExprs[0]; } Stmt::child_iterator ChooseExpr::child_end() { return &SubExprs[0]+END_EXPR; } +// GNUNullExpr +Stmt::child_iterator GNUNullExpr::child_begin() { return child_iterator(); } +Stmt::child_iterator GNUNullExpr::child_end() { return child_iterator(); } + // OverloadExpr Stmt::child_iterator OverloadExpr::child_begin() { return &SubExprs[0]; } Stmt::child_iterator OverloadExpr::child_end() { return &SubExprs[0]+NumExprs; } -- cgit v1.2.3