diff options
author | Pat Haugen <pthaugen@us.ibm.com> | 2004-08-06 17:20:53 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2004-08-06 13:20:53 -0400 |
commit | 12183e0fbcace8903ebcbec1ef38aa25f000764b (patch) | |
tree | 22bcce619fb410b79d31de6cd6807d0d595d1ea1 | |
parent | fc90a8f2eeefbac428a73d6ea8c146f8e5446154 (diff) | |
download | gcc-12183e0fbcace8903ebcbec1ef38aa25f000764b.zip gcc-12183e0fbcace8903ebcbec1ef38aa25f000764b.tar.gz gcc-12183e0fbcace8903ebcbec1ef38aa25f000764b.tar.bz2 |
params.def (PARAM_MIN_CROSSJUMP_INSNS): New.
2004-08-06 Pat Haugen <pthaugen@us.ibm.com>
* params.def (PARAM_MIN_CROSSJUMP_INSNS): New.
* cfgcleanup.c (try_crossjump_to_edge): Add minimum insn match
threshhold.
* doc/invoke.texi (param): Document min-crossjump-insns.
From-SVN: r85646
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cfgcleanup.c | 8 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 6 | ||||
-rw-r--r-- | gcc/params.def | 6 |
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0c189c6..1318c7c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-08-06 Pat Haugen <pthaugen@us.ibm.com> + + * params.def (PARAM_MIN_CROSSJUMP_INSNS): New. + * cfgcleanup.c (try_crossjump_to_edge): Add minimum insn match + threshhold. + * doc/invoke.texi (param): Document min-crossjump-insns. + 2004-08-06 Richard Sandiford <rsandifo@redhat.com> PR c/13282 diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 517f0ed..648c4a4 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -1507,7 +1507,13 @@ try_crossjump_to_edge (int mode, edge e1, edge e2) /* ... and part the second. */ nmatch = flow_find_cross_jump (mode, src1, src2, &newpos1, &newpos2); - if (!nmatch) + + /* Don't proceed with the crossjump unless we found a sufficient number + of matching instructions or the 'from' block was totally matched + (such that its predecessors will hopefully be redirected and the + block removed). */ + if ((nmatch < PARAM_VALUE (PARAM_MIN_CROSSJUMP_INSNS)) + && (newpos1 != BB_HEAD (src1))) return false; #ifndef CASE_DROPS_THROUGH diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 154dc97..f1988b0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -5094,6 +5094,12 @@ the number of edges incoming to each block. Increasing values mean more aggressive optimization, making the compile time increase with probably small improvement in executable size. +@item min-crossjump-insns +The minimum number of instructions which must be matched at the end +of two blocks before crossjumping will be performed on them. This +value is ignored in the case where all instructions in the block being +crossjumped from are matched. The default value is 5. + @item max-delay-slot-insn-search The maximum number of instructions to consider when looking for an instruction to fill a delay slot. If more than this arbitrary number of diff --git a/gcc/params.def b/gcc/params.def index 4b5a9ce..aed7655 100644 --- a/gcc/params.def +++ b/gcc/params.def @@ -306,6 +306,12 @@ DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES, "The maximum number of incoming edges to consider for crossjumping", 100) +/* The minimum number of matching instructions to consider for crossjumping. */ +DEFPARAM(PARAM_MIN_CROSSJUMP_INSNS, + "min-crossjump-insns", + "The minimum number of matching instructions to consider for crossjumping", + 5) + /* The maximum length of path considered in cse. */ DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH, "max-cse-path-length", |