OSDN Git Service

Limit the number of parameters per SCoP.
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Mar 2010 17:34:38 +0000 (17:34 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Mar 2010 17:34:38 +0000 (17:34 +0000)
2010-03-09  Sebastian Pop  <sebastian.pop@amd.com>

* graphite-sese-to-poly.c (build_poly_scop): Limit scops following
the number of parameters in the scop.  Use as an upper bound
PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS.
* params.def (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Declared.
* doc/invoke.texi: Document it.

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

gcc/ChangeLog.graphite
gcc/doc/invoke.texi
gcc/graphite-sese-to-poly.c
gcc/params.def

index 9dcdcda..61b463b 100644 (file)
@@ -1,3 +1,11 @@
+2010-03-09  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-sese-to-poly.c (build_poly_scop): Limit scops following
+       the number of parameters in the scop.  Use as an upper bound
+       PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS.
+       * params.def (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Declared.
+       * doc/invoke.texi: Document it.
+
 2010-03-05  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-sese-to-poly.c (add_param_constraints): Use
index 060be88..2159701 100644 (file)
@@ -8492,6 +8492,10 @@ parameters only when their cumulative size is less or equal to
 @option{ipa-sra-ptr-growth-factor} times the size of the original
 pointer parameter.
 
+@item graphite-max-nb-scop-params
+To avoid exponential effects in the Graphite loop transforms, the
+number of parameters in a SCoP is bounded by 10.
+
 @end table
 @end table
 
index 11bddf8..ae4a083 100644 (file)
@@ -2937,6 +2937,7 @@ build_poly_scop (scop_p scop)
 {
   sese region = SCOP_REGION (scop);
   sbitmap reductions = sbitmap_alloc (last_basic_block * 2);
+  graphite_dim_t max_dim;
 
   sbitmap_zero (reductions);
   rewrite_commutative_reductions_out_of_ssa (region, reductions);
@@ -2960,6 +2961,10 @@ build_poly_scop (scop_p scop)
   build_sese_conditions (region);
   find_scop_parameters (scop);
 
+  max_dim = PARAM_VALUE (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS);
+  if (scop_nb_params (scop) > max_dim)
+    return false;
+
   build_scop_iteration_domain (scop);
   build_scop_context (scop);
 
index 07bfb90..f6f549c 100644 (file)
@@ -745,6 +745,13 @@ DEFPARAM (PARAM_LOOP_BLOCK_TILE_SIZE,
          "size of tiles for loop blocking",
          51, 0, 0)
 
+/* Maximal number of parameters that we allow in a SCoP.  */
+
+DEFPARAM (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS,
+         "graphite-max-nb-scop-params",
+         "maximal number of parameters in a SCoP",
+         10, 0, 0)
+
 /* Avoid doing loop invariant motion on very large loops.  */
 
 DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP,