diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2012-06-26 20:33:32 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2012-06-26 20:33:32 +0000 |
commit | de2c775d6602860eb235bf0da5171cb2e4bdd305 (patch) | |
tree | 06e0c257d326fe0d68b2efc38267a1f3ef9be00a | |
parent | 2ef1bce664881cd59dac7db6c3f3b5709d858bfe (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/var-tracking.c | 11 |
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)) |