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>
|
||||
|
||||
* tree-chkp.c (chkp_call_returns_bounds_p): Fix handling of
|
||||
|
|
|
|||
25
gcc/jump.c
25
gcc/jump.c
|
|
@ -168,7 +168,30 @@ cleanup_barriers (void)
|
|||
if (BARRIER_P (prev))
|
||||
delete_insn (insn);
|
||||
else if (prev != PREV_INSN (insn))
|
||||
reorder_insns_nobb (insn, insn, prev);
|
||||
{
|
||||
basic_block bb = BLOCK_FOR_INSN (prev);
|
||||
rtx_insn *end = PREV_INSN (insn);
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
* 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