LiveRegUnits: Break register loop when a clobber is encountered
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 13 Sep 2022 13:57:22 +0000 (09:57 -0400)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 13 Sep 2022 14:15:08 +0000 (10:15 -0400)
llvm/lib/CodeGen/LiveRegUnits.cpp

index 0b20e91..34de09d 100644 (file)
@@ -22,8 +22,10 @@ using namespace llvm;
 void LiveRegUnits::removeRegsNotPreserved(const uint32_t *RegMask) {
   for (unsigned U = 0, E = TRI->getNumRegUnits(); U != E; ++U) {
     for (MCRegUnitRootIterator RootReg(U, TRI); RootReg.isValid(); ++RootReg) {
-      if (MachineOperand::clobbersPhysReg(RegMask, *RootReg))
+      if (MachineOperand::clobbersPhysReg(RegMask, *RootReg)) {
         Units.reset(U);
+        break;
+      }
     }
   }
 }
@@ -31,8 +33,10 @@ void LiveRegUnits::removeRegsNotPreserved(const uint32_t *RegMask) {
 void LiveRegUnits::addRegsInMask(const uint32_t *RegMask) {
   for (unsigned U = 0, E = TRI->getNumRegUnits(); U != E; ++U) {
     for (MCRegUnitRootIterator RootReg(U, TRI); RootReg.isValid(); ++RootReg) {
-      if (MachineOperand::clobbersPhysReg(RegMask, *RootReg))
+      if (MachineOperand::clobbersPhysReg(RegMask, *RootReg)) {
         Units.set(U);
+        break;
+      }
     }
   }
 }