summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-02-17 22:14:51 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-02-17 22:14:51 +0000
commit1aaf41af54fca47baa8caf3a4ec5b097d4c17976 (patch)
treecf9568c0b367b03e4a4c91d6f035f06783a0dbcd /llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp
parentbca05df38b0122945b58c559c452c03b8e81c2ce (diff)
downloadbcm5719-llvm-1aaf41af54fca47baa8caf3a4ec5b097d4c17976.tar.gz
bcm5719-llvm-1aaf41af54fca47baa8caf3a4ec5b097d4c17976.zip
[Hexagon] Start using regmasks on calls
Reapply r295371 with a fix for the Windows bot failures. llvm-svn: 295504
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp b/llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp
index 36080997ec6..5f375f8dc74 100644
--- a/llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonCopyToCombine.cpp
@@ -440,17 +440,21 @@ HexagonCopyToCombine::findPotentialNewifiableTFRs(MachineBasicBlock &BB) {
// Put instructions that last defined integer or double registers into the
// map.
- for (unsigned I = 0, E = MI.getNumOperands(); I != E; ++I) {
- MachineOperand &Op = MI.getOperand(I);
- if (!Op.isReg() || !Op.isDef() || !Op.getReg())
- continue;
- unsigned Reg = Op.getReg();
- if (Hexagon::DoubleRegsRegClass.contains(Reg)) {
- for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) {
- LastDef[*SubRegs] = &MI;
- }
- } else if (Hexagon::IntRegsRegClass.contains(Reg))
- LastDef[Reg] = &MI;
+ for (MachineOperand &Op : MI.operands()) {
+ if (Op.isReg()) {
+ if (!Op.isDef() || !Op.getReg())
+ continue;
+ unsigned Reg = Op.getReg();
+ if (Hexagon::DoubleRegsRegClass.contains(Reg)) {
+ for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs)
+ LastDef[*SubRegs] = &MI;
+ } else if (Hexagon::IntRegsRegClass.contains(Reg))
+ LastDef[Reg] = &MI;
+ } else if (Op.isRegMask()) {
+ for (unsigned Reg : Hexagon::IntRegsRegClass)
+ if (Op.clobbersPhysReg(Reg))
+ LastDef[Reg] = &MI;
+ }
}
}
}
OpenPOWER on IntegriCloud