https://gcc.gnu.org/g:5b60bb6dc70e7f94f9c9a8d7584981ecf0720641
commit r16-3210-g5b60bb6dc70e7f94f9c9a8d7584981ecf0720641 Author: Kito Cheng <kito.ch...@sifive.com> Date: Thu Aug 14 17:30:17 2025 +0800 Use gimple_call_fntype rather than gimple_call_fndecl in pass_return_slot::execute 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. Diff: --- 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 3be97afb319e..9b514b7e70b3 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. */