We have two Graphite related release blockers for 4.7.  The
following patch fixes the first one.

The asserts in

static inline ppl_dimension_type
psct_dynamic_dim (poly_bb_p pbb, graphite_dim_t level)
{
  graphite_dim_t result = 1 + 2 * level;

  gcc_assert (result < pbb_nb_scattering_transform (pbb));
  return result;
}

static inline ppl_dimension_type
psct_static_dim (poly_bb_p pbb, graphite_dim_t level)
{
  graphite_dim_t result = 2 * level;

  gcc_assert (result < pbb_nb_scattering_transform (pbb));
  return result;
}

are not consistent in case both a dynamic and static dimension should
always exist at the same time.  Changing psct_dynamic_dim to use <=
fixes the issue.

Tobias, you are the only active(?) Graphite reviewer left.

Ok?

Thanks,
Richard.

2012-01-09  Richard Guenther  <rguent...@suse.de>

        PR tree-optimization/50561
        * graphite-poly.h (psct_dynamic_dim): Fix assert.

        * gcc.dg/graphite/pr50561.c: New testcase.

Index: gcc/graphite-poly.h
===================================================================
--- gcc/graphite-poly.h (revision 183013)
+++ gcc/graphite-poly.h (working copy)
@@ -656,7 +656,7 @@ psct_dynamic_dim (poly_bb_p pbb, graphit
 {
   graphite_dim_t result = 1 + 2 * level;
 
-  gcc_assert (result < pbb_nb_scattering_transform (pbb));
+  gcc_assert (result <= pbb_nb_scattering_transform (pbb));
   return result;
 }
 
Index: gcc/testsuite/gcc.dg/graphite/pr50561.c
===================================================================
--- gcc/testsuite/gcc.dg/graphite/pr50561.c     (revision 0)
+++ gcc/testsuite/gcc.dg/graphite/pr50561.c     (revision 0)
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-flatten -floop-strip-mine" } */
+
+void f (unsigned *s)
+{
+  int n;
+  for (n = 0; n < 256; n++)
+    s[n] = 0;
+}

Reply via email to