https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118615
--- Comment #31 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Do you have a testcase where something behaves incorrectly?
For JUMP_P, I don't understand how the current behavior could be a problem, how
is a JUMP_P as current_insn (and therefore implying before_p for
split_if_necessary -> split_reg) fundamentally different between normal current
insn and some conditional jump in between the current insn and the use? For
normal insn (i.e. !before_p) we'd insert before the next call which can be
after rather than before a JUMP_P in between.
For CALL_P we've already done first_call_insn = curr_insn; before
before_p = (JUMP_P (curr_insn)
|| (CALL_P (curr_insn) && reg->type ==
OP_IN));
if (NONDEBUG_INSN_P (curr_insn)
&& (! JUMP_P (curr_insn) || reg->type == OP_IN)
&& split_if_necessary (src_regno, reg->biggest_mode,
potential_reload_hard_regs,
before_p, curr_insn, max_uid))
and so in that case in split_reg first_call_insn == insn and so
BLOCK_FOR_INSN (first_call_insn) != BLOCK_FOR_INSN (insn)
will be false and so it behaves like older GCC versions.