diff options
-rw-r--r-- | lib/AST/ExprConstant.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp index 8386ce8f2d..6b3f4dcefa 100644 --- a/lib/AST/ExprConstant.cpp +++ b/lib/AST/ExprConstant.cpp @@ -8269,17 +8269,16 @@ bool IntExprEvaluator::VisitBuiltinCallExpr(const CallExpr *E, case Builtin::BI__builtin_constant_p: { const Expr *Arg = E->getArg(0); - if (EvaluateBuiltinConstantP(Info, Arg)) { + if (EvaluateBuiltinConstantP(Info, Arg)) return Success(true, E); - } else if (Info.InConstantContext || Arg->HasSideEffects(Info.Ctx)) { + if (Info.InConstantContext || Arg->HasSideEffects(Info.Ctx)) { // Outside a constant context, eagerly evaluate to false in the presence // of side-effects in order to avoid -Wunsequenced false-positives in // a branch on __builtin_constant_p(expr). return Success(false, E); - } else { - Info.FFDiag(E, diag::note_invalid_subexpr_in_const_expr); - return false; } + Info.FFDiag(E, diag::note_invalid_subexpr_in_const_expr); + return false; } case Builtin::BI__builtin_is_constant_evaluated: |