mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-19 19:04:11 +08:00
fold-const.c (fold_range_test): Use RANGE_TEST_NON_SHORT_CIRCUIT macro defaulting to original BRANCH_COST heuristic.
* fold-const.c (fold_range_test): Use RANGE_TEST_NON_SHORT_CIRCUIT macro defaulting to original BRANCH_COST heuristic. * doc/tm.texi (RANGE_TEST_NON_SHORT_CIRCUIT): Document. * config/rs6000/rs6000.h (RANGE_TEST_NON_SHORT_CIRCUIT): Define. From-SVN: r65942
This commit is contained in:
parent
256c249cf9
commit
85e50b6ba8
@ -1,3 +1,11 @@
|
||||
2003-04-22 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* fold-const.c (fold_range_test): Use RANGE_TEST_NON_SHORT_CIRCUIT
|
||||
macro defaulting to original BRANCH_COST heuristic.
|
||||
* doc/tm.texi (RANGE_TEST_NON_SHORT_CIRCUIT): Document.
|
||||
|
||||
* config/rs6000/rs6000.h (RANGE_TEST_NON_SHORT_CIRCUIT): Define.
|
||||
|
||||
2003-04-22 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* config/rs6000/t-spe: Merge in t-fprules into file.
|
||||
|
@ -992,6 +992,10 @@ extern int rs6000_default_long_calls;
|
||||
|
||||
#define BRANCH_COST 3
|
||||
|
||||
/* Override BRANCH_COST heuristic which empirically produces worse
|
||||
performance for fold_range_test(). */
|
||||
|
||||
#define RANGE_TEST_NON_SHORT_CIRCUIT 0
|
||||
|
||||
/* A fixed register used at prologue and epilogue generation to fix
|
||||
addressing modes. The SPE needs heavy addressing fixes at the last
|
||||
|
@ -5529,6 +5529,12 @@ function address than to call an address kept in a register.
|
||||
Define this macro if it is as good or better for a function to call
|
||||
itself with an explicit address than to call an address kept in a
|
||||
register.
|
||||
|
||||
@findex RANGE_TEST_NON_SHORT_CIRCUIT
|
||||
@item RANGE_TEST_NON_SHORT_CIRCUIT
|
||||
Define this macro if a non-short-circuit operation produced by
|
||||
@samp{fold_range_test ()} is optimal. This macro defaults to true if
|
||||
@code{BRANCH_COST} is greater than or equal to the value 2.
|
||||
@end table
|
||||
|
||||
@deftypefn {Target Hook} bool TARGET_RTX_COSTS (rtx @var{x}, int @var{code}, int @var{outer_code}, int *@var{total})
|
||||
|
@ -3414,6 +3414,10 @@ merge_ranges (pin_p, plow, phigh, in0_p, low0, high0, in1_p, low1, high1)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef RANGE_TEST_NON_SHORT_CIRCUIT
|
||||
#define RANGE_TEST_NON_SHORT_CIRCUIT (BRANCH_COST >= 2)
|
||||
#endif
|
||||
|
||||
/* EXP is some logical combination of boolean tests. See if we can
|
||||
merge it into some range test. Return the new tree if so. */
|
||||
|
||||
@ -3450,7 +3454,7 @@ fold_range_test (exp)
|
||||
/* On machines where the branch cost is expensive, if this is a
|
||||
short-circuited branch and the underlying object on both sides
|
||||
is the same, make a non-short-circuit operation. */
|
||||
else if (BRANCH_COST >= 2
|
||||
else if (RANGE_TEST_NON_SHORT_CIRCUIT
|
||||
&& lhs != 0 && rhs != 0
|
||||
&& (TREE_CODE (exp) == TRUTH_ANDIF_EXPR
|
||||
|| TREE_CODE (exp) == TRUTH_ORIF_EXPR)
|
||||
|
Loading…
Reference in New Issue
Block a user