mirror of git://gcc.gnu.org/git/gcc.git
re PR rtl-optimization/61058 (ICE: RTL check: expected elt 3 type 'B', have '0' (rtx barrier) in distance_agu_use_in_bb, at config/i386/i386.c:16740 with __builtin_unreachable())
PR rtl-optimization/61058 * jump.c (cleanup_barriers): Update basic block boundaries if BLOCK_FOR_INSN is non-NULL on PREV. * gcc.dg/pr61058.c: New test. From-SVN: r220155
This commit is contained in:
parent
3dd598be88
commit
6d71672db6
|
|
@ -1,3 +1,9 @@
|
||||||
|
2015-01-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR rtl-optimization/61058
|
||||||
|
* jump.c (cleanup_barriers): Update basic block boundaries
|
||||||
|
if BLOCK_FOR_INSN is non-NULL on PREV.
|
||||||
|
|
||||||
2015-01-27 Ilya Enkovich <ilya.enkovich@intel.com>
|
2015-01-27 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||||
|
|
||||||
* tree-chkp.c (chkp_call_returns_bounds_p): Fix handling of
|
* tree-chkp.c (chkp_call_returns_bounds_p): Fix handling of
|
||||||
|
|
|
||||||
23
gcc/jump.c
23
gcc/jump.c
|
|
@ -168,7 +168,30 @@ cleanup_barriers (void)
|
||||||
if (BARRIER_P (prev))
|
if (BARRIER_P (prev))
|
||||||
delete_insn (insn);
|
delete_insn (insn);
|
||||||
else if (prev != PREV_INSN (insn))
|
else if (prev != PREV_INSN (insn))
|
||||||
|
{
|
||||||
|
basic_block bb = BLOCK_FOR_INSN (prev);
|
||||||
|
rtx_insn *end = PREV_INSN (insn);
|
||||||
reorder_insns_nobb (insn, insn, prev);
|
reorder_insns_nobb (insn, insn, prev);
|
||||||
|
if (bb)
|
||||||
|
{
|
||||||
|
/* If the backend called in machine reorg compute_bb_for_insn
|
||||||
|
and didn't free_bb_for_insn again, preserve basic block
|
||||||
|
boundaries. Move the end of basic block to PREV since
|
||||||
|
it is followed by a barrier now, and clear BLOCK_FOR_INSN
|
||||||
|
on the following notes.
|
||||||
|
??? Maybe the proper solution for the targets that have
|
||||||
|
cfg around after machine reorg is not to run cleanup_barriers
|
||||||
|
pass at all. */
|
||||||
|
BB_END (bb) = prev;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
prev = NEXT_INSN (prev);
|
||||||
|
if (prev != insn && BLOCK_FOR_INSN (prev) == bb)
|
||||||
|
BLOCK_FOR_INSN (prev) = NULL;
|
||||||
|
}
|
||||||
|
while (prev != end);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2015-01-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR rtl-optimization/61058
|
||||||
|
* gcc.dg/pr61058.c: New test.
|
||||||
|
|
||||||
2015-01-27 Ilya Enkovich <ilya.enkovich@intel.com>
|
2015-01-27 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||||
|
|
||||||
* gcc.target/i386/chkp-narrow-bounds.c: New.
|
* gcc.target/i386/chkp-narrow-bounds.c: New.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
/* PR rtl-optimization/61058 */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "" } */
|
||||||
|
/* { dg-additional-options "-fno-asynchronous-unwind-tables -mtune=atom" { target i?86-*-* x86_64-*-* } } */
|
||||||
|
|
||||||
|
void
|
||||||
|
foo (void)
|
||||||
|
{
|
||||||
|
__builtin_unreachable ();
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue