nv50/ir/ra: Fix live set propagation in the secondary passes of buildLiveSets().
authorFrancisco Jerez <currojerez@riseup.net>
Tue, 27 Dec 2011 11:43:27 +0000 (12:43 +0100)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 14 Apr 2012 19:54:03 +0000 (21:54 +0200)
src/gallium/drivers/nv50/codegen/nv50_ir_ra.cpp

index cd8f28955e40fd7bf1f7e93967f4752bf48ee945..5d2aa587a31a4c07b71a811bafdeb05c79d637b2 100644 (file)
@@ -466,10 +466,10 @@ RegAlloc::buildLiveSets(BasicBlock *bb)
       if (bn->cfg.visit(sequence))
          if (!buildLiveSets(bn))
             return false;
-      if (n++ == 0)
-         bb->liveSet = bn->liveSet;
-      else
+      if (n++ || bb->liveSet.marker)
          bb->liveSet |= bn->liveSet;
+      else
+         bb->liveSet = bn->liveSet;
    }
    if (!n && !bb->liveSet.marker)
       bb->liveSet.fill(0);