diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-08-12 11:01:10 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-08-12 11:01:10 +0000 |
commit | ab9127ca3c98391fc83f46842263bc6b3c1323f8 (patch) | |
tree | a746d7b35b0d91db5ee0e835ad86e1808ff202a5 /llvm/lib/Target | |
parent | d5fa61ee4a64b0cd874e764af1a4a1d0435844cd (diff) | |
download | bcm5719-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')
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp | 7 |
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; |