aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2012-06-26 20:33:32 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2012-06-26 20:33:32 +0000
commitde2c775d6602860eb235bf0da5171cb2e4bdd305 (patch)
tree06e0c257d326fe0d68b2efc38267a1f3ef9be00a
parent2ef1bce664881cd59dac7db6c3f3b5709d858bfe (diff)
downloadgcc-de2c775d6602860eb235bf0da5171cb2e4bdd305.zip
gcc-de2c775d6602860eb235bf0da5171cb2e4bdd305.tar.gz
gcc-de2c775d6602860eb235bf0da5171cb2e4bdd305.tar.bz2
var-tracking.c (vt_add_function_parameter): Use a preserved VALUE for the MEM address of an incoming parameter.
* var-tracking.c (vt_add_function_parameter): Use a preserved VALUE for the MEM address of an incoming parameter. From-SVN: r188998
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/var-tracking.c11
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 33114ed..307a315 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 419269f..be638d7 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -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))