glsl: If an "if" has no "then" or "else" code left, remove it.

Cuts 8/1068 instructions from glyphy's fragment shaders on i965.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Eric Anholt
2012-03-16 15:44:25 -07:00
parent 8bb0091e68
commit 3f349d4e18
+8
View File
@@ -66,6 +66,14 @@ do_if_simplification(exec_list *instructions)
ir_visitor_status
ir_if_simplification_visitor::visit_leave(ir_if *ir)
{
/* If the if statement has nothing on either side, remove it. */
if (ir->then_instructions.is_empty() &&
ir->else_instructions.is_empty()) {
ir->remove();
this->made_progress = true;
return visit_continue;
}
/* FINISHME: Ideally there would be a way to note that the condition results
* FINISHME: in a constant before processing both of the other subtrees.
* FINISHME: This can probably be done with some flags, but it would take