Fix the handling of partial redefines in the fast register allocator.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 29 Jun 2010 19:15:30 +0000 (19:15 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 29 Jun 2010 19:15:30 +0000 (19:15 +0000)
commitd1303d2a66241c70e0e35dac371636c883235df8
tree34e77e5ecc80dcd6250928df68c0d03d56dfcfca
parent5d52165e4e2f83e6e66063382f323435da21090d
Fix the handling of partial redefines in the fast register allocator.

A partial redefine needs to be treated like a tied operand, and the register
must be reloaded while processing use operands.

This fixes a bug where partially redefined registers were processed as normal
defs with a reload added. The reload could clobber another use operand if it was
a kill that allowed register reuse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107193 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/RegAllocFast.cpp
test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll [new file with mode: 0644]