On Sun, Mar 18, 2012 at 6:12 PM, William J. Schmidt <wschm...@linux.vnet.ibm.com> wrote: > Greetings, > > Now that we're into stage 1 again, I'd like to submit the first round of > changes for dominator-based strength reduction, which will address > issues from PR22586, PR35308, PR46556, and perhaps others. I'm > attaching two patches: the smaller (slsr-part1) is the patch I'm > submitting for approval today, while the larger (slsr-fyi) is for > reference only, but may be useful if questions arise about how the small > patch fits into the intended whole. > > This patch contains the logic for identifying strength reduction > candidates, and makes replacements only for those candidates where the > stride is a fixed constant. Replacement for candidates with fixed but > unknown strides are not implemented herein, but that logic can be viewed > in the larger patch. This patch does not address strength reduction of > data reference expressions, or candidates with conditional increments; > those issues will be dealt with in future patches. > > The cost model is built on the one used by tree-ssa-ivopts.c, and I've > added some new instruction costs to that model in place. It might > eventually be good to divorce that modeling code from IVOPTS, but that's > an orthogonal patch and somewhat messy.
I think this is the wrong way to do straight line strength reduction considering we have a nice value numbering system which should be easy to extended to support it. Thanks, Andrew pinski > > Thanks, > Bill > > > gcc: > > 2012-03-18 Bill Schmidt <wschm...@linux.vnet.ibm.com> > > * tree-pass.h (pass_strength_reduction): New decl. > * tree-ssa-loop-ivopts.c (add_cost): Remove #undef; rename to > add_regs_cost. > (multiply_regs_cost): New function. > (add_const_cost): Likewise. > (extend_or_trunc_cost): Likewise. > (negate_cost): Likewise. > (get_address_cost): Rename add_cost to add_regs_cost. > (force_expr_to_var_cost): Likewise. > (get_computation_cost_at): Likewise. > (determine_iv_cost): Likewise. > * timevar.def (TV_TREE_SLSR): New timevar. > * tree-ssa-strength-reduction.c: New. > * tree-flow.h (add_regs_cost): New decl. > (multiply_regs_cost): Likewise. > (add_const_cost): Likewise. > (extend_or_trunc_cost): Likewise. > (negate_cost): Likewise. > * Makefile.in (tree-ssa-strength-reduction.o): New dependencies. > * passes.c (init_optimization_passes): Add pass_strength_reduction. > > gcc/testsuite: > > 2012-03-18 Bill Schmidt <wschm...@linux.vnet.ibm.com> > > * gcc.dg/tree-ssa/slsr-1.c: New test. > * gcc.dg/tree-ssa/slsr-2.c: Likewise. > * gcc.dg/tree-ssa/slsr-3.c: Likewise. > * gcc.dg/tree-ssa/slsr-4.c: Likewise. >