[PATCH] D53485: [ScheduleDAGRRList] Do not preschedule the node has ADJCALLSTACKDOWN

Shiva Chen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 22 20:16:05 PDT 2018


shiva0217 added inline comments.


================
Comment at: lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:2947
+        PredND = Pred.getSUnit()->getNode();
+        break;
+      }
----------------
TimNN wrote:
> This finds only the first non-data predecessor. Could there be multiple that would need to be considered?
Hi Tim, I think you are right. We should make sure find the first FrameSetup predecessor to avoid the FrameSetup not the first non-data predecessor.


================
Comment at: lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:2957
+    if (PredND && PredND->isMachineOpcode() &&
+        (PredND->getMachineOpcode() == TII->getCallFrameSetupOpcode()))
+      continue;
----------------
TimNN wrote:
> Would we need to consider transitively reachable nodes? Or is checking the direct predecessors enough, as is done here? 
Checking the direct predecessors probably enough, because the order dependencies are setting for parameter setup instructions for the call. Most backend using order dependencies to group the parameter setting instructions between FrameSetup and call by LowerCall API.


Repository:
  rL LLVM

https://reviews.llvm.org/D53485





More information about the llvm-commits mailing list