Use ir_rvalue::variable_referenced instead of open coding it
diff --git a/ir_dead_code.cpp b/ir_dead_code.cpp
index 20b791e..aa8ebf8 100644
--- a/ir_dead_code.cpp
+++ b/ir_dead_code.cpp
@@ -146,28 +146,8 @@
 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)