Use ir_rvalue::variable_referenced instead of open coding it
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 18 May 2010 11:53:20 +0000 (13:53 +0200)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 18 May 2010 11:53:20 +0000 (13:53 +0200)
ir_dead_code.cpp

index 20b791e94ac76085dbc2110e0d45b973f5034cdf..aa8ebf8ad106745e3aa1deec3d217b2a32caa77a 100644 (file)
@@ -146,28 +146,8 @@ ir_dead_code_visitor::visit_leave(ir_dereference *ir)
 ir_visitor_status
 ir_dead_code_visitor::visit_leave(ir_assignment *ir)
 {
-   ir_instruction *lhs = ir->lhs;
-
-   /* Walk through the LHS and mark references for variables used in
-    * array indices but not for the assignment dereference.
-    */
-   while (lhs) {
-      if (lhs->as_variable())
-        break;
-
-      ir_dereference *deref = lhs->as_dereference();
-      if (deref) {
-        lhs = deref->var;
-      } else {
-        ir_swizzle *swiz = lhs->as_swizzle();
-
-        lhs = swiz->val;
-      }
-   }
-
-
    variable_entry *entry;
-   entry = this->get_variable_entry(lhs->as_variable());
+   entry = this->get_variable_entry(ir->lhs->variable_referenced());
    if (entry) {
       entry->assigned_count++;
       if (entry->assign == NULL)