summaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 4736f8d0dcc..e3fd0a5132b 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -3427,6 +3427,7 @@ try_split (rtx pat, rtx trial, int last)
int probability;
rtx insn_last, insn;
int njumps = 0;
+ rtx call_insn = NULL_RTX;
/* We're not good at redistributing frame information. */
if (RTX_FRAME_RELATED_P (trial))
@@ -3499,6 +3500,9 @@ try_split (rtx pat, rtx trial, int last)
{
rtx next, *p;
+ gcc_assert (call_insn == NULL_RTX);
+ call_insn = insn;
+
/* Add the old CALL_INSN_FUNCTION_USAGE to whatever the
target may have explicitly specified. */
p = &CALL_INSN_FUNCTION_USAGE (insn);
@@ -3571,6 +3575,11 @@ try_split (rtx pat, rtx trial, int last)
fixup_args_size_notes (NULL_RTX, insn_last, INTVAL (XEXP (note, 0)));
break;
+ case REG_CALL_DECL:
+ gcc_assert (call_insn != NULL_RTX);
+ add_reg_note (call_insn, REG_NOTE_KIND (note), XEXP (note, 0));
+ break;
+
default:
break;
}