summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-08-12 11:01:10 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-08-12 11:01:10 +0000
commitab9127ca3c98391fc83f46842263bc6b3c1323f8 (patch)
treea746d7b35b0d91db5ee0e835ad86e1808ff202a5 /llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
parentd5fa61ee4a64b0cd874e764af1a4a1d0435844cd (diff)
downloadbcm5719-llvm-ab9127ca3c98391fc83f46842263bc6b3c1323f8.tar.gz
bcm5719-llvm-ab9127ca3c98391fc83f46842263bc6b3c1323f8.zip
[Hexagon] Treat non-returning indirect calls as scheduling boundaries
llvm-svn: 278498
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
index ec3a30f1f16..3cad6a66156 100644
--- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
@@ -1447,6 +1447,9 @@ bool HexagonInstrInfo::isSchedulingBoundary(const MachineInstr &MI,
// Throwing call is a boundary.
if (MI.isCall()) {
+ // Don't mess around with no return calls.
+ if (doesNotReturn(MI))
+ return true;
// If any of the block's successors is a landing pad, this could be a
// throwing call.
for (auto I : MBB->successors())
@@ -1454,10 +1457,6 @@ bool HexagonInstrInfo::isSchedulingBoundary(const MachineInstr &MI,
return true;
}
- // Don't mess around with no return calls.
- if (MI.getOpcode() == Hexagon::CALLv3nr)
- return true;
-
// Terminators and labels can't be scheduled around.
if (MI.getDesc().isTerminator() || MI.isPosition())
return true;
OpenPOWER on IntegriCloud