summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/doc/invoke.texi3
-rw-r--r--gcc/gcse.c7
-rw-r--r--gcc/params.def6
-rw-r--r--gcc/params.h3
5 files changed, 26 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2d087cd88ab..8c6197a72d1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2001-06-26 Daniel Berlin <dan@cgsoftware.com>
+
+ * doc/invoke.texi: Add description of max-gcse-passes param.
+
+ * gcse.c (gcse_main): Use MAX_GCSE_PASSES instead of MAX_PASSES.
+ (MAX_PASSES): Remove now unneeded macro.
+
+ * params.h (MAX_GCSE_PASSES): New macro, to get parameter value of
+ max-gcse-passes param.
+
+ * params.def (PARAM_MAX_GCSE_PASSES): New parameter, controlling
+ maximum number of GCSE passes to run. Defaults to 1 (which is what
+ MAX_PASSES in gcse.c used to be).
+
2001-06-27 Neil Booth <neil@cat.daikokuya.demon.co.uk>
* system.h (TARGET_ESC): Move to ...
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 94d4e0c06de..b93a80ea1fd 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -3784,6 +3784,9 @@ order to perform the global common subexpression elimination
optimization. If more memory than specified is required, the
optimization will not be done.
+@item max-gcse-passes
+The maximum number of passes of GCSE to run.
+
@item max-inline-insns
If an function contains more than this many instructions, it
will not be inlined. This option is precisely equivalent to
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 82f2787c6a3..76687dee782 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -166,9 +166,6 @@ Boston, MA 02111-1307, USA. */
#define obstack_chunk_alloc gmalloc
#define obstack_chunk_free free
-/* Maximum number of passes to perform. */
-#define MAX_PASSES 1
-
/* Propagate flow information through back edges and thus enable PRE's
moving loop invariant calculations out of loops.
@@ -232,7 +229,7 @@ Boston, MA 02111-1307, USA. */
substitutions.
PRE is quite expensive in complicated functions because the DFA can take
- awhile to converge. Hence we only perform one pass. Macro MAX_PASSES can
+ awhile to converge. Hence we only perform one pass. The parameter max-gcse-passes can
be modified if one wants to experiment.
**********************
@@ -810,7 +807,7 @@ gcse_main (f, file)
max_pass_bytes = 0;
gcse_obstack_bottom = gcse_alloc (1);
changed = 1;
- while (changed && pass < MAX_PASSES)
+ while (changed && pass < MAX_GCSE_PASSES)
{
changed = 0;
if (file)
diff --git a/gcc/params.def b/gcc/params.def
index 24b3aa26bb1..eff8a231e83 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -74,7 +74,11 @@ DEFPARAM(PARAM_MAX_GCSE_MEMORY,
"max-gcse-memory",
"The maximum amount of memory to be allocated by GCSE",
50 * 1024 * 1024)
-
+/* The number of repetitions of copy/const prop and PRE to run. */
+DEFPARAM(PARAM_MAX_GCSE_PASSES,
+ "max-gcse-passes",
+ "The maximum number of passes to make when doing GCSE",
+ 1)
/*
Local variables:
mode:c
diff --git a/gcc/params.h b/gcc/params.h
index 7f0bacd4346..2b29094a6f2 100644
--- a/gcc/params.h
+++ b/gcc/params.h
@@ -92,5 +92,6 @@ typedef enum compiler_param
PARAM_VALUE (PARAM_MAX_DELAY_SLOT_LIVE_SEARCH)
#define MAX_GCSE_MEMORY \
((size_t) PARAM_VALUE (PARAM_MAX_GCSE_MEMORY))
-
+#define MAX_GCSE_PASSES \
+ PARAM_VALUE (PARAM_MAX_GCSE_PASSES)
#endif /* ! GCC_PARAMS_H */