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:
parent
c13e978820
commit
9427422dda
2 changed files with 19 additions and 1 deletions
|
@ -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
|
||||
|
|
15
gcc/reorg.c
15
gcc/reorg.c
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue