Index: src/IceOperand.cpp |
diff --git a/src/IceOperand.cpp b/src/IceOperand.cpp |
index 26ef83089a064191b569fa88b0b34effbe4c94bc..c366dd993558f604ff6ddf7b441b5350e7c5a36c 100644 |
--- a/src/IceOperand.cpp |
+++ b/src/IceOperand.cpp |
@@ -37,6 +37,8 @@ bool operator==(const RegWeight &A, const RegWeight &B) { |
} |
void LiveRange::addSegment(InstNumberT Start, InstNumberT End) { |
+ if (End > Start) |
+ IsNonpoints = true; |
#ifdef USE_SET |
RangeElementType Element(Start, End); |
RangeType::iterator Next = Range.lower_bound(Element); |
@@ -122,6 +124,8 @@ bool LiveRange::overlaps(const LiveRange &Other) const { |
} |
bool LiveRange::overlaps(InstNumberT OtherBegin) const { |
+ if (!IsNonpoints) |
+ return false; |
bool Result = false; |
for (const RangeElementType &I : Range) { |
if (OtherBegin < I.first) { |