diff options
author | Richard Biener <rguenther@suse.de> | 2012-12-14 12:57:27 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-12-14 12:57:27 +0000 |
commit | 105e8c0682d220f6abc7320ff1ae05e20136080a (patch) | |
tree | 1c18ce1a21b86a0c0df9bba3c2f10bf533617381 /gcc | |
parent | 6d9d886cd61e3cf11bcc72546938b32dc03d8a76 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr55687.c | 29 | ||||
-rw-r--r-- | gcc/tree-chrec.h | 2 |
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; } |