R600: Calculate store mask instead of using switch.
[oota-llvm.git] / lib / CodeGen / RegisterPressure.cpp
index 092ecdd9bb256e185ee6671412dd01df9aa7c3e8..cfeafbf403069a996b10ffdd27c8fa4e57a0b2a1 100644 (file)
@@ -506,7 +506,13 @@ bool RegPressureTracker::recede(SmallVectorImpl<unsigned> *LiveUses,
         DeadDef = LRQ.isDeadDef();
       }
     }
-    if (!DeadDef) {
+    if (DeadDef) {
+      // LiveIntervals knows this is a dead even though it's MachineOperand is
+      // not flagged as such. Since this register will not be recorded as
+      // live-out, increase its PDiff value to avoid underflowing pressure.
+      if (PDiff)
+        PDiff->addPressureChange(Reg, false, MRI);
+    } else {
       if (LiveRegs.erase(Reg))
         decreaseRegPressure(Reg);
       else