diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2accb758de0ece598fa37b605294d89f920179c..ebd19f7a06fcff79d2f66808233d60b8142c421c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-02-26 Marek Polacek <polacek@redhat.com> + + PR tree-optimization/56426 + * tree-ssa-loop.c (tree_ssa_loop_init): Always call + scev_initialize. + 2013-02-26 Richard Biener <rguenther@suse.de> PR target/56444 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1da7b6fe03a30df173d82d84f1a67e2b9f1296e8..9f00b8708c29b17217e12d5638f1a56313870757 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-26 Marek Polacek <polacek@redhat.com> + + PR tree-optimization/56426 + * gcc.dg/pr56436.c: New test. + 2013-02-26 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/56448 diff --git a/gcc/testsuite/gcc.dg/pr56436.c b/gcc/testsuite/gcc.dg/pr56436.c new file mode 100644 index 0000000000000000000000000000000000000000..cae4d2a4bd291c650952cdb175280bdbe510c7bc --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr56436.c @@ -0,0 +1,22 @@ +/* PR tree-optimization/56426 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int a, *c; + +void +f (void) +{ + int b = 0; + + for (a = 0;; a++) + if (--b) + { + if (a) + lbl: + a++; + + c = &b; + goto lbl; + } +} diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index f4a270461236fa73dcb5030ef459e3c969f80ec0..edc04eaa014964d81f73d4a43101e1312215edf9 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -70,10 +70,13 @@ tree_ssa_loop_init (void) | LOOPS_HAVE_RECORDED_EXITS); rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); + /* We might discover new loops, e.g. when turning irreducible + regions into reducible. */ + scev_initialize (); + if (number_of_loops () <= 1) return 0; - scev_initialize (); return 0; }