Only one caller (in dwarf2out.c) was preventing get_call_rtx_from from taking an rtx_insn *. Since that caller just passes a PATTERN, it's a trivial change to make.
Tested on aarch64-linux-gnu and x86_64-linux-gnu, applied as obvious. Richard 2019-09-10 Richard Sandiford <richard.sandif...@arm.com> gcc/ * rtl.h (get_call_rtx_from): Take a const rtx_insn * instead of an rtx. * rtlanal.c (get_call_rtx_from): Likewise. * dwarf2out.c (dwarf2out_var_location): Pass the insn rather than the pattern to get_call_rtx_from. * config/i386/i386-expand.h (ix86_notrack_prefixed_insn_p): Take an rtx_insn * instead of an rtx. * config/i386/i386-expand.c (ix86_notrack_prefixed_insn_p): Likewise. Index: gcc/rtl.h =================================================================== --- gcc/rtl.h 2019-09-09 18:58:51.476270683 +0100 +++ gcc/rtl.h 2019-09-10 17:18:51.156043937 +0100 @@ -3419,7 +3419,7 @@ extern bool nonzero_address_p (const_rtx extern int rtx_unstable_p (const_rtx); extern bool rtx_varies_p (const_rtx, bool); extern bool rtx_addr_varies_p (const_rtx, bool); -extern rtx get_call_rtx_from (rtx); +extern rtx get_call_rtx_from (const rtx_insn *); extern HOST_WIDE_INT get_integer_term (const_rtx); extern rtx get_related_value (const_rtx); extern bool offset_within_block_p (const_rtx, HOST_WIDE_INT); Index: gcc/rtlanal.c =================================================================== --- gcc/rtlanal.c 2019-09-09 18:59:15.996097565 +0100 +++ gcc/rtlanal.c 2019-09-10 17:18:51.164043880 +0100 @@ -811,10 +811,9 @@ rtx_addr_varies_p (const_rtx x, bool for /* Return the CALL in X if there is one. */ rtx -get_call_rtx_from (rtx x) +get_call_rtx_from (const rtx_insn *insn) { - if (INSN_P (x)) - x = PATTERN (x); + rtx x = PATTERN (insn); if (GET_CODE (x) == PARALLEL) x = XVECEXP (x, 0, 0); if (GET_CODE (x) == SET) Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c 2019-09-10 17:18:39.852122587 +0100 +++ gcc/dwarf2out.c 2019-09-10 17:18:51.156043937 +0100 @@ -27505,7 +27505,7 @@ dwarf2out_var_location (rtx_insn *loc_no ca_loc->tail_call_p = SIBLING_CALL_P (prev); /* Look for a SYMBOL_REF in the "prev" instruction. */ - rtx x = get_call_rtx_from (PATTERN (prev)); + rtx x = get_call_rtx_from (prev); if (x) { /* Try to get the call symbol, if any. */ Index: gcc/config/i386/i386-expand.h =================================================================== --- gcc/config/i386/i386-expand.h 2019-05-12 12:25:17.450265496 +0100 +++ gcc/config/i386/i386-expand.h 2019-09-10 17:18:51.152043965 +0100 @@ -50,7 +50,7 @@ rtx ix86_expand_builtin (tree exp, rtx t machine_mode mode, int ignore); bool ix86_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0, rtx op1, const vec_perm_indices &sel); -bool ix86_notrack_prefixed_insn_p (rtx insn); +bool ix86_notrack_prefixed_insn_p (rtx_insn *); machine_mode ix86_split_reduction (machine_mode mode); void ix86_expand_divmod_libfunc (rtx libfunc, machine_mode mode, rtx op0, rtx op1, rtx *quot_p, rtx *rem_p); Index: gcc/config/i386/i386-expand.c =================================================================== --- gcc/config/i386/i386-expand.c 2019-09-05 08:49:30.985738504 +0100 +++ gcc/config/i386/i386-expand.c 2019-09-10 17:18:51.152043965 +0100 @@ -19969,7 +19969,7 @@ ix86_expand_sse2_mulvxdi3 (rtx op0, rtx should be encoded with notrack prefix. */ bool -ix86_notrack_prefixed_insn_p (rtx insn) +ix86_notrack_prefixed_insn_p (rtx_insn *insn) { if (!insn || !((flag_cf_protection & CF_BRANCH))) return false;