mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 12:06:38 +00:00
[clang][NFC] Clean up Expr::EvaluateAsConstantExpr (#130498)
The Info.EnableNewConstInterp case is already handled above.
This commit is contained in:
parent
6e8d7e2e7f
commit
35f273ab07
@ -16903,24 +16903,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))
|
||||
|
Loading…
x
Reference in New Issue
Block a user