summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Interp/InterpState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/Interp/InterpState.cpp')
-rw-r--r--clang/lib/AST/Interp/InterpState.cpp74
1 files changed, 0 insertions, 74 deletions
diff --git a/clang/lib/AST/Interp/InterpState.cpp b/clang/lib/AST/Interp/InterpState.cpp
deleted file mode 100644
index 45476a05e2e..00000000000
--- a/clang/lib/AST/Interp/InterpState.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-//===--- InterpState.cpp - Interpreter 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
-//
-//===----------------------------------------------------------------------===//
-
-#include "InterpState.h"
-#include "Function.h"
-#include "InterpFrame.h"
-#include "InterpStack.h"
-#include "Opcode.h"
-#include "Program.h"
-#include "State.h"
-#include "Type.h"
-#include <limits>
-
-using namespace clang;
-using namespace clang::interp;
-
-using APSInt = llvm::APSInt;
-
-InterpState::InterpState(State &Parent, Program &P, InterpStack &Stk,
- Context &Ctx, SourceMapper *M)
- : Parent(Parent), M(M), P(P), Stk(Stk), Ctx(Ctx), Current(nullptr),
- CallStackDepth(Parent.getCallStackDepth() + 1) {}
-
-InterpState::~InterpState() {
- while (Current) {
- InterpFrame *Next = Current->Caller;
- delete Current;
- Current = Next;
- }
-
- while (DeadBlocks) {
- DeadBlock *Next = DeadBlocks->Next;
- free(DeadBlocks);
- DeadBlocks = Next;
- }
-}
-
-Frame *InterpState::getCurrentFrame() {
- if (Current && Current->Caller) {
- return Current;
- } else {
- return Parent.getCurrentFrame();
- }
-}
-
-bool InterpState::reportOverflow(const Expr *E, const llvm::APSInt &Value) {
- QualType Type = E->getType();
- CCEDiag(E, diag::note_constexpr_overflow) << Value << Type;
- return noteUndefinedBehavior();
-}
-
-void InterpState::deallocate(Block *B) {
- Descriptor *Desc = B->getDescriptor();
- if (B->hasPointers()) {
- size_t Size = B->getSize();
-
- // Allocate a new block, transferring over pointers.
- char *Memory = reinterpret_cast<char *>(malloc(sizeof(DeadBlock) + Size));
- auto *D = new (Memory) DeadBlock(DeadBlocks, B);
-
- // Move data from one block to another.
- if (Desc->MoveFn)
- Desc->MoveFn(B, B->data(), D->data(), Desc);
- } else {
- // Free storage, if necessary.
- if (Desc->DtorFn)
- Desc->DtorFn(B, B->data(), Desc);
- }
-}
OpenPOWER on IntegriCloud