[PATCH] D126048: [SplitKit] Handle early clobber + tied to def correctly
    Matthias Braun via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed May 25 17:02:00 PDT 2022
    
    
  
MatzeB added a comment.
This seems to make sense to me (though I am not super familiar with the code here). Some ideas for clearer code below:
================
Comment at: llvm/lib/CodeGen/SplitKit.cpp:1355-1381
       Idx = Idx.getPrevSlot();
       if (!Edit->getParent().liveAt(Idx))
         continue;
     } else
       Idx = Idx.getRegSlot(true);
 
     SlotIndex Next = Idx.getNextSlot();
----------------
Hmm I found the (existing) logic here somewhat confusing... line 1361 doing getNextSlot() just seems to counteract line 1355 moving to the previous slot, but forces line 1359 to unnaturally chose the early clobber slot.
Anyway can we streamline the code somewhat like this:
================
Comment at: llvm/lib/CodeGen/SplitKit.cpp:1376
+      // in [16e, 32d).
+      unsigned OpIdx = MI->findRegisterUseOperandIdx(MO.getReg());
+      unsigned DefOpIdx = MI->findTiedOperandIdx(OpIdx);
----------------
Use `getOperandNo` that's faster and avoids trouble if multiple operands use the same register.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D126048/new/
https://reviews.llvm.org/D126048
    
    
More information about the llvm-commits
mailing list