diff options
author | Jan Hubicka <jh@suse.cz> | 2008-08-03 14:04:49 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2008-08-03 12:04:49 +0000 |
commit | 2266066678883fb62e0b1eab42e06c5c8a267a48 (patch) | |
tree | 712090046e4950fa392a0edaa940bad25c8368be /gcc | |
parent | 5617c135e7fe4ea4d67bdf3fbe94acfacfa87b16 (diff) | |
download | gcc-2266066678883fb62e0b1eab42e06c5c8a267a48.zip gcc-2266066678883fb62e0b1eab42e06c5c8a267a48.tar.gz gcc-2266066678883fb62e0b1eab42e06c5c8a267a48.tar.bz2 |
optabs.c (expand_binop, [...]): Upse optimize_insn_for_speed predicate.
* optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
* expmed.c (expand_smod_pow2): Likewise.
From-SVN: r138565
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/builtins.c | 10 | ||||
-rw-r--r-- | gcc/expmed.c | 2 | ||||
-rw-r--r-- | gcc/optabs.c | 2 |
4 files changed, 13 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ff6c0c..efb5505 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-08-03 Jan Hubicka <jh@suse.cz> + + * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi, + expand_builtin_strcat): Upse optimize_insn_for_speed predicate. + * expmed.c (expand_smod_pow2): Likewise. + 2008-08-03 Uros Bizjak <ubizjak@gmail.com> PR target/36992 diff --git a/gcc/builtins.c b/gcc/builtins.c index 2dffd53..953fb7b 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -2911,7 +2911,7 @@ expand_builtin_pow (tree exp, rtx target, rtx subtarget) if (real_identical (&c, &cint) && ((n >= -1 && n <= 2) || (flag_unsafe_math_optimizations - && !optimize_size + && optimize_insn_for_speed_p () && powi_cost (n) <= POWI_MAX_MULTS))) { op = expand_expr (arg0, subtarget, VOIDmode, EXPAND_NORMAL); @@ -2935,7 +2935,7 @@ expand_builtin_pow (tree exp, rtx target, rtx subtarget) real_from_integer (&cint, VOIDmode, n, n < 0 ? -1 : 0, 0); if (real_identical (&c2, &cint) && ((flag_unsafe_math_optimizations - && !optimize_size + && optimize_insn_for_speed_p () && powi_cost (n/2) <= POWI_MAX_MULTS) || n == 1)) { @@ -2980,7 +2980,7 @@ expand_builtin_pow (tree exp, rtx target, rtx subtarget) real_arithmetic (&c2, RDIV_EXPR, &cint, &dconst3); real_convert (&c2, mode, &c2); if (real_identical (&c2, &c) - && ((!optimize_size + && ((optimize_insn_for_speed_p () && powi_cost (n/3) <= POWI_MAX_MULTS) || n == 1)) { @@ -3042,7 +3042,7 @@ expand_builtin_powi (tree exp, rtx target, rtx subtarget) if ((TREE_INT_CST_HIGH (arg1) == 0 || TREE_INT_CST_HIGH (arg1) == -1) && ((n >= -1 && n <= 2) - || (! optimize_size + || (optimize_insn_for_speed_p () && powi_cost (n) <= POWI_MAX_MULTS))) { op0 = expand_expr (arg0, subtarget, VOIDmode, EXPAND_NORMAL); @@ -4464,7 +4464,7 @@ expand_builtin_strcat (tree fndecl, tree exp, rtx target, enum machine_mode mode if (p && *p == '\0') return expand_expr (dst, target, mode, EXPAND_NORMAL); - if (!optimize_size) + if (optimize_insn_for_speed_p ()) { /* See if we can store by pieces into (dst + strlen(dst)). */ tree newsrc, newdst, diff --git a/gcc/expmed.c b/gcc/expmed.c index d5127b3..b102241 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -3487,7 +3487,7 @@ expand_smod_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d) /* Avoid conditional branches when they're expensive. */ if (BRANCH_COST >= 2 - && !optimize_size) + && optimize_insn_for_speed_p ()) { rtx signmask = emit_store_flag (result, LT, op0, const0_rtx, mode, 0, -1); diff --git a/gcc/optabs.c b/gcc/optabs.c index ee5bec1..158e759 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -1786,7 +1786,7 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, if ((binoptab == lshr_optab || binoptab == ashl_optab || binoptab == ashr_optab) && mclass == MODE_INT - && (GET_CODE (op1) == CONST_INT || !optimize_size) + && (GET_CODE (op1) == CONST_INT || optimize_insn_for_speed_p ()) && GET_MODE_SIZE (mode) == 2 * UNITS_PER_WORD && optab_handler (binoptab, word_mode)->insn_code != CODE_FOR_nothing && optab_handler (ashl_optab, word_mode)->insn_code != CODE_FOR_nothing |