Commit 2a58c802 by Richard Biener Committed by Richard Biener

re PR tree-optimization/64357 (ICE at -Os on x86_64-linux-gnu in…

re PR tree-optimization/64357 (ICE at -Os on x86_64-linux-gnu in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:579)

2015-01-12  Richard Biener  <rguenther@suse.de>

	PR middle-end/64357
	* tree-cfg.c (gimple_can_merge_blocks_p): Protect simple
	latches properly.

	* gcc.dg/torture/pr64357.c: New testcase.

From-SVN: r219473
parent 82ac9e41
2015-01-12 Richard Biener <rguenther@suse.de>
PR middle-end/64357
* tree-cfg.c (gimple_can_merge_blocks_p): Protect simple
latches properly.
2015-01-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.c (arm_cortex_a12_tune): Update entries to match
......
2015-01-12 Richard Biener <rguenther@suse.de>
PR middle-end/64357
* gcc.dg/torture/pr64357.c: New testcase.
2015-01-12 H.J. Lu <hongjiu.lu@intel.com>
* gcc.target/i386/nop-mcount.c: Properly place {} in target
......
/* { dg-do compile } */
int a, b, c, d, e, f;
long long
fn1 (int p)
{
return p ? p : 1;
}
static int
fn2 ()
{
lbl:
for (; f;)
return 0;
for (;;)
{
for (b = 0; b; ++b)
if (d)
goto lbl;
c = e;
}
}
void
fn3 ()
{
for (; a; a = fn1 (a))
{
fn2 ();
e = 0;
}
}
......@@ -1723,11 +1723,13 @@ gimple_can_merge_blocks_p (basic_block a, basic_block b)
}
/* Protect simple loop latches. We only want to avoid merging
the latch with the loop header in this case. */
the latch with the loop header or with a block in another
loop in this case. */
if (current_loops
&& b->loop_father->latch == b
&& loops_state_satisfies_p (LOOPS_HAVE_SIMPLE_LATCHES)
&& b->loop_father->header == a)
&& (b->loop_father->header == a
|| b->loop_father != a->loop_father))
return false;
/* It must be possible to eliminate all phi nodes in B. If ssa form
......
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