Index: src/IceTargetLowering.h |
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h |
index ec86cffae50396a54690c2d3167cebb01070b562..91512a9fb47189ad7f322bb1d18e8c08816f076b 100644 |
--- a/src/IceTargetLowering.h |
+++ b/src/IceTargetLowering.h |
@@ -42,7 +42,7 @@ public: |
return *Next; |
} |
Inst *getNextInst(InstList::iterator &Iter) const { |
- advance(Iter); |
+ advanceForward(Iter); |
if (Iter == End) |
return NULL; |
return *Iter; |
@@ -52,8 +52,9 @@ public: |
InstList::iterator getCur() const { return Cur; } |
InstList::iterator getEnd() const { return End; } |
void insert(Inst *Inst); |
+ Inst *getLastInserted() const; |
void advanceCur() { Cur = Next; } |
- void advanceNext() { advance(Next); } |
+ void advanceNext() { advanceForward(Next); } |
void setInsertPoint(const InstList::iterator &Position) { Next = Position; } |
private: |
@@ -71,11 +72,14 @@ private: |
// insertion point", to avoid confusion when previously-deleted |
// instructions come between the two points. |
InstList::iterator Next; |
+ // Begin is a copy of Insts.begin(), used if iterators are moved backward. |
+ InstList::iterator Begin; |
// End is a copy of Insts.end(), used if Next needs to be advanced. |
InstList::iterator End; |
void skipDeleted(InstList::iterator &I) const; |
- void advance(InstList::iterator &I) const; |
+ void advanceForward(InstList::iterator &I) const; |
+ void advanceBackward(InstList::iterator &I) const; |
LoweringContext(const LoweringContext &) LLVM_DELETED_FUNCTION; |
LoweringContext &operator=(const LoweringContext &) LLVM_DELETED_FUNCTION; |
}; |