[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