From f1ad33546dc659604fd842520a9b4600cb966c75 Mon Sep 17 00:00:00 2001 From: Marek Polacek <polacek@redhat.com> Date: Tue, 26 Feb 2013 11:06:14 +0000 Subject: [PATCH] re PR tree-optimization/56426 (Segmentation fault in find_var_scev_info, at tree-scalar-evolution.c:358) 2013-02-26 Marek Polacek <polacek@redhat.com> PR tree-optimization/56426 * tree-ssa-loop.c (tree_ssa_loop_init): Always call scev_initialize. From-SVN: r196281 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr56436.c | 22 ++++++++++++++++++++++ gcc/tree-ssa-loop.c | 5 ++++- 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr56436.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2accb758de0..ebd19f7a06fc 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 1da7b6fe03a3..9f00b8708c29 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 000000000000..cae4d2a4bd29 --- /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 f4a270461236..edc04eaa0149 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; } -- GitLab