[PATCH] D83523: MachineSink: permit sinking into INLINEASM_BR indirect targets

Bill Wendling via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 12 19:54:35 PDT 2020


void added a comment.

I think this might be a better fix:

  diff --git a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
  index de336abe607..d21407a60eb 100644
  --- a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
  +++ b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
  @@ -888,6 +888,7 @@ rescheduleMIBelowKill(MachineBasicBlock::iterator &mi,
       return false;
   
     if (KillMI->hasUnmodeledSideEffects() || KillMI->isCall() ||
  +      KillMI->getOpcode() == TargetOpcode::INLINEASM_BR ||
         KillMI->isBranch() || KillMI->isTerminator())
       // Don't move pass calls, etc.
       return false;
  @@ -948,6 +949,7 @@ rescheduleMIBelowKill(MachineBasicBlock::iterator &mi,
         return false;
       ++NumVisited;
       if (OtherMI.hasUnmodeledSideEffects() || OtherMI.isCall() ||
  +        OtherMI.getOpcode() == TargetOpcode::INLINEASM_BR ||
           OtherMI.isBranch() || OtherMI.isTerminator())
         // Don't move pass calls, etc.
         return false;
  @@ -1122,6 +1124,7 @@ rescheduleKillAboveMI(MachineBasicBlock::iterator &mi,
         return false;
       ++NumVisited;
       if (OtherMI.hasUnmodeledSideEffects() || OtherMI.isCall() ||
  +        OtherMI.getOpcode() == TargetOpcode::INLINEASM_BR ||
           OtherMI.isBranch() || OtherMI.isTerminator())
         // Don't move pass calls, etc.
         return false;


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83523/new/

https://reviews.llvm.org/D83523





More information about the llvm-commits mailing list