summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorJames Molloy <james.molloy@arm.com>2014-09-12 16:55:26 +0000
committerJames Molloy <james.molloy@arm.com>2014-09-12 16:55:26 +0000
commita6e05a789e1c0dbcea1be3dc11befdbbad2d1991 (patch)
tree3870af117ee0d4f2b8291df55ed0b4a57c1a352f /llvm/lib/Target
parentef78038775ad81563f0213abbd09ddcd6cbef7c7 (diff)
downloadbcm5719-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.cpp4
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.
OpenPOWER on IntegriCloud