aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/MathExtrasTest.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-03-01 21:10:07 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-03-01 21:10:07 +0000
commit5f9f081d76bd7d0bc4b7d94fe1f42cffe38821b5 (patch)
tree2a746a47fa4f0acf87c5e28345410869be0f1cc4 /llvm/unittests/Support/MathExtrasTest.cpp
parentc76ae9c8e0303e8a468bdbb2275ad13a29cffac2 (diff)
downloadllvm-5f9f081d76bd7d0bc4b7d94fe1f42cffe38821b5.zip
llvm-5f9f081d76bd7d0bc4b7d94fe1f42cffe38821b5.tar.gz
llvm-5f9f081d76bd7d0bc4b7d94fe1f42cffe38821b5.tar.bz2
Keep track of which stage produced a live range, and bypass earlier stages when revisiting.
This effectively disables the 'turbo' functionality of the greedy register allocator where all new live ranges created by splitting would be reconsidered as if they were originals. There are two reasons for doing this, 1. It guarantees that the algorithm terminates. Early versions were prone to infinite looping in certain corner cases. 2. It is a 2x speedup. We can skip a lot of unnecessary interference checks that won't lead to good splitting anyway. The problem is that region splitting only gets one shot, so it should probably be changed to target multiple physical registers at once. Local live range splitting is still 'turbo' enabled. It only accounts for a small fraction of compile time, so it is probably not necessary to do anything about that. llvm-svn: 126781
Diffstat (limited to 'llvm/unittests/Support/MathExtrasTest.cpp')
0 files changed, 0 insertions, 0 deletions