Add --param max-unrolled-insns=<n> support
authorMichael Meissner <meissner@redhat.com>
Thu, 14 Mar 2002 23:31:50 +0000 (23:31 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Thu, 14 Mar 2002 23:31:50 +0000 (23:31 +0000)
From-SVN: r50787

gcc/ChangeLog
gcc/Makefile.in
gcc/doc/invoke.texi
gcc/params.def
gcc/params.h
gcc/unroll.c

index 78317db985cd7809c114104dbde553b06c819abf..c4cf286bf4eb3e455d04190cc1cd122399f6c035 100644 (file)
@@ -1,3 +1,18 @@
+2002-03-14  Michael Meissner  <meissner@redhat.com>
+
+       * params.def (PARAM_MAX_UNROLLED_INSNS): New macro, default to
+       100, allowing MAX_UNROLLED_INSNS to be overridden.
+
+       * params.h (MAX_UNROLLED_INSNS): Define so it can be overridden by
+       --param.
+
+       * unroll.c (params.h): Include.
+       (MAX_UNROLLED_INSNS): Delete, now in params.h.
+
+       * doc/invoke.texi (--param max-unroll-insns): Document.
+
+       * Makefile.in (unroll.o): Add $(PARAMS_H) dependency.
+
 2002-03-14  Richard Earnshaw  <rearnsha@arm.com>
 
        * arm.md: Fix warnings about constraints in peepholes and splits.
index 0985f0732178ad95ad5dec838bed100583127fff..2cb9f84a2eb7ce01ec1ee42f0c15a11a94274476 100644 (file)
@@ -1483,7 +1483,7 @@ doloop.o : doloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \
    $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) toplev.h
 unroll.o : unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h function.h \
    $(INTEGRATE_H) $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) $(LOOP_H) toplev.h \
-   hard-reg-set.h varray.h $(BASIC_BLOCK_H) $(TM_P_H) $(PREDICT_H)
+   hard-reg-set.h varray.h $(BASIC_BLOCK_H) $(TM_P_H) $(PREDICT_H) $(PARAMS_H)
 flow.o : flow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h insn-config.h \
    $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
    function.h except.h $(EXPR_H) ssa.h $(GGC_H) $(TM_P_H)
index c1689c0070fe60182d57933d81fed07c17e7075e..abb963852e4dba34c115ed29e8904d10ee7bad35 100644 (file)
@@ -3851,6 +3851,11 @@ If an function contains more than this many instructions, it
 will not be inlined.  This option is precisely equivalent to
 @option{-finline-limit}.
 
+@item max-unrolled-insns
+The maximum number of instructions that a loop should have if that loop
+is unrolled, and if the loop is unrolled, it determines how many times
+the loop code is unrolled.
+
 @end table
 @end table
 
index 2a1d3a3b12c00b86174b60f8af15729b64ae2734..a064ca28132e0e655c33f90bdc445dd7549559f2 100644 (file)
@@ -89,6 +89,13 @@ DEFPARAM(PARAM_MAX_GCSE_PASSES,
        "max-gcse-passes",
        "The maximum number of passes to make when doing GCSE",
        1)
+
+/* This parameter limits the number of insns in a loop that will be unrolled,
+   and by how much the loop is unrolled.  */
+DEFPARAM(PARAM_MAX_UNROLLED_INSNS,
+        "max-unrolled-insns",
+        "The maximum number of instructions to consider to unroll in a loop",
+        100)
 /*
 Local variables:
 mode:c
index 33eec39ee9a3451b386c523caafa4c33d9a042e6..36800af2ec45a31d3ff2793e8d5029ff0d9dd73a 100644 (file)
@@ -96,4 +96,6 @@ typedef enum compiler_param
   ((size_t) PARAM_VALUE (PARAM_MAX_GCSE_MEMORY))
 #define MAX_GCSE_PASSES \
   PARAM_VALUE (PARAM_MAX_GCSE_PASSES)
+#define MAX_UNROLLED_INSNS \
+  PARAM_VALUE (PARAM_MAX_UNROLLED_INSNS)
 #endif /* ! GCC_PARAMS_H */
index 2b941470ecdaf551920b5cf2394c6534b226016c..fc189386a390a6ef64f4388336043075183cbfa0 100644 (file)
@@ -147,6 +147,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "hard-reg-set.h"
 #include "basic-block.h"
 #include "predict.h"
+#include "params.h"
 
 /* The prime factors looked for when trying to unroll a loop by some
    number which is modulo the total number of iterations.  Just checking
@@ -169,13 +170,6 @@ enum unroll_types
   UNROLL_NAIVE
 };
 
-/* This controls which loops are unrolled, and by how much we unroll
-   them.  */
-
-#ifndef MAX_UNROLLED_INSNS
-#define MAX_UNROLLED_INSNS 100
-#endif
-
 /* Indexed by register number, if non-zero, then it contains a pointer
    to a struct induction for a DEST_REG giv which has been combined with
    one of more address givs.  This is needed because whenever such a DEST_REG