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.  */

Reply via email to