X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FSupport%2FCFG.h;h=b0b857bf028004aa3418ff903bd1221be8222ef1;hb=6f2c64d70aad5328a843a6f6a6547ada69ead33b;hp=937472d5816fd56fecf249765e180aecda7be853;hpb=cd943e431732ebf4d4dda462e02397f101746274;p=oota-llvm.git diff --git a/include/llvm/Support/CFG.h b/include/llvm/Support/CFG.h index 937472d5816..b0b857bf028 100644 --- a/include/llvm/Support/CFG.h +++ b/include/llvm/Support/CFG.h @@ -18,7 +18,7 @@ #include "llvm/ADT/GraphTraits.h" #include "llvm/Function.h" #include "llvm/InstrTypes.h" -#include "llvm/ADT/iterator" +#include "llvm/ADT/iterator.h" namespace llvm { @@ -34,14 +34,14 @@ public: typedef PredIterator<_Ptr,_USE_iterator> _Self; typedef typename super::pointer pointer; - inline void advancePastNonPreds() { - // Loop to ignore non predecessor uses (for example PHI nodes)... - while (!It.atEnd() && !isa(*It) && !isa(*It)) + inline void advancePastNonTerminators() { + // Loop to ignore non terminator uses (for example PHI nodes)... + while (!It.atEnd() && !isa(*It)) ++It; } inline PredIterator(_Ptr *bb) : It(bb->use_begin()) { - advancePastNonPreds(); + advancePastNonTerminators(); } inline PredIterator(_Ptr *bb, bool) : It(bb->use_end()) {} @@ -50,16 +50,13 @@ public: inline pointer operator*() const { assert(!It.atEnd() && "pred_iterator out of range!"); - if (isa(*It)) // not dyn_cast due to const-correctness - return cast(*It)->getParent(); - - return cast<_Ptr>(*It); + return cast(*It)->getParent(); } inline pointer *operator->() const { return &(operator*()); } inline _Self& operator++() { // Preincrement assert(!It.atEnd() && "pred_iterator out of range!"); - ++It; advancePastNonPreds(); + ++It; advancePastNonTerminators(); return *this; } @@ -103,8 +100,6 @@ public: inline SuccIterator(Term_ T, bool) // end iterator : Term(T), idx(Term->getNumSuccessors()) { assert(T && "getTerminator returned null!"); - if (Term->getParent()->getUnwindDest()) - ++idx; } inline const _Self &operator=(const _Self &I) { @@ -120,12 +115,7 @@ public: inline bool operator==(const _Self& x) const { return idx == x.idx; } inline bool operator!=(const _Self& x) const { return !operator==(x); } - inline pointer operator*() const { - if (idx == Term->getNumSuccessors()) - return Term->getParent()->getUnwindDest(); - - return Term->getSuccessor(idx); - } + inline pointer operator*() const { return Term->getSuccessor(idx); } inline pointer operator->() const { return operator*(); } inline _Self& operator++() { ++idx; return *this; } // Preincrement