r300/compiler: Don't continue copy propagation inside loops.
authorTom Stellard <tstellar@gmail.com>
Sat, 19 Jun 2010 03:42:33 +0000 (20:42 -0700)
committerMarek Olšák <maraeo@gmail.com>
Sat, 3 Jul 2010 02:27:09 +0000 (04:27 +0200)
src/mesa/drivers/dri/r300/compiler/radeon_optimize.c

index e760b59bd41432e8972040bd43b7d0e557f27c42..eca065153678f7e58c174ae33ecba82c3c2fd7cc 100644 (file)
@@ -162,6 +162,11 @@ static void peephole(struct radeon_compiler * c, struct rc_instruction * inst_mo
        for(struct rc_instruction * inst = inst_mov->Next;
            inst != &c->Program.Instructions;
            inst = inst->Next) {
+               /* XXX In the future we might be able to make the optimizer
+                * smart enough to handle loops. */
+               if(inst->U.I.Opcode == RC_OPCODE_BGNLOOP){
+                       return;
+               }
                rc_for_all_reads_mask(inst, peephole_scan_read, &s);
                rc_for_all_writes_mask(inst, peephole_scan_write, &s);
                if (s.Conflict)