Commit 3e129b5b by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/84960 (ICE in GIMPLE pass: isolate-paths)

	PR tree-optimization/84960
	* tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
	if it is ENTRY block, move them into single succ of ENTRY in that case.

	* gcc.c-torture/compile/pr84960.c: New test.

From-SVN: r258744
parent 535808fd
2018-03-21 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/84960
* tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
if it is ENTRY block, move them into single succ of ENTRY in that case.
2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/84811
......
2018-03-21 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/84960
* gcc.c-torture/compile/pr84960.c: New test.
2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/84811
......
/* PR tree-optimization/84960 */
/* { dg-do compile { target indirect_jumps } } */
void
foo (unsigned int a, float b, void *c)
{
lab:
if ((b - (a %= 0) < 1U) * -1U)
;
else
{
unsigned int f = a;
__builtin_unreachable ();
c = &&lab;
}
goto *c;
}
......@@ -2301,6 +2301,12 @@ remove_bb (basic_block bb)
}
new_bb = bb->prev_bb;
/* Don't move any labels into ENTRY block. */
if (new_bb == ENTRY_BLOCK_PTR_FOR_FN (cfun))
{
new_bb = single_succ (new_bb);
gcc_assert (new_bb != bb);
}
new_gsi = gsi_start_bb (new_bb);
gsi_remove (&i, false);
gsi_insert_before (&new_gsi, stmt, GSI_NEW_STMT);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment