Home | History | Annotate | Download | only in MC
      1 //===-- lib/MC/MCFunction.cpp -----------------------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #include "llvm/MC/MCFunction.h"
     11 #include "llvm/MC/MCAtom.h"
     12 #include "llvm/Support/raw_ostream.h"
     13 #include <algorithm>
     14 
     15 using namespace llvm;
     16 
     17 // MCFunction
     18 
     19 MCFunction::MCFunction(StringRef Name)
     20   : Name(Name)
     21 {}
     22 
     23 MCFunction::~MCFunction() {
     24   for (iterator I = begin(), E = end(); I != E; ++I)
     25     delete *I;
     26 }
     27 
     28 MCBasicBlock &MCFunction::createBlock(const MCTextAtom &TA) {
     29   Blocks.push_back(new MCBasicBlock(TA, this));
     30   return *Blocks.back();
     31 }
     32 
     33 // MCBasicBlock
     34 
     35 MCBasicBlock::MCBasicBlock(const MCTextAtom &Insts, MCFunction *Parent)
     36   : Insts(&Insts), Parent(Parent)
     37 {}
     38 
     39 void MCBasicBlock::addSuccessor(const MCBasicBlock *MCBB) {
     40   Successors.push_back(MCBB);
     41 }
     42 
     43 bool MCBasicBlock::isSuccessor(const MCBasicBlock *MCBB) const {
     44   return std::find(Successors.begin(), Successors.end(),
     45                    MCBB) != Successors.end();
     46 }
     47 
     48 void MCBasicBlock::addPredecessor(const MCBasicBlock *MCBB) {
     49   Predecessors.push_back(MCBB);
     50 }
     51 
     52 bool MCBasicBlock::isPredecessor(const MCBasicBlock *MCBB) const {
     53   return std::find(Predecessors.begin(), Predecessors.end(),
     54                    MCBB) != Predecessors.end();
     55 }
     56