re PR rtl-optimization/81025 (gcc ICE while building glibc for MIPS soft-float multi-lib variant)

PR rtl-optimization/81025
        * reorg.c (skip_consecutive_labels): Do not skip past a BARRIER.

From-SVN: r270129
This commit is contained in:
Jeff Law 2019-04-03 10:03:37 -06:00 committed by Jeff Law
parent c13e978820
commit 9427422dda
2 changed files with 19 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2019-04-03 Jeff Law <law@redhat.com>
PR rtl-optimization/81025
* reorg.c (skip_consecutive_labels): Do not skip past a BARRIER.
2019-04-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/84101

View file

@ -137,7 +137,20 @@ skip_consecutive_labels (rtx label_or_return)
rtx_insn *label = as_a <rtx_insn *> (label_or_return);
for (insn = label; insn != 0 && !INSN_P (insn); insn = NEXT_INSN (insn))
/* __builtin_unreachable can create a CODE_LABEL followed by a BARRIER.
Since reaching the CODE_LABEL is undefined behavior, we can return
any code label and we're OK at runtime.
However, if we return a CODE_LABEL which leads to a shrinked wrapped
epilogue, but the path does not have a prologue, then we will trip
a sanity check in the dwarf2 cfi code which wants to verify that
the CFIs are all the same on the traces leading to the epilogue.
So we explicitly disallow looking through BARRIERS here. */
for (insn = label;
insn != 0 && !INSN_P (insn) && !BARRIER_P (insn);
insn = NEXT_INSN (insn))
if (LABEL_P (insn))
label = insn;