Index: src/IceOperand.h |
diff --git a/src/IceOperand.h b/src/IceOperand.h |
index 25f80b3e893ae19f9079ffda3ba0c0e4b4fa0ae3..798da0b5b10bfd47e9272864b8ee538581d61ce0 100644 |
--- a/src/IceOperand.h |
+++ b/src/IceOperand.h |
@@ -298,11 +298,12 @@ bool operator==(const RegWeight &A, const RegWeight &B); |
// inside a loop. |
class LiveRange { |
public: |
- LiveRange() : Weight(0) {} |
+ LiveRange() : Weight(0), IsNonpoints(false) {} |
void reset() { |
Range.clear(); |
Weight.setWeight(0); |
+ IsNonpoints = false; |
} |
void addSegment(InstNumberT Start, InstNumberT End); |
@@ -335,6 +336,11 @@ private: |
#endif |
RangeType Range; |
RegWeight Weight; |
+ // IsNonpoints keeps track of whether the live range contains at |
+ // least one interval where Start!=End. If it is empty or has the |
+ // form [x,x),[y,y),...,[z,z), then overlaps(InstNumberT) is |
+ // trivially false. |
+ bool IsNonpoints; |
}; |
Ostream &operator<<(Ostream &Str, const LiveRange &L); |