Commit 12183e0f by Pat Haugen Committed by David Edelsohn

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
parent fc90a8f2
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> 2004-08-06 Richard Sandiford <rsandifo@redhat.com>
PR c/13282 PR c/13282
......
...@@ -1507,7 +1507,13 @@ try_crossjump_to_edge (int mode, edge e1, edge e2) ...@@ -1507,7 +1507,13 @@ try_crossjump_to_edge (int mode, edge e1, edge e2)
/* ... and part the second. */ /* ... and part the second. */
nmatch = flow_find_cross_jump (mode, src1, src2, &newpos1, &newpos2); 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; return false;
#ifndef CASE_DROPS_THROUGH #ifndef CASE_DROPS_THROUGH
......
...@@ -5094,6 +5094,12 @@ the number of edges incoming to each block. Increasing values mean ...@@ -5094,6 +5094,12 @@ the number of edges incoming to each block. Increasing values mean
more aggressive optimization, making the compile time increase with more aggressive optimization, making the compile time increase with
probably small improvement in executable size. 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 @item max-delay-slot-insn-search
The maximum number of instructions to consider when looking for an The maximum number of instructions to consider when looking for an
instruction to fill a delay slot. If more than this arbitrary number of instruction to fill a delay slot. If more than this arbitrary number of
......
...@@ -306,6 +306,12 @@ DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES, ...@@ -306,6 +306,12 @@ DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES,
"The maximum number of incoming edges to consider for crossjumping", "The maximum number of incoming edges to consider for crossjumping",
100) 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. */ /* The maximum length of path considered in cse. */
DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH, DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH,
"max-cse-path-length", "max-cse-path-length",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment