From: Eli Friedman Date: Fri, 17 Jun 2011 20:52:22 +0000 (+0000) Subject: Add a minor hack to avoid using isNullPointerConstant on a hot path. Fixes -O0 compi... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ed3b2565696098af2b05b37ad3a747a1078b9df4;p=clang Add a minor hack to avoid using isNullPointerConstant on a hot path. Fixes -O0 compile-time regressions from r133196. rdar://9629775 . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133290 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 98bfe87aab..d3b7b10145 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -8935,12 +8935,11 @@ ExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, rhs = move(resolvedRHS); } - bool LeftNull = Expr::NPCK_GNUNull == - lhs.get()->isNullPointerConstant(Context, - Expr::NPC_ValueDependentIsNotNull); - bool RightNull = Expr::NPCK_GNUNull == - rhs.get()->isNullPointerConstant(Context, - Expr::NPC_ValueDependentIsNotNull); + // The canonical way to check for a GNU null is with isNullPointerConstant, + // but we use a bit of a hack here for speed; this is a relatively + // hot path, and isNullPointerConstant is slow. + bool LeftNull = isa(lhs.get()->IgnoreParenImpCasts()); + bool RightNull = isa(rhs.get()->IgnoreParenImpCasts()); // Detect when a NULL constant is used improperly in an expression. These // are mainly cases where the null pointer is used as an integer instead