diff options
author | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2011-03-04 11:02:10 +0100 |
---|---|---|
committer | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2011-03-04 11:02:10 +0100 |
commit | cf143c1f4d7c3636ddd5c767518b1b00ff46b16c (patch) | |
tree | 83a38a7ae4e9d2f7e65e8ad3ec3b7c35374bad68 /src/gallium/drivers/nv50/nv50_pc_optimize.c | |
parent | 9d31138f53c0bee9193af73850ab6febddd29f51 (diff) | |
parent | 3bf92a281bdc6ebf2ec5975729d02bd9062e11f5 (diff) |
Merge remote branch 'origin/nvc0'
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_pc_optimize.c')
-rw-r--r-- | src/gallium/drivers/nv50/nv50_pc_optimize.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv50/nv50_pc_optimize.c b/src/gallium/drivers/nv50/nv50_pc_optimize.c index 679e5ea148..281ccf7ac6 100644 --- a/src/gallium/drivers/nv50/nv50_pc_optimize.c +++ b/src/gallium/drivers/nv50/nv50_pc_optimize.c @@ -145,8 +145,9 @@ nv_pc_pass_pre_emission(void *priv, struct nv_basic_block *b) int j; uint size, n32 = 0; + /* find first non-empty block emitted before b */ for (j = pc->num_blocks - 1; j >= 0 && !pc->bb_list[j]->bin_size; --j); - if (j >= 0) { + for (; j >= 0; --j) { in = pc->bb_list[j]; /* check for no-op branches (BRA $PC+8) */ @@ -160,6 +161,9 @@ nv_pc_pass_pre_emission(void *priv, struct nv_basic_block *b) nv_nvi_delete(in->exit); } b->bin_pos = in->bin_pos + in->bin_size; + + if (in->bin_size) /* no more no-op branches to b */ + break; } pc->bb_list[pc->num_blocks++] = b; |