[PATCH] Use gimple_call_fntype rather than gimple_call_fndecl in pass_return_slot::execute
Kito Cheng
kito.cheng@sifive.com
Thu Aug 14 15:54:54 GMT 2025
I guess I should mention why I fixed it. I am implementing some
calling convention stuff on RISC-V, and that fndecl will be passed
into TARGET_FUNCTION_VALUE. However, we need fndecl to determine which
calling convention is being used.
Of course, I could add a check to filter out cases when
fn_decl_or_type is NULL, but I found that it can actually be obtained
correctly, and this is the place to fix it.
On Thu, Aug 14, 2025 at 5:30 PM Kito Cheng <kito.cheng@sifive.com> wrote:
>
> Call with funciton pointer might not able to get the fndecl, but fntype
> so use gimple_call_fntype instead of gimple_call_fndecl.
>
> aggregate_value_p can handle fndecl and fntype right (and even CALL_EXPR), so I
> think this change is safe.
>
> gcc/ChangeLog:
>
> * tree-nrv.cc (pass_return_slot::execute): Use
> gimple_call_fntype instead of gimple_call_fndecl.
> ---
> gcc/tree-nrv.cc | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/tree-nrv.cc b/gcc/tree-nrv.cc
> index 3be97afb319..9b514b7e70b 100644
> --- a/gcc/tree-nrv.cc
> +++ b/gcc/tree-nrv.cc
> @@ -385,7 +385,7 @@ pass_return_slot::execute (function *fun)
> undesirable warnings with some backends. */
> && !gimple_call_internal_p (stmt)
> && aggregate_value_p (TREE_TYPE (gimple_call_lhs (stmt)),
> - gimple_call_fndecl (stmt)))
> + gimple_call_fntype (stmt)))
> {
> /* Check if the location being assigned to is
> clobbered by the call. */
> --
> 2.34.1
>
More information about the Gcc-patches
mailing list