https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/159280
Instead of having `State::getLangOpts()`, which does a virtual call to `getASTContext()` to call `getLangOpts() on that, just move `getLangOpts()` to the subclasses so we can do that without the virtual call. We never call `getLangOpts()` in `State.cpp`, so it's not needed in the base class. >From c8ddcaa77a0a40d66b7eb6de82f9ae0ea05a06eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbae...@redhat.com> Date: Wed, 17 Sep 2025 09:31:41 +0200 Subject: [PATCH] [clang][ExprConst] Move getLangOpts() to interp::State subclasses --- clang/lib/AST/ByteCode/InterpState.h | 3 +++ clang/lib/AST/ByteCode/State.cpp | 4 ---- clang/lib/AST/ByteCode/State.h | 2 -- clang/lib/AST/ExprConstant.cpp | 1 + 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/clang/lib/AST/ByteCode/InterpState.h b/clang/lib/AST/ByteCode/InterpState.h index 1814d273ec1c6..a13244bf383ae 100644 --- a/clang/lib/AST/ByteCode/InterpState.h +++ b/clang/lib/AST/ByteCode/InterpState.h @@ -68,6 +68,9 @@ class InterpState final : public State, public SourceMapper { return Parent.getEvalStatus(); } ASTContext &getASTContext() const override { return Ctx.getASTContext(); } + const LangOptions &getLangOpts() const { + return Ctx.getASTContext().getLangOpts(); + } // Forward status checks and updates to the walker. bool keepEvaluatingAfterFailure() const override { diff --git a/clang/lib/AST/ByteCode/State.cpp b/clang/lib/AST/ByteCode/State.cpp index dc3d0da7a4a46..323231fbf8236 100644 --- a/clang/lib/AST/ByteCode/State.cpp +++ b/clang/lib/AST/ByteCode/State.cpp @@ -112,10 +112,6 @@ OptionalDiagnostic State::diag(SourceLocation Loc, diag::kind DiagId, return OptionalDiagnostic(); } -const LangOptions &State::getLangOpts() const { - return getASTContext().getLangOpts(); -} - void State::addCallStack(unsigned Limit) { // Determine which calls to skip, if any. unsigned ActiveCalls = getCallStackDepth() - 1; diff --git a/clang/lib/AST/ByteCode/State.h b/clang/lib/AST/ByteCode/State.h index a834eed142de0..0695c61c07a05 100644 --- a/clang/lib/AST/ByteCode/State.h +++ b/clang/lib/AST/ByteCode/State.h @@ -151,8 +151,6 @@ class State { /// Directly reports a diagnostic message. DiagnosticBuilder report(SourceLocation Loc, diag::kind DiagId); - const LangOptions &getLangOpts() const; - /// Whether or not we're in a context where the front end requires a /// constant value. bool InConstantContext = false; diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp index 12e4e25bd29c4..81748c42c319b 100644 --- a/clang/lib/AST/ExprConstant.cpp +++ b/clang/lib/AST/ExprConstant.cpp @@ -945,6 +945,7 @@ namespace { } ASTContext &getASTContext() const override { return Ctx; } + const LangOptions &getLangOpts() const { return Ctx.getLangOpts(); } void setEvaluatingDecl(APValue::LValueBase Base, APValue &Value, EvaluatingDeclKind EDK = EvaluatingDeclKind::Ctor) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits