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

Reply via email to