Don't use MRI liveouts in R600.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 5 Feb 2013 17:53:52 +0000 (17:53 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 5 Feb 2013 17:53:52 +0000 (17:53 +0000)
commitfdc37670f64615d2d84d3beddee074d7d8151b96
tree50b4ab2a41599c18a87faff3ccbeb8bc10e5997a
parentbf034dbd324380893a09c7ad62ac4ce95c8adff5
Don't use MRI liveouts in R600.

Something very strange is going on with the output registers in this
target. Its ISelLowering code is inserting dangling CopyToReg nodes,
hoping that those physregs won't get clobbered before the RETURN.

This patch adds the output registers as implicit uses on RETURN
instructions in the custom emission pass. I'd much prefer to have those
CopyToReg nodes glued to the RETURNs, but I don't see how.

llvm-svn: 174400
llvm/lib/Target/R600/R600ISelLowering.cpp
llvm/lib/Target/R600/R600Instructions.td
llvm/lib/Target/R600/R600MachineFunctionInfo.h