[patch] Fix var-tracking with dynamic stack realignment on x86

Eric Botcazou ebotcazou@adacore.com
Sun May 29 16:14:00 GMT 2011


> Here is an alternative, almost completely untested, patch, which
> uses DW_OP_fbreg <N> for the arguments of dynamically realigned functions.
> draptest.c now works...

I've attached a slightly revamped, IMO easier to understand version.  Stack 
realignment with DRAP is quite seldom on the mainline (because everything is 
ACCUMULATE_OUTGOING_ARGS now) so I don't think this will make any difference 
in practice.  Tested on i586 and x86-64.


	* var-tracking.c (vt_add_function_parameter): Remap incoming MEMs with
	crtl->args.internal_arg_pointer based address to arg_pointer_rtx if
	there is a DRAP register.
	(vt_init_cfa_base): Don't equate cfa_base_rtx if stack was realigned.
	(vt_initialize): Initialize cfa_base_rtx if there is a DRAP register.


-- 
Eric Botcazou
-------------- next part --------------
A non-text attachment was scrubbed...
Name: var-tracking.diff
Type: text/x-diff
Size: 2938 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20110529/a60883a5/attachment.bin>


More information about the Gcc-patches mailing list