From: Chris Lattner Date: Thu, 18 Nov 2004 02:37:31 +0000 (+0000) Subject: Add new advanceTo method X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=743ef6d70e710353c1e2b6a4b23af1262f4a475b;p=oota-llvm.git Add new advanceTo method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17932 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h index 2784ba7f2b1..05ebcc1ca2f 100644 --- a/include/llvm/CodeGen/LiveInterval.h +++ b/include/llvm/CodeGen/LiveInterval.h @@ -81,6 +81,19 @@ namespace llvm { iterator begin() { return ranges.begin(); } iterator end() { return ranges.end(); } + + /// advanceTo - Advance the specified iterator to point to the LiveRange + /// containing the specified position, or end() if the position is past the + /// end of the interval. If no LiveRange contains this position, but the + /// position is in a hole, this method returns an iterator pointing the the + /// LiveRange immediately after the hold. + iterator advanceTo(iterator I, unsigned Pos) { + if (Pos >= endNumber()) + return end(); + while (I->end <= Pos) ++I; + return I; + } + void swap(LiveInterval& other) { std::swap(reg, other.reg); std::swap(weight, other.weight); diff --git a/lib/CodeGen/LiveInterval.h b/lib/CodeGen/LiveInterval.h index 2784ba7f2b1..05ebcc1ca2f 100644 --- a/lib/CodeGen/LiveInterval.h +++ b/lib/CodeGen/LiveInterval.h @@ -81,6 +81,19 @@ namespace llvm { iterator begin() { return ranges.begin(); } iterator end() { return ranges.end(); } + + /// advanceTo - Advance the specified iterator to point to the LiveRange + /// containing the specified position, or end() if the position is past the + /// end of the interval. If no LiveRange contains this position, but the + /// position is in a hole, this method returns an iterator pointing the the + /// LiveRange immediately after the hold. + iterator advanceTo(iterator I, unsigned Pos) { + if (Pos >= endNumber()) + return end(); + while (I->end <= Pos) ++I; + return I; + } + void swap(LiveInterval& other) { std::swap(reg, other.reg); std::swap(weight, other.weight);