nvc0: don't visit target blocks of a loop break multiple times
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 19 Feb 2011 13:18:28 +0000 (14:18 +0100)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Thu, 24 Feb 2011 16:35:35 +0000 (17:35 +0100)
src/gallium/drivers/nvc0/nvc0_pc.c

index e0cba05b976c6923b6f01080a87d18a512bb3a30..3a3a00f27bef932e0bb124a267cab39bab0da6cc 100644 (file)
@@ -189,7 +189,10 @@ nvc0_pc_pass_in_order(struct nv_basic_block *root, nv_pc_pass_func f,
             bb[p++] = b->out[j];
             break;
          case CFG_EDGE_LOOP_LEAVE:
-            bbb[pp++] = b->out[j];
+            if (!b->out[j]->priv) {
+               bbb[pp++] = b->out[j];
+               b->out[j]->priv = 1;
+            }
             break;
          default:
             assert(0);