X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAnalysis%2FIntervalPartition.h;h=bce84be2f4fd2cd391ea904f655f76cb6bb57240;hb=b09c146b116359616f6cbd4c8b3328607e00ff42;hp=197c469db984885ae1d135d1d01a4cd5af1da6bc;hpb=89f2aa5fd8125b67e4759a9342002c7f99a64751;p=oota-llvm.git diff --git a/include/llvm/Analysis/IntervalPartition.h b/include/llvm/Analysis/IntervalPartition.h index 197c469db98..bce84be2f4f 100644 --- a/include/llvm/Analysis/IntervalPartition.h +++ b/include/llvm/Analysis/IntervalPartition.h @@ -1,4 +1,11 @@ -//===- IntervalPartition.h - Interval partition Calculation ------*- C++ -*--=// +//===- IntervalPartition.h - Interval partition Calculation -----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This file contains the declaration of the IntervalPartition class, which // calculates and represents the interval partition of a function, or a @@ -18,13 +25,16 @@ #include "llvm/Analysis/Interval.h" #include "llvm/Pass.h" +#include + +namespace llvm { //===----------------------------------------------------------------------===// // // IntervalPartition - This class builds and holds an "interval partition" for // a function. This partition divides the control flow graph into a set of -// maximal intervals, as defined with the properties above. Intuitively, a -// BasicBlock is a (possibly nonexistent) loop with a "tail" of non looping +// maximal intervals, as defined with the properties above. Intuitively, an +// interval is a (possibly nonexistent) loop with a "tail" of non looping // nodes following it. // class IntervalPartition : public FunctionPass { @@ -36,9 +46,11 @@ class IntervalPartition : public FunctionPass { std::vector Intervals; public: - static AnalysisID ID; // We are an analysis, we must have an ID + static char ID; // Pass identification, replacement for typeid - IntervalPartition() : RootInterval(0) {} + IntervalPartition() : FunctionPass(ID), RootInterval(0) { + initializeIntervalPartitionPass(*PassRegistry::getPassRegistry()); + } // run - Calculate the interval partition for this function virtual bool runOnFunction(Function &F); @@ -49,11 +61,8 @@ public: // IntervalPartition(IntervalPartition &I, bool); - // Destructor - Free memory - ~IntervalPartition() { destroy(); } - // print - Show contents in human readable format... - virtual void print(std::ostream &O) const; + virtual void print(raw_ostream &O, const Module* = 0) const; // getRootInterval() - Return the root interval that contains the starting // block of the function. @@ -79,10 +88,10 @@ public: // Interface to Intervals vector... const std::vector &getIntervals() const { return Intervals; } -private: - // destroy - Reset state back to before function was analyzed - void destroy(); + // releaseMemory - Reset state back to before function was analyzed + void releaseMemory(); +private: // addIntervalToPartition - Add an interval to the internal list of intervals, // and then add mappings from all of the basic blocks in the interval to the // interval itself (in the IntervalMap). @@ -91,10 +100,12 @@ private: // updatePredecessors - Interval generation only sets the successor fields of // the interval data structures. After interval generation is complete, - // run through all of the intervals and propogate successor info as + // run through all of the intervals and propagate successor info as // predecessor info. // void updatePredecessors(Interval *Int); }; +} // End llvm namespace + #endif