re PR tree-optimization/68906 (ICE at -O3 on x86_64-linux-gnu: verify_ssa failed)
gcc/ 2015-12-18 Yuri Rumyantsev <ysrumyan@gmail.com> PR tree-optimization/68906 * tree-ssa-loop-unswitch.c (tree_unswitch_outer_loop): Add check that an exit block belongs to LOOP. gcc/testsuite/ 2015-12-18 Yuri Rumyantsev <ysrumyan@gmail.com> PR tree-optimization/68906 * gcc.dg/torture/pr68906.c: New test. From-SVN: r231812
This commit is contained in:
parent
b3d51f238b
commit
5c846df71f
|
@ -1,3 +1,9 @@
|
|||
2015-12-18 Yuri Rumyantsev <ysrumyan@gmail.com>
|
||||
|
||||
PR tree-optimization/68906
|
||||
* tree-ssa-loop-unswitch.c (tree_unswitch_outer_loop): Add check
|
||||
that an exit block belongs to LOOP.
|
||||
|
||||
2015-12-18 Ilya Enkovich <enkovich.gnu@gmail.com>
|
||||
|
||||
PR tree-optimization/68956
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2015-12-18 Yuri Rumyantsev <ysrumyan@gmail.com>
|
||||
|
||||
PR tree-optimization/68906
|
||||
* gcc.dg/torture/pr68906.c: New test.
|
||||
|
||||
2015-12-18 Ilya Enkovich <enkovich.gnu@gmail.com>
|
||||
|
||||
PR tree-optimization/68956
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3" } */
|
||||
|
||||
int a;
|
||||
volatile int b;
|
||||
short c, d;
|
||||
int
|
||||
fn1 ()
|
||||
{
|
||||
int e;
|
||||
for (;;)
|
||||
{
|
||||
a = 3;
|
||||
if (c)
|
||||
continue;
|
||||
e = 0;
|
||||
for (; e > -30; e--)
|
||||
if (b)
|
||||
{
|
||||
int f = e;
|
||||
return d;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -429,9 +429,9 @@ tree_unswitch_outer_loop (struct loop *loop)
|
|||
gcc_assert (loop->inner);
|
||||
if (loop->inner->next)
|
||||
return false;
|
||||
/* Accept loops with single exit only. */
|
||||
/* Accept loops with single exit only which is not from inner loop. */
|
||||
exit = single_exit (loop);
|
||||
if (!exit)
|
||||
if (!exit || exit->src->loop_father != loop)
|
||||
return false;
|
||||
/* Check that phi argument of exit edge is not defined inside loop. */
|
||||
if (!check_exit_phi (loop))
|
||||
|
|
Loading…
Reference in New Issue