aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-06-17 20:52:22 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-06-17 20:52:22 +0000
commited3b2565696098af2b05b37ad3a747a1078b9df4 (patch)
tree9e9d87243edc12820fe7c3140172f4606851febf /lib/Sema/SemaExpr.cpp
parent4e938df04897ebc196d92b4f7f77b19f204e9d24 (diff)
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
Diffstat (limited to 'lib/Sema/SemaExpr.cpp')
-rw-r--r--lib/Sema/SemaExpr.cpp11
1 files changed, 5 insertions, 6 deletions
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<GNUNullExpr>(lhs.get()->IgnoreParenImpCasts());
+ bool RightNull = isa<GNUNullExpr>(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