[PATCH 19/20] remove old data dependence analysis, xfail graphite-force-parallel

Sebastian Pop sebpop@gmail.com
Mon Aug 15 07:14:00 GMT 2011


---
 gcc/graphite-dependences.c                         |  585 +-------------------
 gcc/graphite-dependences.h                         |   39 +--
 gcc/graphite-poly.c                                |    3 -
 .../testsuite/libgomp.graphite/force-parallel-1.c  |    4 +-
 .../testsuite/libgomp.graphite/force-parallel-2.c  |    4 +-
 .../testsuite/libgomp.graphite/force-parallel-3.c  |    6 +-
 .../testsuite/libgomp.graphite/force-parallel-4.c  |    6 +-
 .../testsuite/libgomp.graphite/force-parallel-5.c  |    6 +-
 .../testsuite/libgomp.graphite/force-parallel-6.c  |    4 +-
 .../testsuite/libgomp.graphite/force-parallel-7.c  |    4 +-
 .../testsuite/libgomp.graphite/force-parallel-8.c  |    6 +-
 .../testsuite/libgomp.graphite/force-parallel-9.c  |    6 +-
 12 files changed, 30 insertions(+), 643 deletions(-)

diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c
index 02ed21f..5b7ffd6 100644
--- a/gcc/graphite-dependences.c
+++ b/gcc/graphite-dependences.c
@@ -47,526 +47,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "graphite-dependences.h"
 #include "graphite-cloog-util.h"
 
-/* Comparison function for poly_ddr hash table.  */
-
-int
-eq_poly_ddr_p (const void *pddr1, const void *pddr2)
-{
-  const struct poly_ddr *p1 = (const struct poly_ddr *) pddr1;
-  const struct poly_ddr *p2 = (const struct poly_ddr *) pddr2;
-
-  return (PDDR_SOURCE (p1) == PDDR_SOURCE (p2)
-          && PDDR_SINK (p1) == PDDR_SINK (p2));
-}
-
-/* Hash function for poly_ddr hashtable.  */
-
-hashval_t
-hash_poly_ddr_p (const void *pddr)
-{
-  const struct poly_ddr *p = (const struct poly_ddr *) pddr;
-
-  return (hashval_t) ((long) PDDR_SOURCE (p) + (long) PDDR_SINK (p));
-}
-
-/* Returns true when PDDR has no dependence.  */
-
-static bool
-pddr_is_empty (poly_ddr_p pddr)
-{
-  if (!pddr)
-    return true;
-
-  gcc_assert (PDDR_KIND (pddr) != unknown_dependence);
-
-  return PDDR_KIND (pddr) == no_dependence ? true : false;
-}
-
-/* Prints to FILE the layout of the dependence polyhedron of PDDR:
-
-   T1|I1|T2|I2|S1|S2|G
-
-   with
-   | T1 and T2 the scattering dimensions for PDDR_SOURCE and PDDR_SINK
-   | I1 and I2 the iteration domains
-   | S1 and S2 the subscripts
-   | G the global parameters.  */
-
-static void
-print_dependence_polyhedron_layout (FILE *file, poly_ddr_p pddr)
-{
-  poly_dr_p pdr1 = PDDR_SOURCE (pddr);
-  poly_dr_p pdr2 = PDDR_SINK (pddr);
-  poly_bb_p pbb1 = PDR_PBB (pdr1);
-  poly_bb_p pbb2 = PDR_PBB (pdr2);
-
-  graphite_dim_t i;
-  graphite_dim_t tdim1 = PDDR_ORIGINAL_SCATTERING_P (pddr) ?
-    pbb_nb_scattering_orig (pbb1) : pbb_nb_scattering_transform (pbb1);
-  graphite_dim_t tdim2 = PDDR_ORIGINAL_SCATTERING_P (pddr) ?
-    pbb_nb_scattering_orig (pbb2) : pbb_nb_scattering_transform (pbb2);
-  graphite_dim_t idim1 = pbb_dim_iter_domain (pbb1);
-  graphite_dim_t idim2 = pbb_dim_iter_domain (pbb2);
-  graphite_dim_t sdim1 = PDR_NB_SUBSCRIPTS (pdr1) + 1;
-  graphite_dim_t sdim2 = PDR_NB_SUBSCRIPTS (pdr2) + 1;
-  graphite_dim_t gdim = scop_nb_params (PBB_SCOP (pbb1));
-
-  fprintf (file, "#  eq");
-
-  for (i = 0; i < tdim1; i++)
-    fprintf (file, "   t1_%d", (int) i);
-  for (i = 0; i < idim1; i++)
-    fprintf (file, "   i1_%d", (int) i);
-  for (i = 0; i < tdim2; i++)
-    fprintf (file, "   t2_%d", (int) i);
-  for (i = 0; i < idim2; i++)
-    fprintf (file, "   i2_%d", (int) i);
-  for (i = 0; i < sdim1; i++)
-    fprintf (file, "   s1_%d", (int) i);
-  for (i = 0; i < sdim2; i++)
-    fprintf (file, "   s2_%d", (int) i);
-  for (i = 0; i < gdim; i++)
-    fprintf (file, "    g_%d", (int) i);
-
-  fprintf (file, "    cst\n");
-}
-
-/* Prints to FILE the poly_ddr_p PDDR.  */
-
-void
-print_pddr (FILE *file, poly_ddr_p pddr)
-{
-  fprintf (file, "pddr (kind: ");
-
-  if (PDDR_KIND (pddr) == unknown_dependence)
-    fprintf (file, "unknown_dependence");
-  else if (PDDR_KIND (pddr) == no_dependence)
-    fprintf (file, "no_dependence");
-  else if (PDDR_KIND (pddr) == has_dependence)
-    fprintf (file, "has_dependence");
-
-  fprintf (file, "\n  source ");
-  print_pdr (file, PDDR_SOURCE (pddr), 2);
-
-  fprintf (file, "\n  sink ");
-  print_pdr (file, PDDR_SINK (pddr), 2);
-
-  if (PDDR_KIND (pddr) == has_dependence)
-    {
-      fprintf (file, "\n  dependence polyhedron (\n");
-      print_dependence_polyhedron_layout (file, pddr);
-      ppl_print_powerset_matrix (file, PDDR_DDP (pddr));
-      ppl_io_fprint_Pointset_Powerset_C_Polyhedron (file, PDDR_DDP (pddr));
-      fprintf (file, ")\n");
-    }
-
-  fprintf (file, ")\n");
-}
-
-/* Prints to STDERR the poly_ddr_p PDDR.  */
-
-DEBUG_FUNCTION void
-debug_pddr (poly_ddr_p pddr)
-{
-  print_pddr (stderr, pddr);
-}
-
-
-/* Remove all the dimensions except alias information at dimension
-   ALIAS_DIM.  */
-
-static void
-build_alias_set_powerset (ppl_Pointset_Powerset_C_Polyhedron_t alias_powerset,
-			  ppl_dimension_type alias_dim)
-{
-  ppl_dimension_type *ds;
-  ppl_dimension_type access_dim;
-  unsigned i, pos;
-
-  ppl_Pointset_Powerset_C_Polyhedron_space_dimension (alias_powerset,
-						      &access_dim);
-  ds = XNEWVEC (ppl_dimension_type, access_dim - 1);
-  gcc_assert (alias_dim < access_dim);
-
-  for (pos = 0, i = 0; i < access_dim; i++)
-    if (i != alias_dim)
-      ds[pos++] = i;
-
-  ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions (alias_powerset,
-							      ds,
-							      access_dim - 1);
-  free (ds);
-}
-
-/* Return true when PDR1 and PDR2 may alias.  */
-
-static bool
-poly_drs_may_alias_p (poly_dr_p pdr1, poly_dr_p pdr2)
-{
-  ppl_Pointset_Powerset_C_Polyhedron_t alias_powerset1, alias_powerset2;
-  ppl_Pointset_Powerset_C_Polyhedron_t accesses1 = PDR_ACCESSES (pdr1);
-  ppl_Pointset_Powerset_C_Polyhedron_t accesses2 = PDR_ACCESSES (pdr2);
-  ppl_dimension_type alias_dim1 = pdr_alias_set_dim (pdr1);
-  ppl_dimension_type alias_dim2 = pdr_alias_set_dim (pdr2);
-  int empty_p;
-
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
-    (&alias_powerset1, accesses1);
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
-    (&alias_powerset2, accesses2);
-
-  build_alias_set_powerset (alias_powerset1, alias_dim1);
-  build_alias_set_powerset (alias_powerset2, alias_dim2);
-
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign
-    (alias_powerset1, alias_powerset2);
-
-  empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (alias_powerset1);
-
-  ppl_delete_Pointset_Powerset_C_Polyhedron (alias_powerset1);
-  ppl_delete_Pointset_Powerset_C_Polyhedron (alias_powerset2);
-
-  return !empty_p;
-}
-
-/* Swap [cut0, ..., cut1] to the end of DR: "a CUT0 b CUT1 c" is
-   transformed into "a CUT0 c CUT1' b"
-
-   Add NB0 zeros before "a":  "00...0 a CUT0 c CUT1' b"
-   Add NB1 zeros between "a" and "c":  "00...0 a 00...0 c CUT1' b"
-   Add DIM - NB0 - NB1 - PDIM zeros between "c" and "b":
-   "00...0 a 00...0 c 00...0 b".  */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-map_dr_into_dep_poly (graphite_dim_t dim,
-		      ppl_Pointset_Powerset_C_Polyhedron_t dr,
-		      graphite_dim_t cut0, graphite_dim_t cut1,
-		      graphite_dim_t nb0, graphite_dim_t nb1)
-{
-  ppl_dimension_type pdim;
-  ppl_dimension_type *map;
-  ppl_Pointset_Powerset_C_Polyhedron_t res;
-  ppl_dimension_type i;
-
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
-    (&res, dr);
-  ppl_Pointset_Powerset_C_Polyhedron_space_dimension (res, &pdim);
-
-  map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, pdim);
-
-  /* First mapping: move 'g' vector to right position.  */
-  for (i = 0; i < cut0; i++)
-    map[i] = i;
-
-  for (i = cut0; i < cut1; i++)
-    map[i] = pdim - cut1 + i;
-
-  for (i = cut1; i < pdim; i++)
-    map[i] = cut0 + i - cut1;
-
-  ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (res, map, pdim);
-  free (map);
-
-  /* After swapping 's' and 'g' vectors, we have to update a new cut.  */
-  cut1 = pdim - cut1 + cut0;
-
-  ppl_insert_dimensions_pointset (res, 0, nb0);
-  ppl_insert_dimensions_pointset (res, nb0 + cut0, nb1);
-  ppl_insert_dimensions_pointset (res, nb0 + nb1 + cut1,
-				  dim - nb0 - nb1 - pdim);
-
-  return res;
-}
-
-/* Builds subscript equality constraints.  */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-dr_equality_constraints (graphite_dim_t dim,
-		         graphite_dim_t pos, graphite_dim_t nb_subscripts)
-{
-  ppl_Polyhedron_t eqs;
-  ppl_Pointset_Powerset_C_Polyhedron_t res;
-  graphite_dim_t i;
-
-  ppl_new_C_Polyhedron_from_space_dimension (&eqs, dim, 0);
-
-  for (i = 0; i < nb_subscripts; i++)
-    {
-      ppl_Constraint_t cstr
-	= ppl_build_relation (dim, pos + i, pos + i + nb_subscripts,
-			      0, PPL_CONSTRAINT_TYPE_EQUAL);
-      ppl_Polyhedron_add_constraint (eqs, cstr);
-      ppl_delete_Constraint (cstr);
-    }
-
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, eqs);
-  ppl_delete_Polyhedron (eqs);
-  return res;
-}
-
-/* Builds scheduling inequality constraints: when DIRECTION is
-   1 builds a GE constraint,
-   0 builds an EQ constraint,
-   -1 builds a LE constraint.
-   DIM is the dimension of the scheduling space.
-   POS and POS + OFFSET are the dimensions that are related.  */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-build_pairwise_scheduling (graphite_dim_t dim,
-			   graphite_dim_t pos,
-			   graphite_dim_t offset,
-			   int direction)
-{
-  ppl_Pointset_Powerset_C_Polyhedron_t res;
-  ppl_Polyhedron_t equalities;
-  ppl_Constraint_t cstr;
-  graphite_dim_t a = pos;
-  graphite_dim_t b = pos + offset;
-
-  ppl_new_C_Polyhedron_from_space_dimension (&equalities, dim, 0);
-
-  switch (direction)
-    {
-    case 1:
-      /* Builds "a + 1 <= b.  */
-      cstr = ppl_build_relation (dim, a, b, 1,
-				 PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL);
-      break;
-
-    case 0:
-      /* Builds "a = b.  */
-      cstr = ppl_build_relation (dim, a, b, 0,
-				 PPL_CONSTRAINT_TYPE_EQUAL);
-      break;
-
-    case -1:
-      /* Builds "a >= b + 1.  */
-      cstr = ppl_build_relation (dim, a, b, -1,
-				 PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
-      break;
-
-    default:
-      gcc_unreachable ();
-    }
-
-  ppl_Polyhedron_add_constraint (equalities, cstr);
-  ppl_delete_Constraint (cstr);
-
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, equalities);
-  ppl_delete_Polyhedron (equalities);
-  return res;
-}
-
-/* Add to a non empty polyhedron BAG the precedence constraints for
-   the lexicographical comparison of time vectors in BAG following the
-   lexicographical order.  DIM is the dimension of the polyhedron BAG.
-   TDIM is the number of loops common to the two statements that are
-   compared lexicographically, i.e. the number of loops containing
-   both statements.  OFFSET is the number of dimensions needed to
-   represent the first statement, i.e. dimT1 + dimI1 in the layout of
-   the BAG polyhedron: T1|I1|T2|I2|S1|S2|G.  When DIRECTION is set to
-   1, compute the direct dependence from PDR1 to PDR2, and when
-   DIRECTION is -1, compute the reversed dependence relation, from
-   PDR2 to PDR1.  */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-build_lexicographical_constraint (ppl_Pointset_Powerset_C_Polyhedron_t bag,
-				  graphite_dim_t dim,
-				  graphite_dim_t tdim,
-				  graphite_dim_t offset,
-				  int direction)
-{
-  graphite_dim_t i;
-  ppl_Pointset_Powerset_C_Polyhedron_t res, lex;
-
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&res, dim, 1);
-
-  lex = build_pairwise_scheduling (dim, 0, offset, direction);
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (lex, bag);
-
-  if (!ppl_powerset_is_empty (lex))
-    ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (res, lex);
-
-  ppl_delete_Pointset_Powerset_C_Polyhedron (lex);
-
-  for (i = 0; i < tdim - 1; i++)
-    {
-      ppl_Pointset_Powerset_C_Polyhedron_t sceq;
-
-      sceq = build_pairwise_scheduling (dim, i, offset, 0);
-      ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (bag, sceq);
-      ppl_delete_Pointset_Powerset_C_Polyhedron (sceq);
-
-      if (ppl_powerset_is_empty (bag))
-	break;
-
-      lex = build_pairwise_scheduling (dim, i + 1, offset, direction);
-      ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (lex, bag);
-
-      if (!ppl_powerset_is_empty (lex))
-	ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (res, lex);
-
-      ppl_delete_Pointset_Powerset_C_Polyhedron (lex);
-    }
-
-  return res;
-}
-
-/* Build the dependence polyhedron for data references PDR1 and PDR2.
-   The layout of the dependence polyhedron is:
-
-   T1|I1|T2|I2|S1|S2|G
-
-   with
-   | T1 and T2 the scattering dimensions for PDR1 and PDR2
-   | I1 and I2 the iteration domains
-   | S1 and S2 the subscripts
-   | G the global parameters.
-
-   When DIRECTION is set to 1, compute the direct dependence from PDR1
-   to PDR2, and when DIRECTION is -1, compute the reversed dependence
-   relation, from PDR2 to PDR1.  */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-dependence_polyhedron (poly_dr_p pdr1, poly_dr_p pdr2,
-		       int direction, bool original_scattering_p)
-{
-  poly_bb_p pbb1 = PDR_PBB (pdr1);
-  poly_bb_p pbb2 = PDR_PBB (pdr2);
-  scop_p scop = PBB_SCOP (pbb1);
-  graphite_dim_t tdim1 = original_scattering_p ?
-    pbb_nb_scattering_orig (pbb1) : pbb_nb_scattering_transform (pbb1);
-  graphite_dim_t tdim2 = original_scattering_p ?
-    pbb_nb_scattering_orig (pbb2) : pbb_nb_scattering_transform (pbb2);
-  graphite_dim_t ddim1 = pbb_dim_iter_domain (pbb1);
-  graphite_dim_t ddim2 = pbb_dim_iter_domain (pbb2);
-  graphite_dim_t sdim1 = PDR_NB_SUBSCRIPTS (pdr1) + 1;
-  graphite_dim_t sdim2 = PDR_NB_SUBSCRIPTS (pdr2) + 1;
-  graphite_dim_t gdim = scop_nb_params (scop);
-  graphite_dim_t dim1 = pdr_dim (pdr1);
-  graphite_dim_t dim2 = pdr_dim (pdr2);
-  graphite_dim_t dim = tdim1 + tdim2 + dim1 + dim2 - gdim;
-  ppl_Pointset_Powerset_C_Polyhedron_t res;
-  ppl_Pointset_Powerset_C_Polyhedron_t idr1, idr2;
-  ppl_Pointset_Powerset_C_Polyhedron_t sc1, sc2, dreq;
-  ppl_Pointset_Powerset_C_Polyhedron_t lex;
-
-  gcc_assert (PBB_SCOP (pbb1) == PBB_SCOP (pbb2));
-
-  combine_context_id_scat (&sc1, pbb1, original_scattering_p);
-  combine_context_id_scat (&sc2, pbb2, original_scattering_p);
-
-  ppl_insert_dimensions_pointset (sc1, tdim1 + ddim1,
-				  tdim2 + ddim2 + sdim1 + sdim2);
-
-  ppl_insert_dimensions_pointset (sc2, 0, tdim1 + ddim1);
-  ppl_insert_dimensions_pointset (sc2, tdim1 + ddim1 + tdim2 + ddim2,
-				  sdim1 + sdim2);
-
-  idr1 = map_dr_into_dep_poly (dim, PDR_ACCESSES (pdr1), ddim1, ddim1 + gdim,
-			       tdim1, tdim2 + ddim2);
-  idr2 = map_dr_into_dep_poly (dim, PDR_ACCESSES (pdr2), ddim2, ddim2 + gdim,
-			       tdim1 + ddim1 + tdim2, sdim1);
-
-  /* Now add the subscript equalities.  */
-  dreq = dr_equality_constraints (dim, tdim1 + ddim1 + tdim2 + ddim2, sdim1);
-
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&res, dim, 0);
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, sc1);
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, sc2);
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, idr1);
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, idr2);
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, dreq);
-  ppl_delete_Pointset_Powerset_C_Polyhedron (sc1);
-  ppl_delete_Pointset_Powerset_C_Polyhedron (sc2);
-  ppl_delete_Pointset_Powerset_C_Polyhedron (idr1);
-  ppl_delete_Pointset_Powerset_C_Polyhedron (idr2);
-  ppl_delete_Pointset_Powerset_C_Polyhedron (dreq);
-
-  if (ppl_powerset_is_empty (res))
-    return NULL;
-
-  lex = build_lexicographical_constraint (res, dim, MIN (tdim1, tdim2),
-					  tdim1 + ddim1, direction);
-  ppl_delete_Pointset_Powerset_C_Polyhedron (res);
-
-  return lex;
-}
-
-/* Build the dependence polyhedron for data references PDR1 and PDR2.
-   If possible use already cached information.
-
-   When DIRECTION is set to 1, compute the direct dependence from PDR1
-   to PDR2, and when DIRECTION is -1, compute the reversed dependence
-   relation, from PDR2 to PDR1.  */
-
-static poly_ddr_p
-new_poly_ddr (poly_dr_p pdr1, poly_dr_p pdr2,
-	      int direction, bool original_scattering_p)
-{
-  PTR *x = NULL;
-  poly_ddr_p res;
-  bool may_alias;
-
-  /* Return the PDDR from the cache if it already has been computed.  */
-  if (original_scattering_p)
-    {
-      struct poly_ddr tmp;
-      scop_p scop = PBB_SCOP (PDR_PBB (pdr1));
-
-      tmp.source = pdr1;
-      tmp.sink = pdr2;
-      x = htab_find_slot (SCOP_ORIGINAL_PDDRS (scop),
-                          &tmp, INSERT);
-
-      if (x && *x)
-	return (poly_ddr_p) *x;
-    }
-
-  res = XNEW (struct poly_ddr);
-  PDDR_SOURCE (res) = pdr1;
-  PDDR_SINK (res) = pdr2;
-  PDDR_DDP (res) = NULL;
-  PDDR_ORIGINAL_SCATTERING_P (res) = original_scattering_p;
-  PDDR_KIND (res) = unknown_dependence;
-
-  may_alias = poly_drs_may_alias_p (pdr1, pdr2);
-
-  if (!(pdr_read_p (pdr1) && pdr_read_p (pdr2))
-      && PDR_BASE_OBJECT_SET (pdr1) != PDR_BASE_OBJECT_SET (pdr2)
-      && may_alias)
-    PDDR_KIND (res) = unknown_dependence;
-
-  else if (!(pdr_read_p (pdr1) && pdr_read_p (pdr2))
-	   && same_pdr_p (pdr1, pdr2)
-	   && may_alias)
-    {
-      PDDR_DDP (res) = dependence_polyhedron (pdr1, pdr2, direction,
-					      original_scattering_p);
-      if (PDDR_DDP (res))
-	PDDR_KIND (res) = has_dependence;
-      else
-	PDDR_KIND (res) = no_dependence;
-    }
-  else
-    PDDR_KIND (res) = no_dependence;
-
-  if (original_scattering_p)
-    *x = res;
-
-  return res;
-}
-
-/* Free the data dependence relation poly_ddr_p P.  */
-
-void
-free_poly_ddr (void *p)
-{
-  poly_ddr_p pddr = (poly_ddr_p) p;
-  ppl_delete_Pointset_Powerset_C_Polyhedron (PDDR_DDP (pddr));
-  free (pddr);
-}
-
 /* Add the constraints from the set S to the domain of MAP.  */
 
 static isl_map *
@@ -744,69 +224,16 @@ graphite_legal_transform (scop_p scop)
   return res;
 }
 
-/* Returns TRUE when the dependence polyhedron between PDR1 and
-   PDR2 represents a loop carried dependence at level LEVEL.  */
-
-static bool
-graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2,
-				     int level)
-{
-  ppl_Pointset_Powerset_C_Polyhedron_t po;
-  ppl_Pointset_Powerset_C_Polyhedron_t eqpp;
-  poly_bb_p pbb = PDR_PBB (pdr1);
-  graphite_dim_t tdim1 = pbb_nb_scattering_transform (pbb);
-  graphite_dim_t ddim1 = pbb_dim_iter_domain (pbb);
-  ppl_dimension_type dim;
-  bool empty_p;
-  poly_ddr_p pddr = new_poly_ddr (pdr1, pdr2, 1, false);
-  graphite_dim_t pos;
-
-  if (PDDR_KIND (pddr) == unknown_dependence)
-    {
-      free_poly_ddr (pddr);
-      return true;
-    }
-
-  if (pddr_is_empty (pddr))
-    {
-      free_poly_ddr (pddr);
-      return false;
-    }
-
-  po = PDDR_DDP (pddr);
-  ppl_Pointset_Powerset_C_Polyhedron_space_dimension (po, &dim);
-  pos = psct_dynamic_dim (pbb, level);
-  eqpp = build_pairwise_scheduling (dim, pos, tdim1 + ddim1, 1);
-
-  ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (eqpp, po);
-  empty_p = ppl_powerset_is_empty (eqpp);
-
-  ppl_delete_Pointset_Powerset_C_Polyhedron (eqpp);
-  free_poly_ddr (pddr);
-
-  return !empty_p;
-}
-
 /* Check data dependency between PBB1 and PBB2 at level LEVEL.  */
 
 bool
-dependency_between_pbbs_p (poly_bb_p pbb1, poly_bb_p pbb2, int level)
+dependency_between_pbbs_p (poly_bb_p pbb1 ATTRIBUTE_UNUSED,
+			   poly_bb_p pbb2 ATTRIBUTE_UNUSED,
+			   int level ATTRIBUTE_UNUSED)
 {
-  int i, j;
-  poly_dr_p pdr1, pdr2;
-
-  timevar_push (TV_GRAPHITE_DATA_DEPS);
-
-  FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb1), i, pdr1)
-    FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb2), j, pdr2)
-      if (graphite_carried_dependence_level_k (pdr1, pdr2, level))
-	{
-	  timevar_pop (TV_GRAPHITE_DATA_DEPS);
-	  return true;
-	}
-
-  timevar_pop (TV_GRAPHITE_DATA_DEPS);
-  return false;
+  /* FIXME: This code is disabled until it gets ported to use the ISL
+     data dependence information.  */
+  return true;
 }
 
 #endif
diff --git a/gcc/graphite-dependences.h b/gcc/graphite-dependences.h
index 5f2a4a0..9964ef6 100644
--- a/gcc/graphite-dependences.h
+++ b/gcc/graphite-dependences.h
@@ -1,5 +1,5 @@
 /* Graphite polyhedral representation.
-   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
    Contributed by Konrad Trifunovic <konrad.trifunovic@gmail.com>
 
 This file is part of GCC.
@@ -24,41 +24,4 @@ along with GCC; see the file COPYING3.  If not see
 extern bool graphite_legal_transform (scop_p);
 extern bool dependency_between_pbbs_p (poly_bb_p, poly_bb_p, int);
 
-enum poly_dependence_kind {
-  unknown_dependence,
-  no_dependence,
-  has_dependence
-};
-
-/* Represents a Polyhedral Data Dependence Relation.  */
-
-typedef struct poly_ddr
-{
-  /* Source and sink data references of the dependence.  */
-  poly_dr_p source, sink;
-
-  /* Data dependence polyhedron.  */
-  ppl_Pointset_Powerset_C_Polyhedron_t ddp;
-
-  enum poly_dependence_kind kind;
-
-  /* True when the dependence relation is for the original scattering.  */
-  bool original_scattering_p;
-
-} *poly_ddr_p;
-
-#define PDDR_SOURCE(PDDR) (PDDR->source)
-#define PDDR_SINK(PDDR) (PDDR->sink)
-#define PDDR_DDP(PDDR) (PDDR->ddp)
-#define PDDR_KIND(PDDR) (PDDR->kind)
-#define PDDR_ORIGINAL_SCATTERING_P(PDDR) (PDDR->original_scattering_p)
-
-extern int eq_poly_ddr_p (const void *, const void *);
-extern hashval_t hash_poly_ddr_p (const void *);
-extern void free_poly_ddr (void *);
-extern void dot_deps (scop_p);
-extern void dot_deps_stmt (scop_p);
-extern void print_pddr (FILE *, poly_ddr_p);
-extern void debug_pddr (poly_ddr_p);
-
 #endif
diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c
index 36affb2..4bd705e 100644
--- a/gcc/graphite-poly.c
+++ b/gcc/graphite-poly.c
@@ -987,8 +987,6 @@ new_scop (void *region)
   scop->may_no_source = NULL;
   scop_set_region (scop, region);
   SCOP_BBS (scop) = VEC_alloc (poly_bb_p, heap, 3);
-  SCOP_ORIGINAL_PDDRS (scop) = htab_create (10, hash_poly_ddr_p,
-					    eq_poly_ddr_p, free_poly_ddr);
   SCOP_ORIGINAL_SCHEDULE (scop) = NULL;
   SCOP_TRANSFORMED_SCHEDULE (scop) = NULL;
   SCOP_SAVED_SCHEDULE (scop) = NULL;
@@ -1018,7 +1016,6 @@ free_scop (scop_p scop)
   isl_union_map_free (scop->may_deps);
   isl_union_map_free (scop->must_no_source);
   isl_union_map_free (scop->may_no_source);
-  htab_delete (SCOP_ORIGINAL_PDDRS (scop));
   free_lst (SCOP_ORIGINAL_SCHEDULE (scop));
   free_lst (SCOP_TRANSFORMED_SCHEDULE (scop));
   free_lst (SCOP_SAVED_SCHEDULE (scop));
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c
index 7f043d8..8087fae 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c
@@ -23,8 +23,8 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
index 03d8236..c12c936 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
@@ -23,8 +23,8 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 2 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 2 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-3.c b/libgomp/testsuite/libgomp.graphite/force-parallel-3.c
index 81b356d..d396b99 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-3.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-3.c
@@ -30,9 +30,9 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "4 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "4 loops carried no dependency" 1 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-4.c b/libgomp/testsuite/libgomp.graphite/force-parallel-4.c
index c0c6b1c..fdafa65 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-4.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-4.c
@@ -47,9 +47,9 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-5.c b/libgomp/testsuite/libgomp.graphite/force-parallel-5.c
index b72b021..2000703 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-5.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-5.c
@@ -31,9 +31,9 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-6.c b/libgomp/testsuite/libgomp.graphite/force-parallel-6.c
index dcaaf48..630b2df 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-6.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-6.c
@@ -31,8 +31,8 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 1 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-7.c b/libgomp/testsuite/libgomp.graphite/force-parallel-7.c
index 9ba9007..043d2a7 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-7.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-7.c
@@ -29,8 +29,8 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "3 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "3 loops carried no dependency" 1 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-8.c b/libgomp/testsuite/libgomp.graphite/force-parallel-8.c
index 28b9a2a..dc079d5 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-8.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-8.c
@@ -32,9 +32,9 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-9.c b/libgomp/testsuite/libgomp.graphite/force-parallel-9.c
index 3655190..c334776 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-9.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-9.c
@@ -29,9 +29,9 @@ int main(void)
 }
 
 /* Check that parallel code generation part make the right answer.  */
-/* { dg-final { scan-tree-dump-times "4 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "4 loops carried no dependency" 1 "graphite" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "graphite" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" { xfail *-*-* } } } */
 /* { dg-final { cleanup-tree-dump "parloops" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
-- 
1.7.4.1



More information about the Gcc-patches mailing list