summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog.graphite7
-rw-r--r--gcc/doc/invoke.texi5
-rw-r--r--gcc/graphite.c2
-rw-r--r--gcc/params.def7
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index 2aa6fd55b86..3a94ee18459 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,5 +1,12 @@
2010-03-09 Sebastian Pop <sebastian.pop@amd.com>
+ * graphite.c (graphite_initialize): To bound the number of bbs per
+ function, use PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION.
+ * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Declared.
+ * doc/invoke.texi: Document it.
+
+2010-03-09 Sebastian Pop <sebastian.pop@amd.com>
+
* graphite-sese-to-poly.c (build_poly_scop): Do not return bool.
* graphite-sese-to-poly.h (build_poly_scop): Same.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 21597017b53..b856ca2256f 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -8496,6 +8496,11 @@ pointer parameter.
To avoid exponential effects in the Graphite loop transforms, the
number of parameters in a SCoP is bounded by 10.
+@item graphite-max-bbs-per-function
+To avoid exponential effects in the detection of SCoPs, the functions
+with more than 100 basic blocks are not handled by the Graphite loop
+transforms.
+
@end table
@end table
diff --git a/gcc/graphite.c b/gcc/graphite.c
index ba05cc74361..a244b870e8c 100644
--- a/gcc/graphite.c
+++ b/gcc/graphite.c
@@ -202,7 +202,7 @@ graphite_initialize (void)
if (number_of_loops () <= 1
/* FIXME: This limit on the number of basic blocks of a function
should be removed when the SCOP detection is faster. */
- || n_basic_blocks > 100)
+ || n_basic_blocks > PARAM_VALUE (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION))
{
if (dump_file && (dump_flags & TDF_DETAILS))
print_global_statistics (dump_file);
diff --git a/gcc/params.def b/gcc/params.def
index f6f549c1466..dca575d4ab0 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -752,6 +752,13 @@ DEFPARAM (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS,
"maximal number of parameters in a SCoP",
10, 0, 0)
+/* Maximal number of basic blocks in the functions analyzed by Graphite. */
+
+DEFPARAM (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION,
+ "graphite-max-bbs-per-function",
+ "maximal number of basic blocks per function to be analyzed by Graphite",
+ 100, 0, 0)
+
/* Avoid doing loop invariant motion on very large loops. */
DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP,