aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2004-03-22 22:05:05 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2004-03-22 17:05:05 -0500
commitf72c6b5641b49f46469f7c8fc276f54468155b14 (patch)
tree5ebfa11c879d8a191ae0b230d5ff3a03c9494540
parentd6672e91f14a7a570de58160bf251ac82e4557a3 (diff)
downloadgcc-f72c6b5641b49f46469f7c8fc276f54468155b14.zip
gcc-f72c6b5641b49f46469f7c8fc276f54468155b14.tar.gz
gcc-f72c6b5641b49f46469f7c8fc276f54468155b14.tar.bz2
params.def (PARAM_MAX_SCHED_REGION_BLOCKS): New.
* params.def (PARAM_MAX_SCHED_REGION_BLOCKS): New. (PARAM_MAX_SCHED_REGION_INSNS): New. * sched-rgn.c: Include params.h (MAX_RGN_BLOCKS): Delete. (MAX_RGN_INSNS): Delete. (too_large): Return bool. Convert to PARAM_VALUE. * Makefile.in (sched-rgn): Depend on $(PARAMS_H). * doc/invoke.texi (param): Document max-sched-region-blocks and max-sched-region-insns. From-SVN: r79839
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/Makefile.in2
-rw-r--r--gcc/doc/invoke.texi8
-rw-r--r--gcc/params.def10
-rw-r--r--gcc/sched-rgn.c23
5 files changed, 41 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index daebc14..7944ad0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2004-03-22 David Edelsohn <edelsohn@gnu.org>
+
+ * params.def (PARAM_MAX_SCHED_REGION_BLOCKS): New.
+ (PARAM_MAX_SCHED_REGION_INSNS): New.
+ * sched-rgn.c: Include params.h
+ (MAX_RGN_BLOCKS): Delete.
+ (MAX_RGN_INSNS): Delete.
+ (too_large): Return bool. Convert to PARAM_VALUE.
+ * Makefile.in (sched-rgn): Depend on $(PARAMS_H).
+ * doc/invoke.texi (param): Document max-sched-region-blocks and
+ max-sched-region-insns.
+
2004-03-22 Joel Brobecker <brobecker@gnat.com>
* dwarf2out.c (is_subrange_type): Do not emit a subrange_type DIE
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 2b11c82..c08d18b 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1816,7 +1816,7 @@ sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H)
$(INSN_ATTR_H) toplev.h $(RECOG_H) except.h cselib.h $(PARAMS_H) $(TM_P_H)
sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
sched-int.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
- $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) $(TARGET_H)
+ $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(PARAMS_H) $(TM_P_H) $(TARGET_H)
sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
sched-int.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
$(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) $(PARAMS_H)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 03aa5f8..362898f 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -4887,6 +4887,14 @@ The @option{reorder-block-duplicate-feedback} is used only when profile
feedback is available and may be set to higher values than
@option{reorder-block-duplicate} since information about the hot spots is more
accurate.
+
+@item max-sched-region-blocks
+The maximum number of blocks in a region to be considered for
+interblock scheduling. The default value is 10.
+
+@item max-sched-region-insns",
+The maximum number of insns in a region to be considered for
+interblock scheduling. The default value is 100.
@end table
@end table
diff --git a/gcc/params.def b/gcc/params.def
index 7be8ddc..c406ab8 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -293,6 +293,16 @@ DEFPARAM(PARAM_MAX_RELOAD_SEARCH_INSNS,
"The maximum number of instructions to search backward when looking for equivalent reload",
100)
+DEFPARAM(PARAM_MAX_SCHED_REGION_BLOCKS,
+ "max-sched-region-blocks",
+ "The maximum number of blocks in a region to be considered for interblock scheduling",
+ 10)
+
+DEFPARAM(PARAM_MAX_SCHED_REGION_INSNS,
+ "max-sched-region-insns",
+ "The maximum number of insns in a region to be considered for interblock scheduling",
+ 100)
+
/*
Local variables:
mode:c
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c
index 2cb89a4..e02686d 100644
--- a/gcc/sched-rgn.c
+++ b/gcc/sched-rgn.c
@@ -63,6 +63,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "toplev.h"
#include "recog.h"
#include "cfglayout.h"
+#include "params.h"
#include "sched-int.h"
#include "target.h"
@@ -83,9 +84,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define FED_BY_SPEC_LOAD(insn) (h_i_d[INSN_UID (insn)].fed_by_spec_load)
#define IS_LOAD_INSN(insn) (h_i_d[INSN_UID (insn)].is_load_insn)
-#define MAX_RGN_BLOCKS 10
-#define MAX_RGN_INSNS 100
-
/* nr_inter/spec counts interblock/speculative motion for the function. */
static int nr_inter, nr_spec;
@@ -156,7 +154,7 @@ static int *containing_rgn;
void debug_regions (void);
static void find_single_block_region (void);
static void find_rgns (struct edge_list *);
-static int too_large (int, int *, int *);
+static bool too_large (int, int *, int *);
extern void debug_live (int, int);
@@ -551,19 +549,18 @@ find_single_block_region (void)
}
/* Update number of blocks and the estimate for number of insns
- in the region. Return 1 if the region is "too large" for interblock
- scheduling (compile time considerations), otherwise return 0. */
+ in the region. Return true if the region is "too large" for interblock
+ scheduling (compile time considerations). */
-static int
+static bool
too_large (int block, int *num_bbs, int *num_insns)
{
(*num_bbs)++;
- (*num_insns) += (INSN_LUID (BB_END (BASIC_BLOCK (block))) -
- INSN_LUID (BB_HEAD (BASIC_BLOCK (block))));
- if ((*num_bbs > MAX_RGN_BLOCKS) || (*num_insns > MAX_RGN_INSNS))
- return 1;
- else
- return 0;
+ (*num_insns) += (INSN_LUID (BB_END (BASIC_BLOCK (block)))
+ - INSN_LUID (BB_HEAD (BASIC_BLOCK (block))));
+
+ return ((*num_bbs > PARAM_VALUE (PARAM_MAX_SCHED_REGION_BLOCKS))
+ || (*num_insns > PARAM_VALUE (PARAM_MAX_SCHED_REGION_INSNS)));
}
/* Update_loop_relations(blk, hdr): Check if the loop headed by max_hdr[blk]