summaryrefslogtreecommitdiff
path: root/lib/CodeGen/RegAllocGreedy.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-05-10 17:37:41 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-05-10 17:37:41 +0000
commitbdda37d7fbafe6876f248341837423a4100f95a5 (patch)
tree19a15ab39a313eee8b388aa6e4e4f1f6ad46d705 /lib/CodeGen/RegAllocGreedy.cpp
parent0d450dc65906a30beb56aeb1ee22b45b1cd4596c (diff)
downloadllvm-bdda37d7fbafe6876f248341837423a4100f95a5.tar.gz
llvm-bdda37d7fbafe6876f248341837423a4100f95a5.tar.bz2
llvm-bdda37d7fbafe6876f248341837423a4100f95a5.tar.xz
Fix PR9883. Make sure all caches are invalidated when a live range is repaired.
The previous invalidation missed the alias interference caches. Also add a stats counter for the number of repaired ranges. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131133 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegAllocGreedy.cpp')
-rw-r--r--lib/CodeGen/RegAllocGreedy.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/CodeGen/RegAllocGreedy.cpp b/lib/CodeGen/RegAllocGreedy.cpp
index e9920b8271..87e08ba199 100644
--- a/lib/CodeGen/RegAllocGreedy.cpp
+++ b/lib/CodeGen/RegAllocGreedy.cpp
@@ -1325,9 +1325,7 @@ unsigned RAGreedy::trySplit(LiveInterval &VirtReg, AllocationOrder &Order,
// an assertion when the coalescer is fixed.
if (SA->didRepairRange()) {
// VirtReg has changed, so all cached queries are invalid.
- Order.rewind();
- while (unsigned PhysReg = Order.next())
- query(VirtReg, PhysReg).clear();
+ invalidateVirtRegs();
if (unsigned PhysReg = tryAssign(VirtReg, Order, NewVRegs))
return PhysReg;
}