[llvm-commits] [llvm] r53068 - /llvm/trunk/lib/CodeGen/MachineInstr.cpp

Dan Gohman gohman at apple.com
Wed Jul 2 18:18:51 PDT 2008


Author: djg
Date: Wed Jul  2 20:18:51 2008
New Revision: 53068

URL: http://llvm.org/viewvc/llvm-project?rev=53068&view=rev
Log:
Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." The
254.gap failure was not due to this mod.

Modified:
    llvm/trunk/lib/CodeGen/MachineInstr.cpp

Modified: llvm/trunk/lib/CodeGen/MachineInstr.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineInstr.cpp?rev=53068&r1=53067&r2=53068&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/MachineInstr.cpp (original)
+++ llvm/trunk/lib/CodeGen/MachineInstr.cpp Wed Jul  2 20:18:51 2008
@@ -738,7 +738,7 @@
                                      const TargetRegisterInfo *RegInfo,
                                      bool AddIfNotFound) {
   bool isPhysReg = TargetRegisterInfo::isPhysicalRegister(IncomingReg);
-  bool Found = false;
+  bool hasAliases = isPhysReg && RegInfo->getAliasSet(IncomingReg);
   SmallVector<unsigned,4> DeadOps;
   for (unsigned i = 0, e = getNumOperands(); i != e; ++i) {
     MachineOperand &MO = getOperand(i);
@@ -749,15 +749,15 @@
       continue;
 
     if (Reg == IncomingReg) {
-      if (!Found)  // One kill of reg per instruction.
-        MO.setIsKill();
-      Found = true;
-    } else if (isPhysReg && MO.isKill() &&
-               TargetRegisterInfo::isPhysicalRegister(Reg)) {
+      MO.setIsKill();
+      return true;
+    }
+    if (hasAliases && MO.isKill() &&
+        TargetRegisterInfo::isPhysicalRegister(Reg)) {
       // A super-register kill already exists.
       if (RegInfo->isSuperRegister(IncomingReg, Reg))
-        Found = true;
-      else if (RegInfo->isSubRegister(IncomingReg, Reg))
+        return true;
+      if (RegInfo->isSubRegister(IncomingReg, Reg))
         DeadOps.push_back(i);
     }
   }
@@ -774,14 +774,14 @@
 
   // If not found, this means an alias of one of the operands is killed. Add a
   // new implicit operand if required.
-  if (!Found && AddIfNotFound) {
+  if (AddIfNotFound) {
     addOperand(MachineOperand::CreateReg(IncomingReg,
                                          false /*IsDef*/,
                                          true  /*IsImp*/,
                                          true  /*IsKill*/));
     return true;
   }
-  return Found;
+  return false;
 }
 
 bool MachineInstr::addRegisterDead(unsigned IncomingReg,
@@ -789,7 +789,6 @@
                                    bool AddIfNotFound) {
   bool isPhysReg = TargetRegisterInfo::isPhysicalRegister(IncomingReg);
   bool hasAliases = isPhysReg && RegInfo->getAliasSet(IncomingReg);
-  bool Found = false;
   SmallVector<unsigned,4> DeadOps;
   for (unsigned i = 0, e = getNumOperands(); i != e; ++i) {
     MachineOperand &MO = getOperand(i);
@@ -798,13 +797,14 @@
     unsigned Reg = MO.getReg();
     if (Reg == IncomingReg) {
       MO.setIsDead();
-      Found = true;
-    } else if (hasAliases && MO.isDead() &&
-               TargetRegisterInfo::isPhysicalRegister(Reg)) {
+      return true;
+    }
+    if (hasAliases && MO.isDead() &&
+        TargetRegisterInfo::isPhysicalRegister(Reg)) {
       // There exists a super-register that's marked dead.
       if (RegInfo->isSuperRegister(IncomingReg, Reg))
-        Found = true;
-      else if (RegInfo->isSubRegister(IncomingReg, Reg))
+        return true;
+      if (RegInfo->isSubRegister(IncomingReg, Reg))
         DeadOps.push_back(i);
     }
   }
@@ -821,13 +821,13 @@
 
   // If not found, this means an alias of one of the operand is dead. Add a
   // new implicit operand.
-  if (!Found && AddIfNotFound) {
+  if (AddIfNotFound) {
     addOperand(MachineOperand::CreateReg(IncomingReg, true/*IsDef*/,
                                          true/*IsImp*/,false/*IsKill*/,
                                          true/*IsDead*/));
     return true;
   }
-  return Found;
+  return false;
 }
 
 /// copyKillDeadInfo - copies killed/dead information from one instr to another





More information about the llvm-commits mailing list