[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