if (!state->error && !shader->ir->is_empty()) {
bool progress;
do {
- progress = false;
-
- progress = do_function_inlining(shader->ir) || progress;
- progress = do_if_simplification(shader->ir) || progress;
- progress = do_copy_propagation(shader->ir) || progress;
- progress = do_dead_code_local(shader->ir) || progress;
- progress = do_dead_code_unlinked(shader->ir) || progress;
- progress = do_tree_grafting(shader->ir) || progress;
- progress = do_constant_propagation(shader->ir) || progress;
- progress = do_constant_variable_unlinked(shader->ir) || progress;
- progress = do_constant_folding(shader->ir) || progress;
- progress = do_algebraic(shader->ir) || progress;
- progress = do_vec_index_to_swizzle(shader->ir) || progress;
- progress = do_vec_index_to_cond_assign(shader->ir) || progress;
- progress = do_swizzle_swizzle(shader->ir) || progress;
-
- loop_state *ls = analyze_loop_variables(shader->ir);
- progress = set_loop_controls(shader->ir, ls) || progress;
- progress = unroll_loops(shader->ir, ls, 32) || progress;
- delete ls;
+ progress = do_common_optimization(shader->ir, false, 32);
} while (progress);
validate_ir_tree(shader->ir);