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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user