diff options
author | James Molloy <james.molloy@arm.com> | 2014-09-12 16:55:26 +0000 |
---|---|---|
committer | James Molloy <james.molloy@arm.com> | 2014-09-12 16:55:26 +0000 |
commit | a6e05a789e1c0dbcea1be3dc11befdbbad2d1991 (patch) | |
tree | 3870af117ee0d4f2b8291df55ed0b4a57c1a352f /llvm/lib/Target | |
parent | ef78038775ad81563f0213abbd09ddcd6cbef7c7 (diff) | |
download | bcm5719-llvm-a6e05a789e1c0dbcea1be3dc11befdbbad2d1991.tar.gz bcm5719-llvm-a6e05a789e1c0dbcea1be3dc11befdbbad2d1991.zip |
[A57FPLoadBalancing] Ignore <def>s when checking if a chain may be killed.
Defs are seen before uses, so a def without the kill flag doesn't necessarily
mean that the register is not killed on that instruction. It may be killed
in a later use operand.
llvm-svn: 217689
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp b/llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp index f298e118210..361963b962b 100644 --- a/llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp +++ b/llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp @@ -662,6 +662,10 @@ maybeKillChain(MachineOperand &MO, unsigned Idx, // determine if a chain should be ended and remove from ActiveChains. MachineInstr *MI = MO.getParent(); + if (MO.isReg() && MO.isDef()) + // We don't care about defs. We see them before uses, so reject them early. + return; + if (MO.isReg()) { // If this is a KILL of a current chain, record it. |