Simplify a few more uses of reg_iterator.
authorDan Gohman <gohman@apple.com>
Fri, 25 Sep 2009 22:26:13 +0000 (22:26 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 25 Sep 2009 22:26:13 +0000 (22:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82812 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/MachineRegisterInfo.cpp
lib/CodeGen/RegAllocLinearScan.cpp

index e1b23fd77f652d9dea52192b934600c43a194e20..be78200c3098faf77272b75d6a857e9fbad9b4ea 100644 (file)
@@ -1087,11 +1087,9 @@ LiveIntervals::isProfitableToCoalesce(LiveInterval &DstInt, LiveInterval &SrcInt
                                    SmallVector<MachineInstr*,16> &OtherCopies) {
   bool HaveConflict = false;
   unsigned NumIdent = 0;
-  for (MachineRegisterInfo::reg_iterator ri = mri_->reg_begin(SrcInt.reg),
-         re = mri_->reg_end(); ri != re; ++ri) {
+  for (MachineRegisterInfo::def_iterator ri = mri_->def_begin(SrcInt.reg),
+         re = mri_->def_end(); ri != re; ++ri) {
     MachineOperand &O = ri.getOperand();
-    if (!O.isDef())
-      continue;
 
     MachineInstr *MI = &*ri;
     unsigned SrcReg, DstReg, SrcSubReg, DstSubReg;
index 544d83a33f7f9316325ce97b02ff79b90052a126..b31973e04fd9fdeb52ca59011f8d8f7162a2803a 100644 (file)
@@ -110,11 +110,9 @@ void MachineRegisterInfo::replaceRegWith(unsigned FromReg, unsigned ToReg) {
 MachineInstr *MachineRegisterInfo::getVRegDef(unsigned Reg) const {
   assert(Reg-TargetRegisterInfo::FirstVirtualRegister < VRegInfo.size() &&
          "Invalid vreg!");
-  for (reg_iterator I = reg_begin(Reg), E = reg_end(); I != E; ++I) {
-    // Since we are in SSA form, we can stop at the first definition.
-    if (I.getOperand().isDef())
-      return &*I;
-  }
+  // Since we are in SSA form, we can use the first definition.
+  if (!def_empty(Reg))
+    return &*def_begin(Reg);
   return 0;
 }
 
index 64490d2e05e44d532ebb1f4644c141bbe9e6fdca..9d22e13bb5db149b7acc361a81f0b328c346a243 100644 (file)
@@ -397,10 +397,10 @@ unsigned RALinScan::attemptTrivialCoalescing(LiveInterval &cur, unsigned Reg) {
     // Remove unnecessary kills since a copy does not clobber the register.
     if (li_->hasInterval(SrcReg)) {
       LiveInterval &SrcLI = li_->getInterval(SrcReg);
-      for (MachineRegisterInfo::reg_iterator I = mri_->reg_begin(cur.reg),
-             E = mri_->reg_end(); I != E; ++I) {
+      for (MachineRegisterInfo::use_iterator I = mri_->use_begin(cur.reg),
+             E = mri_->use_end(); I != E; ++I) {
         MachineOperand &O = I.getOperand();
-        if (!O.isUse() || !O.isKill())
+        if (!O.isKill())
           continue;
         MachineInstr *MI = &*I;
         if (SrcLI.liveAt(li_->getDefIndex(li_->getInstructionIndex(MI))))