Here's one more patch that addresses a problem I found out while investigating the PR53671 regressions: rather than recording incoming stack args as MEMs with non-VALUE expressions, it's more consistent (and less surprising) if we emit them as VALUE expressions, like other MEMs.
Regstrapped on x86_64-linux-gnu and i686-linux-gnu. Ok?
for gcc/ChangeLog from Alexandre Oliva <aol...@redhat.com> * var-tracking.c (vt_add_function_parameter): Use a preserved VALUE for the MEM address of an incoming parameter. Index: gcc/var-tracking.c =================================================================== --- gcc/var-tracking.c.orig 2012-06-21 22:26:01.341145372 -0300 +++ gcc/var-tracking.c 2012-06-21 22:26:09.644487877 -0300 @@ -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))
-- Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/ You must be the change you wish to see in the world. -- Gandhi Be Free! -- http://FSFLA.org/ FSF Latin America board member Free Software Evangelist Red Hat Brazil Compiler Engineer