summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2012-07-10 05:16:17 +0000
committerChandler Carruth <chandlerc@gmail.com>2012-07-10 05:16:17 +0000
commite585e75612ef5fd32e2bb2c9f635496791a20f8b (patch)
tree97cd0292d4c2eda4d83c428c2809364ac701c43e /include
parent261b6330896736f674bdb2dd4556a0483f3cfe8d (diff)
downloadllvm-e585e75612ef5fd32e2bb2c9f635496791a20f8b.tar.gz
llvm-e585e75612ef5fd32e2bb2c9f635496791a20f8b.tar.bz2
llvm-e585e75612ef5fd32e2bb2c9f635496791a20f8b.tar.xz
Add an efficient merge operation to LiveInterval and use it to avoid
quadratic behavior when performing pathological merges. Fixes the core element of PR12652. There is only one user of addRangeFrom left: join. I'm hoping to refactor further in a future patch and have join use this merge operation as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159982 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/CodeGen/LiveInterval.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h
index e26a47a6ee..83a3b43876 100644
--- a/include/llvm/CodeGen/LiveInterval.h
+++ b/include/llvm/CodeGen/LiveInterval.h
@@ -504,6 +504,9 @@ namespace llvm {
void extendIntervalEndTo(Ranges::iterator I, SlotIndex NewEnd);
Ranges::iterator extendIntervalStartTo(Ranges::iterator I, SlotIndex NewStr);
void markValNoForDeletion(VNInfo *V);
+ void mergeIntervalRanges(const LiveInterval &RHS,
+ VNInfo *LHSValNo,
+ const VNInfo *RHSValNo = 0);
LiveInterval& operator=(const LiveInterval& rhs); // DO NOT IMPLEMENT