[PATCH] D91218: [SystemZ] Prevent fentry reordering
    Ilya Leoshkevich via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Nov 11 04:30:27 PST 2020
    
    
  
iii added a comment.
In D91218#2388311 <https://reviews.llvm.org/D91218#2388311>, @jonpa wrote:
>> An alternative fix would be to modify isSchedulingBoundary() to accept FENTRY_CALL, but this would have questionable semantics.
>
> Did you try to add the isCall flag to the instruction in Target.td? That should make it a scheduling boundary...
I think it would work, but there is the following comment regarding `isCall`:
  /// MachineScheduler does not currently support scheduling across calls. To
  /// handle calls, the DAG builder needs to be modified to create register
  /// anti/output dependencies on the registers clobbered by the call's regmask
  /// operand. In PreRA scheduling, the stack pointer adjustment already prevents
  /// scheduling across calls. In PostRA scheduling, we need the isCall to enforce
  /// the boundary, but there would be no benefit to postRA scheduling across
  /// calls this late anyway.
If I read this correctly, that `isCall` is a scheduling boundary is an implementation detail that can (even if not likely) change.
Still, adding `isCall` must be a right thing to do regardless? `FENTRY_CALL` cannot be anything else.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D91218/new/
https://reviews.llvm.org/D91218
    
    
More information about the llvm-commits
mailing list