aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2013-02-26 11:06:14 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2013-02-26 11:06:14 +0000
commitf1ad33546dc659604fd842520a9b4600cb966c75 (patch)
treeccd71ce2f7e56ea2ce3d68f4e1c18658cf1c2ab6 /gcc
parenta6af0f4274cb0a94ccbe49b0fccebe99c6fd23f1 (diff)
downloadgcc-f1ad33546dc659604fd842520a9b4600cb966c75.zip
gcc-f1ad33546dc659604fd842520a9b4600cb966c75.tar.gz
gcc-f1ad33546dc659604fd842520a9b4600cb966c75.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr56436.c22
-rw-r--r--gcc/tree-ssa-loop.c5
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c2accb7..ebd19f7 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 1da7b6f..9f00b87 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 0000000..cae4d2a
--- /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 f4a2704..edc04ea 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;
}