Teach the SplitKit blitter to handle multiply defined values as well.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 15 Apr 2011 17:24:49 +0000 (17:24 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 15 Apr 2011 17:24:49 +0000 (17:24 +0000)
commit44b7ae2355a32035ea286555736d173755a1c5e2
treefae4def857bf82483324f2cb28c24a2d84d105e0
parent806562cc59ad35e6c742abe9109e9b8090b3f820
Teach the SplitKit blitter to handle multiply defined values as well.

The transferValues() function can now handle both singly and multiply defined
values, as long as the resulting live range is known. Only rematerialized values
have their live range recomputed by extendRange().

The updateSSA() function can now insert PHI values in bulk across multiple
values in multiple target registers in one pass. The list of blocks received
from transferValues() is in layout order which seems to work well for the
iterative algorithm. Blocks from extendRange() are still in reverse BFS order,
but this function is used so rarely now that it doesn't matter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129580 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SplitKit.cpp
lib/CodeGen/SplitKit.h