[llvm] r278498 - [Hexagon] Treat non-returning indirect calls as scheduling boundaries
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 12 04:01:11 PDT 2016
Author: kparzysz
Date: Fri Aug 12 06:01:10 2016
New Revision: 278498
URL: http://llvm.org/viewvc/llvm-project?rev=278498&view=rev
Log:
[Hexagon] Treat non-returning indirect calls as scheduling boundaries
Modified:
llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp
Modified: llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp?rev=278498&r1=278497&r2=278498&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp Fri Aug 12 06:01:10 2016
@@ -1447,6 +1447,9 @@ bool HexagonInstrInfo::isSchedulingBound
// 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::isSchedulingBound
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;
More information about the llvm-commits
mailing list