[clang] [clang][NFC] Clean up Expr::EvaluateAsConstantExpr (PR #130498)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 9 10:07:29 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Timm Baeder (tbaederr)
<details>
<summary>Changes</summary>
The Info.EnableNewConstInterp case is already handled above.
---
Full diff: https://github.com/llvm/llvm-project/pull/130498.diff
1 Files Affected:
- (modified) clang/lib/AST/ExprConstant.cpp (+12-17)
``````````diff
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index d9a1e5bb42343..759df64da6215 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -16892,24 +16892,19 @@ bool Expr::EvaluateAsConstantExpr(EvalResult &Result, const ASTContext &Ctx,
APValue::LValueBase Base(&BaseMTE);
Info.setEvaluatingDecl(Base, Result.Val);
- if (Info.EnableNewConstInterp) {
- if (!Info.Ctx.getInterpContext().evaluateAsRValue(Info, this, Result.Val))
- return false;
- } else {
- LValue LVal;
- LVal.set(Base);
- // C++23 [intro.execution]/p5
- // A full-expression is [...] a constant-expression
- // So we need to make sure temporary objects are destroyed after having
- // evaluating the expression (per C++23 [class.temporary]/p4).
- FullExpressionRAII Scope(Info);
- if (!::EvaluateInPlace(Result.Val, Info, LVal, this) ||
- Result.HasSideEffects || !Scope.destroy())
- return false;
+ LValue LVal;
+ LVal.set(Base);
+ // C++23 [intro.execution]/p5
+ // A full-expression is [...] a constant-expression
+ // So we need to make sure temporary objects are destroyed after having
+ // evaluating the expression (per C++23 [class.temporary]/p4).
+ FullExpressionRAII Scope(Info);
+ if (!::EvaluateInPlace(Result.Val, Info, LVal, this) ||
+ Result.HasSideEffects || !Scope.destroy())
+ return false;
- if (!Info.discardCleanups())
- llvm_unreachable("Unhandled cleanup; missing full expression marker?");
- }
+ if (!Info.discardCleanups())
+ llvm_unreachable("Unhandled cleanup; missing full expression marker?");
if (!CheckConstantExpression(Info, getExprLoc(), getStorageType(Ctx, this),
Result.Val, Kind))
``````````
</details>
https://github.com/llvm/llvm-project/pull/130498
More information about the cfe-commits
mailing list