diff options
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Sema/SemaType.cpp | 2 |
6 files changed, 9 insertions, 8 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 715abb9c0a2..8cae0408f06 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -2994,7 +2994,7 @@ IntRange GetExprRange(ASTContext &C, Expr *E, unsigned MaxWidth) { // Try a full evaluation first. Expr::EvalResult result; - if (E->Evaluate(result, C)) + if (E->EvaluateAsRValue(result, C)) return GetValueRange(C, result.Val, E->getType(), MaxWidth); // I think we only want to look through implicit casts here; if the @@ -3405,7 +3405,7 @@ bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, Expr *OriginalInit = Init->IgnoreParenImpCasts(); Expr::EvalResult InitValue; - if (!OriginalInit->Evaluate(InitValue, S.Context) || + if (!OriginalInit->EvaluateAsRValue(InitValue, S.Context) || !InitValue.Val.isInt()) return false; @@ -3576,7 +3576,7 @@ void CheckImplicitConversion(Sema &S, Expr *E, QualType T, // Don't warn about float constants that are precisely // representable in the target type. Expr::EvalResult result; - if (E->Evaluate(result, S.Context)) { + if (E->EvaluateAsRValue(result, S.Context)) { // Value might be a float, a float vector, or a float complex. if (IsSameFloatAfterCast(result.Val, S.Context.getFloatTypeSemantics(QualType(TargetBT, 0)), diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index fb00c918ab5..6bd0d25f754 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3445,7 +3445,7 @@ static QualType TryToFixInvalidVariablyModifiedType(QualType T, Expr::EvalResult EvalResult; if (!VLATy->getSizeExpr() || - !VLATy->getSizeExpr()->Evaluate(EvalResult, Context) || + !VLATy->getSizeExpr()->EvaluateAsRValue(EvalResult, Context) || !EvalResult.Val.isInt()) return QualType(); diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 1e890eef1e3..21d0309377c 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -9121,7 +9121,7 @@ bool Sema::VerifyIntegerConstantExpression(const Expr *E, llvm::APSInt *Result){ Expr::EvalResult EvalResult; - if (!E->Evaluate(EvalResult, Context) || !EvalResult.Val.isInt() || + if (!E->EvaluateAsRValue(EvalResult, Context) || !EvalResult.Val.isInt() || EvalResult.HasSideEffects) { Diag(E->getExprLoc(), diag::err_expr_not_ice) << E->getSourceRange(); diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 77cfe6c2de5..a24e708b1e7 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -2526,7 +2526,7 @@ bool InitializationSequence::endsWithNarrowing(ASTContext &Ctx, Expr::EvalResult InitializerValue; // FIXME: Check whether Initializer is a constant expression according // to C++0x [expr.const], rather than just whether it can be folded. - if (Initializer->Evaluate(InitializerValue, Ctx) && + if (Initializer->EvaluateAsRValue(InitializerValue, Ctx) && !InitializerValue.HasSideEffects && InitializerValue.Val.isFloat()) { // Constant! (Except for FIXME above.) llvm::APFloat FloatVal = InitializerValue.Val.getFloat(); diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 6dcfbbab847..8c99e8a4de4 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -666,7 +666,8 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, bool ShouldCheckConstantCond = false; if (!HasDependentValue && !TheDefaultStmt) { Expr::EvalResult Result; - HasConstantCond = CondExprBeforePromotion->Evaluate(Result, Context); + HasConstantCond + = CondExprBeforePromotion->EvaluateAsRValue(Result, Context); if (HasConstantCond) { assert(Result.Val.isInt() && "switch condition evaluated to non-int"); ConstantCondValue = Result.Val.getInt(); diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 802b36db078..09d47e8e179 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -1180,7 +1180,7 @@ static bool isArraySizeVLA(Expr *ArraySize, llvm::APSInt &SizeVal, Sema &S) { // If we're in a GNU mode (like gnu99, but not c99) accept any evaluatable // value as an extension. Expr::EvalResult Result; - if (S.LangOpts.GNUMode && ArraySize->Evaluate(Result, S.Context)) { + if (S.LangOpts.GNUMode && ArraySize->EvaluateAsRValue(Result, S.Context)) { if (!Result.hasSideEffects() && Result.Val.isInt()) { SizeVal = Result.Val.getInt(); S.Diag(ArraySize->getLocStart(), diag::ext_vla_folded_to_constant); |