[llvm] X86: Use LiveRegUnits in findDeadCallerSavedReg (PR #156817)

Phoebe Wang via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 8 20:04:55 PDT 2025


================
@@ -1025,20 +1023,20 @@ unsigned X86RegisterInfo::findDeadCallerSavedReg(
   case X86::TCRETURNmi64:
   case X86::EH_RETURN:
   case X86::EH_RETURN64: {
-    SmallSet<uint16_t, 8> Uses;
-    for (MachineOperand &MO : MBBI->operands()) {
-      if (!MO.isReg() || MO.isDef())
-        continue;
-      Register Reg = MO.getReg();
-      if (!Reg)
-        continue;
-      for (MCRegAliasIterator AI(Reg, this, true); AI.isValid(); ++AI)
-        Uses.insert(*AI);
+    LiveRegUnits LRU(*this);
+    LRU.addLiveOuts(MBB);
+    LRU.stepBackward(*MBBI);
+
+    // FIXME: Why do we need to special case this register? Is it missing from
+    // return implicit uses?
+    LRU.removeReg(X86::RIP);
----------------
phoebewang wrote:

https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/X86/X86RegisterInfo.td#L685

https://github.com/llvm/llvm-project/pull/156817


More information about the llvm-commits mailing list