Use a new local data structure instead of the MachineInstr::regsUsed set
authorChris Lattner <sabre@nondot.org>
Tue, 5 Aug 2003 22:11:13 +0000 (22:11 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 5 Aug 2003 22:11:13 +0000 (22:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7621 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp

index e06e8c1d61220ec2f78c6cead09c87d3d28110d7..791421babf341692d3853ba221a399166c32292b 100644 (file)
@@ -1059,7 +1059,7 @@ int PhyRegAlloc::getUsableUniRegAtMI(const int RegType,
         // of copying it to memory and back.  But we have to mark the
         // register as used by this instruction, so it does not get used
         // as a scratch reg. by another operand or anyone else.
-        MInst->insertUsedReg(scratchReg); 
+        ScratchRegsUsed.insert(std::make_pair(MInst, scratchReg));
         MRI.cpReg2RegMI(MIBef, RegU, scratchReg, RegType);
         MRI.cpReg2RegMI(MIAft, scratchReg, RegU, RegType);
       }
@@ -1175,13 +1175,12 @@ void PhyRegAlloc::setRelRegsUsedByThisInst(RegClass *RC, int RegType,
       markRegisterUsed(MI->getImplicitOp(i).getAllocatedRegNum(), RC,
                        RegType,MRI);
 
-  // The getRegsUsed() method returns the set of scratch registers that are used
-  // to save values across the instruction (e.g., for saving state register
-  // values).
-  const std::set<int> &regsUsed = MI->getRegsUsed();
-  for (std::set<int>::iterator I = regsUsed.begin(),
-         E = regsUsed.end(); I != E; ++I)
-    markRegisterUsed(*I, RC, RegType, MRI);
+  // Add all of the scratch registers that are used to save values across the
+  // instruction (e.g., for saving state register values).
+  std::pair<ScratchRegsUsedTy::iterator, ScratchRegsUsedTy::iterator>
+    IR = ScratchRegsUsed.equal_range(MI);
+  for (ScratchRegsUsedTy::iterator I = IR.first; I != IR.second; ++I)
+    markRegisterUsed(I->second, RC, RegType, MRI);
 
   // If there are implicit references, mark their allocated regs as well
   // 
index e06e8c1d61220ec2f78c6cead09c87d3d28110d7..791421babf341692d3853ba221a399166c32292b 100644 (file)
@@ -1059,7 +1059,7 @@ int PhyRegAlloc::getUsableUniRegAtMI(const int RegType,
         // of copying it to memory and back.  But we have to mark the
         // register as used by this instruction, so it does not get used
         // as a scratch reg. by another operand or anyone else.
-        MInst->insertUsedReg(scratchReg); 
+        ScratchRegsUsed.insert(std::make_pair(MInst, scratchReg));
         MRI.cpReg2RegMI(MIBef, RegU, scratchReg, RegType);
         MRI.cpReg2RegMI(MIAft, scratchReg, RegU, RegType);
       }
@@ -1175,13 +1175,12 @@ void PhyRegAlloc::setRelRegsUsedByThisInst(RegClass *RC, int RegType,
       markRegisterUsed(MI->getImplicitOp(i).getAllocatedRegNum(), RC,
                        RegType,MRI);
 
-  // The getRegsUsed() method returns the set of scratch registers that are used
-  // to save values across the instruction (e.g., for saving state register
-  // values).
-  const std::set<int> &regsUsed = MI->getRegsUsed();
-  for (std::set<int>::iterator I = regsUsed.begin(),
-         E = regsUsed.end(); I != E; ++I)
-    markRegisterUsed(*I, RC, RegType, MRI);
+  // Add all of the scratch registers that are used to save values across the
+  // instruction (e.g., for saving state register values).
+  std::pair<ScratchRegsUsedTy::iterator, ScratchRegsUsedTy::iterator>
+    IR = ScratchRegsUsed.equal_range(MI);
+  for (ScratchRegsUsedTy::iterator I = IR.first; I != IR.second; ++I)
+    markRegisterUsed(I->second, RC, RegType, MRI);
 
   // If there are implicit references, mark their allocated regs as well
   //