diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2012-07-10 05:16:17 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2012-07-10 05:16:17 +0000 |
commit | e585e75612ef5fd32e2bb2c9f635496791a20f8b (patch) | |
tree | 97cd0292d4c2eda4d83c428c2809364ac701c43e /include | |
parent | 261b6330896736f674bdb2dd4556a0483f3cfe8d (diff) | |
download | llvm-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.h | 3 |
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 |