From: Ian Romanick Date: Sat, 15 May 2010 00:36:00 +0000 (-0700) Subject: Use ir_rvalue::variable_referenced instead of open-coding it X-Git-Tag: 062012170305~10660^2~625^2~251 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5d82e239f98060c6de37f31f3900d84ee43aa4e5;p=profile%2Fivi%2Fmesa.git Use ir_rvalue::variable_referenced instead of open-coding it --- diff --git a/ir_copy_propagation.cpp b/ir_copy_propagation.cpp index 6c34652..aac12b3 100644 --- a/ir_copy_propagation.cpp +++ b/ir_copy_propagation.cpp @@ -234,32 +234,14 @@ propagate_copies(ir_instruction *ir, exec_list *acp) static void kill_invalidated_copies(ir_assignment *ir, exec_list *acp) { - ir_instruction *current = ir->lhs; + ir_variable *var = ir->lhs->variable_referenced(); + assert(var != NULL); - /* Walk down the dereference chain to find the variable at the end - * of it that we're actually modifying. - */ - while (current != NULL) { - ir_swizzle *swiz; - ir_dereference *deref; - - if ((swiz = current->as_swizzle())) { - current = swiz->val; - } else if ((deref = current->as_dereference())) { - current = deref->var; - } else { - ir_variable *var = current->as_variable(); - assert(var); - - foreach_iter(exec_list_iterator, iter, *acp) { - acp_entry *entry = (acp_entry *)iter.get(); - - if (entry->lhs == var || entry->rhs == var) { - entry->remove(); - } - } - current = NULL; - break; + foreach_iter(exec_list_iterator, iter, *acp) { + acp_entry *entry = (acp_entry *)iter.get(); + + if (entry->lhs == var || entry->rhs == var) { + entry->remove(); } } }