aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2012-12-14 12:57:27 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-12-14 12:57:27 +0000
commit105e8c0682d220f6abc7320ff1ae05e20136080a (patch)
tree1c18ce1a21b86a0c0df9bba3c2f10bf533617381 /gcc
parent6d9d886cd61e3cf11bcc72546938b32dc03d8a76 (diff)
downloadgcc-105e8c0682d220f6abc7320ff1ae05e20136080a.zip
gcc-105e8c0682d220f6abc7320ff1ae05e20136080a.tar.gz
gcc-105e8c0682d220f6abc7320ff1ae05e20136080a.tar.bz2
re PR tree-optimization/55687 (ICE in hide_evolution_in_other_loops_than_loop, at tree-chrec.c:716)
2012-12-14 Richard Biener <rguenther@suse.de> PR tree-optimization/55687 * tree-chrec.h (no_evolution_in_loop_p): Properly use tree_contains_chrecs. * gcc.dg/torture/pr55687.c: New testcase. From-SVN: r194498
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr55687.c29
-rw-r--r--gcc/tree-chrec.h2
4 files changed, 41 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0dbf203..0f5b0af 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55687
+ * tree-chrec.h (no_evolution_in_loop_p): Properly use
+ tree_contains_chrecs.
+
2012-12-13 Richard Henderson <rth@redhat.com>
PR middle-end/55492
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e16352a..c8578bf4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55687
+ * gcc.dg/torture/pr55687.c: New testcase.
+
2012-12-13 Jakub Jelinek <jakub@redhat.com>
PR c++/55652
diff --git a/gcc/testsuite/gcc.dg/torture/pr55687.c b/gcc/testsuite/gcc.dg/torture/pr55687.c
new file mode 100644
index 0000000..1eab1a4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr55687.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+
+typedef struct _IO_FILE FILE;
+typedef short gshort;
+typedef struct _GString GString;
+
+extern char *fgets(char *, int, FILE *);
+
+void verbose_text_loop (void *data)
+{
+ FILE *dev_vcs;
+ char buf[81];
+ GString *buf_str;
+ gshort i, j;
+ while (1)
+ {
+ for (i = 1; i <= 7; i++)
+ {
+ while (fgets (buf, 81, dev_vcs))
+ {
+ for (j = 0; j < __builtin_strlen (buf); j++)
+ if (buf[j] != ' ')
+ break;
+ for (; j < __builtin_strlen (buf); j++)
+ g_string_append_c_inline (buf_str, buf[j]);
+ }
+ }
+ }
+}
diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h
index 6d61d5f..db3f3bf 100644
--- a/gcc/tree-chrec.h
+++ b/gcc/tree-chrec.h
@@ -117,7 +117,7 @@ no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
STRIP_NOPS (chrec);
scev = hide_evolution_in_other_loops_than_loop (chrec, loop_num);
- *res = !tree_is_chrec (scev);
+ *res = !tree_contains_chrecs (scev, NULL);
return true;
}