X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAnalysis%2FInterval.h;h=01eba3f16c014f13e51335cfcfb2c262bfbb9bfe;hb=ae65a7a88e8cf63c9ad01e1483181cb7e7bf6f55;hp=91e1da6a016291ce3714c820eb7f8531ff0c4816;hpb=0f67dd6237eb7227aa58e9b77cd95f354989b891;p=oota-llvm.git diff --git a/include/llvm/Analysis/Interval.h b/include/llvm/Analysis/Interval.h index 91e1da6a016..01eba3f16c0 100644 --- a/include/llvm/Analysis/Interval.h +++ b/include/llvm/Analysis/Interval.h @@ -1,15 +1,15 @@ //===- llvm/Analysis/Interval.h - Interval Class Declaration ----*- C++ -*-===// -// +// // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// //===----------------------------------------------------------------------===// // // This file contains the declaration of the Interval class, which // represents a set of CFG nodes and is a portion of an interval partition. -// +// // Intervals have some interesting and useful properties, including the // following: // 1. The header node of an interval dominates all of the elements of the @@ -17,16 +17,16 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_INTERVAL_H -#define LLVM_INTERVAL_H +#ifndef LLVM_ANALYSIS_INTERVAL_H +#define LLVM_ANALYSIS_INTERVAL_H #include "llvm/ADT/GraphTraits.h" #include -#include namespace llvm { class BasicBlock; +class raw_ostream; //===----------------------------------------------------------------------===// // @@ -48,9 +48,6 @@ public: Nodes.push_back(Header); } - inline Interval(const Interval &I) // copy ctor - : HeaderNode(I.HeaderNode), Nodes(I.Nodes), Successors(I.Successors) {} - inline BasicBlock *getHeaderNode() const { return HeaderNode; } /// Nodes - The basic blocks in this interval. @@ -86,9 +83,9 @@ public: //return find(Successors.begin(), Successors.end(), BB) != Successors.end(); } - /// Equality operator. It is only valid to compare two intervals from the same - /// partition, because of this, all we have to check is the header node for - /// equality. + /// Equality operator. It is only valid to compare two intervals from the + /// same partition, because of this, all we have to check is the header node + /// for equality. /// inline bool operator==(const Interval &I) const { return HeaderNode == I.HeaderNode; @@ -98,7 +95,7 @@ public: bool isLoop() const; /// print - Show contents in human readable format... - void print(std::ostream &O) const; + void print(raw_ostream &O) const; }; /// succ_begin/succ_end - define methods so that Intervals may be used @@ -110,7 +107,7 @@ inline Interval::succ_iterator succ_begin(Interval *I) { inline Interval::succ_iterator succ_end(Interval *I) { return I->Successors.end(); } - + /// pred_begin/pred_end - define methods so that Intervals may be used /// just like BasicBlocks can with the pred_* functions, and *::pred_iterator. /// @@ -128,10 +125,10 @@ template <> struct GraphTraits { static NodeType *getEntryNode(Interval *I) { return I; } /// nodes_iterator/begin/end - Allow iteration over all nodes in the graph - static inline ChildIteratorType child_begin(NodeType *N) { + static inline ChildIteratorType child_begin(NodeType *N) { return succ_begin(N); } - static inline ChildIteratorType child_end(NodeType *N) { + static inline ChildIteratorType child_end(NodeType *N) { return succ_end(N); } }; @@ -140,10 +137,10 @@ template <> struct GraphTraits > { typedef Interval NodeType; typedef Interval::pred_iterator ChildIteratorType; static NodeType *getEntryNode(Inverse G) { return G.Graph; } - static inline ChildIteratorType child_begin(NodeType *N) { + static inline ChildIteratorType child_begin(NodeType *N) { return pred_begin(N); } - static inline ChildIteratorType child_end(NodeType *N) { + static inline ChildIteratorType child_end(NodeType *N) { return pred_end(N); } };