diff options
Diffstat (limited to 'clang/lib/AST/Interp/InterpState.h')
-rw-r--r-- | clang/lib/AST/Interp/InterpState.h | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/clang/lib/AST/Interp/InterpState.h b/clang/lib/AST/Interp/InterpState.h deleted file mode 100644 index fe4042ac207..00000000000 --- a/clang/lib/AST/Interp/InterpState.h +++ /dev/null @@ -1,112 +0,0 @@ -//===--- InterpState.h - Interpreter state for the constexpr VM -*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// Definition of the interpreter state and entry point. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CLANG_AST_INTERP_INTERPSTATE_H -#define LLVM_CLANG_AST_INTERP_INTERPSTATE_H - -#include "Context.h" -#include "Function.h" -#include "InterpStack.h" -#include "State.h" -#include "clang/AST/APValue.h" -#include "clang/AST/ASTDiagnostic.h" -#include "clang/AST/Expr.h" -#include "clang/Basic/OptionalDiagnostic.h" - -namespace clang { -namespace interp { -class Context; -class Function; -class InterpStack; -class InterpFrame; -class SourceMapper; - -/// Interpreter context. -class InterpState final : public State, public SourceMapper { -public: - InterpState(State &Parent, Program &P, InterpStack &Stk, Context &Ctx, - SourceMapper *M = nullptr); - - ~InterpState(); - - // Stack frame accessors. - Frame *getSplitFrame() { return Parent.getCurrentFrame(); } - Frame *getCurrentFrame() override; - unsigned getCallStackDepth() override { return CallStackDepth; } - const Frame *getBottomFrame() const override { - return Parent.getBottomFrame(); - } - - // Acces objects from the walker context. - Expr::EvalStatus &getEvalStatus() const override { - return Parent.getEvalStatus(); - } - ASTContext &getCtx() const override { return Parent.getCtx(); } - - // Forward status checks and updates to the walker. - bool checkingForOverflow() const override { - return Parent.checkingForOverflow(); - } - bool keepEvaluatingAfterFailure() const override { - return Parent.keepEvaluatingAfterFailure(); - } - bool checkingPotentialConstantExpression() const override { - return Parent.checkingPotentialConstantExpression(); - } - bool noteUndefinedBehavior() override { - return Parent.noteUndefinedBehavior(); - } - bool hasActiveDiagnostic() override { return Parent.hasActiveDiagnostic(); } - void setActiveDiagnostic(bool Flag) override { - Parent.setActiveDiagnostic(Flag); - } - void setFoldFailureDiagnostic(bool Flag) override { - Parent.setFoldFailureDiagnostic(Flag); - } - bool hasPriorDiagnostic() override { return Parent.hasPriorDiagnostic(); } - - /// Reports overflow and return true if evaluation should continue. - bool reportOverflow(const Expr *E, const llvm::APSInt &Value); - - /// Deallocates a pointer. - void deallocate(Block *B); - - /// Delegates source mapping to the mapper. - SourceInfo getSource(Function *F, CodePtr PC) const override { - return M ? M->getSource(F, PC) : F->getSource(PC); - } - -private: - /// AST Walker state. - State &Parent; - /// Dead block chain. - DeadBlock *DeadBlocks = nullptr; - /// Reference to the offset-source mapping. - SourceMapper *M; - -public: - /// Reference to the module containing all bytecode. - Program &P; - /// Temporary stack. - InterpStack &Stk; - /// Interpreter Context. - Context &Ctx; - /// The current frame. - InterpFrame *Current = nullptr; - /// Call stack depth. - unsigned CallStackDepth; -}; - -} // namespace interp -} // namespace clang - -#endif |