* 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
+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.
+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.
--- /dev/null
+/* 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" } } */
{
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)))
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);
}