[PATCH] D121277: [MachineSink] Check block prologue does not clobber uses
    Ruiling, Song via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Mar 17 00:59:03 PDT 2022
    
    
  
ruiling added a comment.
Thanks for the change, mostly looks good to me. with only a few minor comments.
================
Comment at: llvm/lib/CodeGen/MachineSink.cpp:1307
+    return false; // no prologue
+  for (MachineBasicBlock::iterator PI = BB->begin(); PI != End; ++PI) {
+    // Only check target defined prologue instructions
----------------
maybe start from BB->getFirstNonPHI()? so you don't need to pass PHI to isBasicBlockPrologue().
================
Comment at: llvm/lib/CodeGen/MachineSink.cpp:1324
+      } else {
+        if (PI->readsRegister(Reg, TRI))
+          return true;
----------------
Could you also return true if PI->modifiesRegister()? This is mainly for case like the sunk instruction define whole piece of the register, but there is some prologue instruction overwrite the sub-register. With this check, we would be much like what hasRegisterDependency() has done.
================
Comment at: llvm/lib/CodeGen/MachineSink.cpp:1847
 
+    LLVM_DEBUG(dbgs() << "Sink instr " << MI << "\tinto block " << *SuccBB);
+
----------------
May be better to move this log after the interference check?
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D121277/new/
https://reviews.llvm.org/D121277
    
    
More information about the llvm-commits
mailing list