This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Go closures for s390[x]


On 12/16/2014 09:05 AM, Dominik Vogt wrote:
>  	lm	%r6,%r15,48+24(%r11)
> +	.cfi_remember_state
> +	.cfi_restore 15
> +	.cfi_restore 14
> +	.cfi_restore 13
> +	.cfi_restore 12
> +	.cfi_restore 11
> +	.cfi_restore 10
> +	.cfi_restore 9
> +	.cfi_restore 8
> +	.cfi_restore 7
> +	.cfi_restore 6
> +	.cfi_def_cfa r15, 96
>  	br	%r4
> +	.cfi_restore_state
> +	# This nopr is necessary so that the .cfi instructions between the br
> +	# above and the label below get executed.  See execute_cfa_program() in
> +	# the Gcc source code, libgcc/unwind-dw2.c.
> +	nopr

I'm not really sure you need any of these restores, since the data is still on
the stack, unclobbered.  I think you'd really only need to reset the cfa here.

The nopr seems like a red herring.  I don't see why the < vs <= for
execute_cfa_program is relevant -- this is not following a call.

That said, I've got some followup patches to clean up more of the s390 backend
that I'll post in a moment.



r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]