regpressure: Fix getMaxUpwardPressureDelta.
authorAndrew Trick <atrick@apple.com>
Thu, 17 May 2012 18:35:05 +0000 (18:35 +0000)
committerAndrew Trick <atrick@apple.com>
Thu, 17 May 2012 18:35:05 +0000 (18:35 +0000)
llvm-svn: 157004

llvm/lib/CodeGen/RegisterPressure.cpp

index 53036c7..fbd08cb 100644 (file)
@@ -629,13 +629,17 @@ getMaxUpwardPressureDelta(const MachineInstr *MI, RegPressureDelta &Delta) {
   // Generate liveness for uses.
   for (unsigned i = 0, e = PhysRegOpers.Uses.size(); i < e; ++i) {
     unsigned Reg = PhysRegOpers.Uses[i];
-    if (!hasRegAlias(Reg, LivePhysRegs, TRI)) {
+    if (!hasRegAlias(Reg, LivePhysRegs, TRI)
+        && (findRegAlias(Reg, PhysRegOpers.Defs, TRI)
+            == PhysRegOpers.Defs.end())) {
       increasePhysRegPressure(Reg);
     }
   }
   for (unsigned i = 0, e = VirtRegOpers.Uses.size(); i < e; ++i) {
     unsigned Reg = VirtRegOpers.Uses[i];
-    if (!LiveVirtRegs.count(Reg)) {
+    if (!LiveVirtRegs.count(Reg)
+        && (std::find(VirtRegOpers.Defs.begin(), VirtRegOpers.Defs.end(), Reg)
+            != VirtRegOpers.Defs.end())) {
       increaseVirtRegPressure(Reg);
     }
   }