Le 2025-06-29 à 10 h 46, Andrew Pinski a écrit :
On Sun, Jun 29, 2025, 7:43 AM Andrew Pinski <pins...@gmail.com
<mailto:pins...@gmail.com>> wrote:
On Sun, Jun 29, 2025, 7:36 AM Antoni Boucher via Gcc
<gcc@gcc.gnu.org <mailto:gcc@gcc.gnu.org>> wrote:
Hi.
Is there a way in GENERIC to specify that a parameter will be
passed in
"sret", or is this solely controlled by the hook struct_value_rtx?
It is only controlled by the hook.
What exactly are trying to do?
You could set the return slot optimization bit on the call
expression if you want the lhs of a call not to be copied and just
passed as the address via sret.
I'm trying to follow the Rust ABI for rustc_codegen_gcc: they manually
specify whether a param is "sret".
That is if you have:
StructVar = func(...);
You set the return slot optimization bit on the call expr in generic
and which will copy that bit to the gimple GIMPLE_CALL and then
during expand will again copy it back to the generic call_expr and
expand will use the target for the address.
CALL_EXPR_RETURN_SLOT_OPT is the macro.
Is this a guaranteed optimization? I'm asking because this is for ABI
correctness and I need a solution that will always work.
If not, would there be another way to do this?
Thanks.
Is that what you are looking for?
Thanks,
Andrew
Thanks.