Interval.cpp revision 36b56886974eae4f9c5ebc96befd3e7bfe5de338
1//===- Interval.cpp - Interval class code ---------------------------------===// 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// This file contains the definition of the Interval class, which represents a 11// partition of a control flow graph of some kind. 12// 13//===----------------------------------------------------------------------===// 14 15#include "llvm/Analysis/Interval.h" 16#include "llvm/IR/BasicBlock.h" 17#include "llvm/IR/CFG.h" 18#include "llvm/Support/raw_ostream.h" 19#include <algorithm> 20 21using namespace llvm; 22 23//===----------------------------------------------------------------------===// 24// Interval Implementation 25//===----------------------------------------------------------------------===// 26 27// isLoop - Find out if there is a back edge in this interval... 28// 29bool Interval::isLoop() const { 30 // There is a loop in this interval iff one of the predecessors of the header 31 // node lives in the interval. 32 for (::pred_iterator I = ::pred_begin(HeaderNode), E = ::pred_end(HeaderNode); 33 I != E; ++I) 34 if (contains(*I)) 35 return true; 36 return false; 37} 38 39 40void Interval::print(raw_ostream &OS) const { 41 OS << "-------------------------------------------------------------\n" 42 << "Interval Contents:\n"; 43 44 // Print out all of the basic blocks in the interval... 45 for (std::vector<BasicBlock*>::const_iterator I = Nodes.begin(), 46 E = Nodes.end(); I != E; ++I) 47 OS << **I << "\n"; 48 49 OS << "Interval Predecessors:\n"; 50 for (std::vector<BasicBlock*>::const_iterator I = Predecessors.begin(), 51 E = Predecessors.end(); I != E; ++I) 52 OS << **I << "\n"; 53 54 OS << "Interval Successors:\n"; 55 for (std::vector<BasicBlock*>::const_iterator I = Successors.begin(), 56 E = Successors.end(); I != E; ++I) 57 OS << **I << "\n"; 58} 59