Commit 2b9d5ad7 by Alexandre Oliva Committed by Alexandre Oliva

re PR debug/53820 (ICE in vt_expand_var_loc_chain, at var-tracking.c:8029)

PR debug/53820
* var-tracking.c (vt_add_function_parameter): Convert
internal_arg_pointer into arg_pointer-based address even
without DRAP.

From-SVN: r189326
parent fe8fb1c4
2012-07-06 Alexandre Oliva <aoliva@redhat.com>
PR debug/53820
* var-tracking.c (vt_add_function_parameter): Convert
internal_arg_pointer into arg_pointer-based address even
without DRAP.
2012-07-06 Alexandre Oilva <aoliva@redhat.com> 2012-07-06 Alexandre Oilva <aoliva@redhat.com>
PR rtl-optimization/53827 PR rtl-optimization/53827
......
...@@ -9327,14 +9327,11 @@ vt_add_function_parameter (tree parm) ...@@ -9327,14 +9327,11 @@ vt_add_function_parameter (tree parm)
if (GET_MODE (decl_rtl) == BLKmode || GET_MODE (incoming) == BLKmode) if (GET_MODE (decl_rtl) == BLKmode || GET_MODE (incoming) == BLKmode)
return; return;
/* If there is a DRAP register, rewrite the incoming location of parameters /* If there is a DRAP register or a pseudo in internal_arg_pointer,
passed on the stack into MEMs based on the argument pointer, as the DRAP rewrite the incoming location of parameters passed on the stack
register can be reused for other purposes and we do not track locations into MEMs based on the argument pointer, so that incoming doesn't
based on generic registers. But the prerequisite is that this argument depend on a pseudo. */
pointer be also the virtual CFA pointer, see vt_initialize. */
if (MEM_P (incoming) if (MEM_P (incoming)
&& stack_realign_drap
&& arg_pointer_rtx == cfa_base_rtx
&& (XEXP (incoming, 0) == crtl->args.internal_arg_pointer && (XEXP (incoming, 0) == crtl->args.internal_arg_pointer
|| (GET_CODE (XEXP (incoming, 0)) == PLUS || (GET_CODE (XEXP (incoming, 0)) == PLUS
&& XEXP (XEXP (incoming, 0), 0) && XEXP (XEXP (incoming, 0), 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment