glsl: Small optimization for constant conditionals

Once the relevant branch has been identified do not iterate over the
instructions in the branch, do a linked list insertion instead to avoid the
loop.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Iago Toral Quiroga
2014-04-15 12:30:40 +02:00
committed by Kenneth Graunke
parent 4472ab9e6d
commit cda5e0c25e

View File

@@ -90,15 +90,9 @@ ir_if_simplification_visitor::visit_leave(ir_if *ir)
* that matters out.
*/
if (condition_constant->value.b[0]) {
foreach_list_safe(n, &ir->then_instructions) {
ir_instruction *then_ir = (ir_instruction *) n;
ir->insert_before(then_ir);
}
ir->insert_before(&ir->then_instructions);
} else {
foreach_list_safe(n, &ir->else_instructions) {
ir_instruction *else_ir = (ir_instruction *) n;
ir->insert_before(else_ir);
}
ir->insert_before(&ir->else_instructions);
}
ir->remove();
this->made_progress = true;