OSDN Git Service

PR tree-optimization/31885
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 May 2007 21:33:11 +0000 (21:33 +0000)
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 May 2007 21:33:11 +0000 (21:33 +0000)
* tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
to be undetermined.
(automatically_generated_chrec_p): Return false for NULL.

* gcc.dg/tree-ssa/loop-29.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124602 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/loop-29.c [new file with mode: 0644]
gcc/tree-chrec.c
gcc/tree-chrec.h

index 7358111..40867e9 100644 (file)
@@ -1,3 +1,10 @@
+2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR tree-optimization/31885
+       * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
+       to be undetermined.
+       (automatically_generated_chrec_p): Return false for NULL.
+
 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
 
        * config/bfin/bfin.h (MOVE_RATIO): Define.
index 22bc7b7..c0e3d1e 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR tree-optimization/31885
+       * gcc.dg/tree-ssa/loop-29.c: New test.
+
 2007-05-10 Dominique d'Humières <dominiq@lps.ens.fr>
 
        * assumed_dummy_1.f90: Fix dg directive.
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-29.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-29.c
new file mode 100644 (file)
index 0000000..13699aa
--- /dev/null
@@ -0,0 +1,21 @@
+/* PR 31885 */
+
+/* { dg-do compile } */
+/* { dg-options "-O1 -fdump-tree-empty" } */
+
+struct s {
+    int *blah;
+};
+
+static struct s array[] = { { 0 } };
+
+void
+foo (struct s *p)
+{
+  struct s *q = &array[1];
+  while (p < q)
+    p++;
+}
+
+/* { dg-final { scan-tree-dump-times "Removing empty loop" 1 "empty" } } */
+/* { dg-final { cleanup-tree-dump "empty" } } */
index 119a35b..7abd5ad 100644 (file)
@@ -888,11 +888,12 @@ chrec_contains_undetermined (tree chrec)
 {
   int i, n;
 
-  if (chrec == chrec_dont_know
-      || chrec == chrec_not_analyzed_yet
-      || chrec == NULL_TREE)
+  if (chrec == chrec_dont_know)
     return true;
 
+  if (chrec == NULL_TREE)
+    return false;
+
   n = TREE_OPERAND_LENGTH (chrec);
   for (i = 0; i < n; i++)
     if (chrec_contains_undetermined (TREE_OPERAND (chrec, i)))
index 95c6f38..6be00d6 100644 (file)
@@ -36,8 +36,7 @@ extern GTY(()) tree chrec_known;
 static inline bool
 automatically_generated_chrec_p (tree chrec)
 {
-  return (chrec == chrec_not_analyzed_yet 
-         || chrec == chrec_dont_know
+  return (chrec == chrec_dont_know
          || chrec == chrec_known);
 }