var-tracking.c (vt_add_function_parameter): Use a preserved VALUE for the MEM address...
authorAlexandre Oliva <aoliva@redhat.com>
Tue, 26 Jun 2012 20:33:32 +0000 (20:33 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Tue, 26 Jun 2012 20:33:32 +0000 (20:33 +0000)
* var-tracking.c (vt_add_function_parameter): Use a preserved
VALUE for the MEM address of an incoming parameter.

From-SVN: r188998

gcc/ChangeLog
gcc/var-tracking.c

index 33114ed..307a315 100644 (file)
@@ -1,3 +1,8 @@
+2012-06-26  Alexandre Oliva  <aoliva@redhat.com>
+
+       * var-tracking.c (vt_add_function_parameter): Use a preserved
+       VALUE for the MEM address of an incoming parameter.
+
 2012-06-26  Sterling Augustine <saugustine@google.com>
 
        * dwarf2out.c (output_pubnames): Add check for DW_TAG_enumerator.
index 419269f..be638d7 100644 (file)
@@ -9454,6 +9454,17 @@ vt_add_function_parameter (tree parm)
                             VAR_INIT_STATUS_INITIALIZED, NULL, INSERT);
          dv = dv_from_value (val->val_rtx);
        }
+
+      if (MEM_P (incoming))
+       {
+         val = cselib_lookup_from_insn (XEXP (incoming, 0), mode, true,
+                                        VOIDmode, get_insns ());
+         if (val)
+           {
+             preserve_value (val);
+             incoming = replace_equiv_address_nv (incoming, val->val_rtx);
+           }
+       }
     }
 
   if (REG_P (incoming))