]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Always add REG_CALL_DECL note for CALL
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 2 Jun 2025 21:56:37 +0000 (05:56 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 4 Jun 2025 04:58:15 +0000 (12:58 +0800)
Always add REG_CALL_DECL note for CALL so that get_call_fndecl works
without -fipa-ra.

PR other/120494
* calls.cc (expand_call): Always add REG_CALL_DECL note.
(emit_library_call_value_1): Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
gcc/calls.cc

index 164f3c515d95a45b4081a1345bb72e5f8cf066d7..e16190c12a6354b40955ebde70665e6f6cf6f1a5 100644 (file)
@@ -3736,19 +3736,16 @@ expand_call (tree exp, rtx target, int ignore)
                   next_arg_reg, valreg, old_inhibit_defer_pop, call_fusage,
                   flags, args_so_far);
 
-      if (flag_ipa_ra)
+      rtx_call_insn *last;
+      rtx datum = NULL_RTX;
+      if (fndecl != NULL_TREE)
        {
-         rtx_call_insn *last;
-         rtx datum = NULL_RTX;
-         if (fndecl != NULL_TREE)
-           {
-             datum = XEXP (DECL_RTL (fndecl), 0);
-             gcc_assert (datum != NULL_RTX
-                         && GET_CODE (datum) == SYMBOL_REF);
-           }
-         last = last_call_insn ();
-         add_reg_note (last, REG_CALL_DECL, datum);
+         datum = XEXP (DECL_RTL (fndecl), 0);
+         gcc_assert (datum != NULL_RTX
+                     && GET_CODE (datum) == SYMBOL_REF);
        }
+      last = last_call_insn ();
+      add_reg_note (last, REG_CALL_DECL, datum);
 
       /* If the call setup or the call itself overlaps with anything
         of the argument setup we probably clobbered our call address.
@@ -4804,13 +4801,10 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
               struct_value_size, call_cookie, valreg,
               old_inhibit_defer_pop + 1, call_fusage, flags, args_so_far);
 
-  if (flag_ipa_ra)
-    {
-      rtx datum = orgfun;
-      gcc_assert (GET_CODE (datum) == SYMBOL_REF);
-      rtx_call_insn *last = last_call_insn ();
-      add_reg_note (last, REG_CALL_DECL, datum);
-    }
+  rtx datum = orgfun;
+  gcc_assert (GET_CODE (datum) == SYMBOL_REF);
+  rtx_call_insn *last = last_call_insn ();
+  add_reg_note (last, REG_CALL_DECL, datum);
 
   /* Right-shift returned value if necessary.  */
   if (!pcc_struct_value