@Honza: PING^1 Martin
On 1/24/19 9:10 AM, Martin Liška wrote: > On 1/23/19 7:28 PM, Segher Boessenkool wrote: >> Hi Martin, >> >> On Wed, Jan 23, 2019 at 10:29:40AM +0100, Martin Liška wrote: >>> diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c >>> index 172bdf585d0..5dd316efb63 100644 >>> --- a/gcc/cfgrtl.c >>> +++ b/gcc/cfgrtl.c >>> @@ -4396,6 +4396,25 @@ cfg_layout_redirect_edge_and_branch (edge e, >>> basic_block dest) >>> "Removing crossing jump while redirecting edge form %i to >>> %i\n", >>> e->src->index, dest->index); >>> delete_insn (BB_END (src)); >>> + >>> + /* Unlink a BARRIER that can be still in BB_FOOTER. */ >>> + rtx_insn *insn = BB_FOOTER (src); >>> + while (insn != NULL_RTX && !BARRIER_P (insn)) >>> + insn = NEXT_INSN (insn); >>> + >>> + if (insn != NULL_RTX) >>> + { >>> + if (insn == BB_FOOTER (src)) >>> + BB_FOOTER (src) = NULL; >>> + else >>> + { >>> + if (PREV_INSN (insn)) >>> + SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn); >>> + if (NEXT_INSN (insn)) >>> + SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn); >>> + } >>> + } >> >> >> combine.c has nicer code to do this, in update_cfg_for_uncondjump. Split >> it out into some common routine? Something in cfgrtl.c I guess. > > Thanks Segher for the advice. I'll do it as soon as Honza will make a review > about the fundament of the patch. > > Martin > >> >> >> Segher >> >