brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 250cfdf Raw
34 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/DWARFCFIChecker/DWARFCFIFunctionFrameAnalyzer.h"10 11using namespace llvm;12 13CFIFunctionFrameAnalyzer::~CFIFunctionFrameAnalyzer() {14  assert(UIAs.empty() &&15         "all frames should be closed before the analysis finishes");16}17 18void CFIFunctionFrameAnalyzer::startFunctionFrame(19    bool IsEH, ArrayRef<MCCFIInstruction> Prologue) {20  UIAs.emplace_back(&getContext(), MCII, IsEH, Prologue);21}22 23void CFIFunctionFrameAnalyzer::emitInstructionAndDirectives(24    const MCInst &Inst, ArrayRef<MCCFIInstruction> Directives) {25  assert(!UIAs.empty() && "if the instruction is in a frame, there should be "26                          "a analysis instantiated for it");27  UIAs.back().update(Inst, Directives);28}29 30void CFIFunctionFrameAnalyzer::finishFunctionFrame() {31  assert(!UIAs.empty() && "there should be an analysis for each frame");32  UIAs.pop_back();33}34