diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-02-05 17:53:52 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-02-05 17:53:52 +0000 |
commit | a499d2bcef0c1001c60d752d356e50eed2402ca8 (patch) | |
tree | 3a2648c3432c807a11fb4069696aad92d5ae3277 /lib/Target/R600/R600MachineFunctionInfo.h | |
parent | 0a9d1d31e9b3239b1dc38a67d31810c4bb405d0a (diff) | |
download | external_llvm-a499d2bcef0c1001c60d752d356e50eed2402ca8.tar.gz external_llvm-a499d2bcef0c1001c60d752d356e50eed2402ca8.tar.bz2 external_llvm-a499d2bcef0c1001c60d752d356e50eed2402ca8.zip |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174400 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/R600/R600MachineFunctionInfo.h')
-rw-r--r-- | lib/Target/R600/R600MachineFunctionInfo.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/Target/R600/R600MachineFunctionInfo.h b/lib/Target/R600/R600MachineFunctionInfo.h index 0cea211742..ad7b4da45a 100644 --- a/lib/Target/R600/R600MachineFunctionInfo.h +++ b/lib/Target/R600/R600MachineFunctionInfo.h @@ -23,6 +23,7 @@ class R600MachineFunctionInfo : public MachineFunctionInfo { public: R600MachineFunctionInfo(const MachineFunction &MF); + SmallVector<unsigned, 4> LiveOuts; SDNode *Outputs[16]; }; |