diff options
author | Sandra Loosemore <sandra@codesourcery.com> | 2010-07-10 14:43:29 -0400 |
---|---|---|
committer | Sandra Loosemore <sandra@gcc.gnu.org> | 2010-07-10 14:43:29 -0400 |
commit | bec922f0407cfb7f184581dc7b5cc10d91cc1063 (patch) | |
tree | b3a38775af4396d2f1d30d5d0c41a80f2bf0e78f /gcc/cfgloop.h | |
parent | 35151cd5f8b9f94eee7853a25ae65df04591651a (diff) | |
download | gcc-bec922f0407cfb7f184581dc7b5cc10d91cc1063.zip gcc-bec922f0407cfb7f184581dc7b5cc10d91cc1063.tar.gz gcc-bec922f0407cfb7f184581dc7b5cc10d91cc1063.tar.bz2 |
re PR middle-end/42505 (loop canonicalization causes a lot of unnecessary temporary variables)
2010-07-10 Sandra Loosemore <sandra@codesourcery.com>
PR middle-end/42505
gcc/
* tree-inline.c (estimate_num_insns): Refactor builtin complexity
lookup code into....
* builtins.c (is_simple_builtin, is_inexpensive_builtin): ...these
new functions.
* tree.h (is_simple_builtin, is_inexpensive_builtin): Declare.
* cfgloopanal.c (target_clobbered_regs): Define.
(init_set_costs): Initialize target_clobbered_regs.
(estimate_reg_pressure_cost): Add call_p argument. When true,
adjust the number of available registers to exclude the
call-clobbered registers.
* cfgloop.h (target_clobbered_regs): Declare.
(estimate_reg_pressure_cost): Adjust declaration.
* tree-ssa-loop-ivopts.c (struct ivopts_data): Add body_includes_call.
(ivopts_global_cost_for_size): Pass it to estimate_reg_pressure_cost.
(determine_set_costs): Dump target_clobbered_regs.
(loop_body_includes_call): New function.
(tree_ssa_iv_optimize_loop): Use it to initialize new field.
* loop-invariant.c (gain_for_invariant): Adjust arguments to pass
call_p flag through.
(best_gain_for_invariant): Likewise.
(find_invariants_to_move): Likewise.
(move_single_loop_invariants): Likewise, using already-computed
has_call field.
From-SVN: r162043
Diffstat (limited to 'gcc/cfgloop.h')
-rw-r--r-- | gcc/cfgloop.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index 3821ee6..46cda11 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -627,13 +627,14 @@ fel_init (loop_iterator *li, loop_p *loop, unsigned flags) /* The properties of the target. */ extern unsigned target_avail_regs; +extern unsigned target_clobbered_regs; extern unsigned target_res_regs; extern unsigned target_reg_cost [2]; extern unsigned target_spill_cost [2]; /* Register pressure estimation for induction variable optimizations & loop invariant motion. */ -extern unsigned estimate_reg_pressure_cost (unsigned, unsigned, bool); +extern unsigned estimate_reg_pressure_cost (unsigned, unsigned, bool, bool); extern void init_set_costs (void); /* Loop optimizer initialization. */ |