On Wed, Aug 8, 2012 at 3:25 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Wed, Aug 1, 2012 at 10:36 AM, William J. Schmidt > <wschm...@linux.vnet.ibm.com> wrote: >> Greetings, >> >> Thanks for the review of part 2! Here's another chunk of the SLSR code >> (I feel I owe you a few beers at this point). This performs analysis >> and replacement on groups of related candidates having an SSA name >> (rather than a constant) for a stride. >> >> This leaves only the conditional increment (CAND_PHI) case, which will >> be handled in the last patch of the series. >> >> Bootstrapped and tested on powerpc64-unknown-linux-gnu with no new >> regressions. Ok for trunk? >> >> Thanks, >> Bill >> >> >> gcc: >> >> 2012-08-01 Bill Schmidt <wschm...@linux.ibm.com> >> >> * gimple-ssa-strength-reduction.c (struct incr_info_d): New struct. >> (incr_vec): New static var. >> (incr_vec_len): Likewise. >> (address_arithmetic_p): Likewise. >> (stmt_cost): Remove dead assignment. >> (dump_incr_vec): New function. >> (cand_abs_increment): Likewise. >> (lazy_create_slsr_reg): Likewise. >> (incr_vec_index): Likewise. >> (count_candidates): Likewise. >> (record_increment): Likewise. >> (record_increments): Likewise. >> (unreplaced_cand_in_tree): Likewise. >> (optimize_cands_for_speed_p): Likewise. >> (lowest_cost_path): Likewise. >> (total_savings): Likewise. >> (analyze_increments): Likewise. >> (ncd_for_two_cands): Likewise. >> (nearest_common_dominator_for_cands): Likewise. >> (profitable_increment_p): Likewise. >> (insert_initializers): Likewise. >> (introduce_cast_before_cand): Likewise. >> (replace_rhs_if_not_dup): Likewise. >> (replace_one_candidate): Likewise. >> (replace_profitable_candidates): Likewise. >> (analyze_candidates_and_replace): Handle candidates with SSA-name >> strides. >> >> gcc/testsuite: >> >> 2012-08-01 Bill Schmidt <wschm...@linux.ibm.com> >> >> * gcc.dg/tree-ssa/slsr-5.c: New. >> * gcc.dg/tree-ssa/slsr-6.c: New. >> * gcc.dg/tree-ssa/slsr-7.c: New. >> * gcc.dg/tree-ssa/slsr-8.c: New. >> * gcc.dg/tree-ssa/slsr-9.c: New. >> * gcc.dg/tree-ssa/slsr-10.c: New. >> * gcc.dg/tree-ssa/slsr-11.c: New. >> * gcc.dg/tree-ssa/slsr-12.c: New. >> * gcc.dg/tree-ssa/slsr-13.c: New. >> * gcc.dg/tree-ssa/slsr-14.c: New. >> * gcc.dg/tree-ssa/slsr-15.c: New. >> * gcc.dg/tree-ssa/slsr-16.c: New. >> * gcc.dg/tree-ssa/slsr-17.c: New. >> * gcc.dg/tree-ssa/slsr-18.c: New. >> * gcc.dg/tree-ssa/slsr-19.c: New. >> * gcc.dg/tree-ssa/slsr-20.c: New. >> * gcc.dg/tree-ssa/slsr-21.c: New. >> * gcc.dg/tree-ssa/slsr-22.c: New. >> * gcc.dg/tree-ssa/slsr-23.c: New. >> * gcc.dg/tree-ssa/slsr-24.c: New. >> * gcc.dg/tree-ssa/slsr-25.c: New. >> * gcc.dg/tree-ssa/slsr-26.c: New. >> * gcc.dg/tree-ssa/slsr-30.c: New. >> * gcc.dg/tree-ssa/slsr-31.c: New. >> >> > ====================================== >> --- gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c (revision 0) >> +++ gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c (revision 0) >> @@ -0,0 +1,25 @@ >> +/* Verify straight-line strength reduction fails for simple integer addition >> + with casts thrown in when -fwrapv is used. */ >> + >> +/* { dg-do compile } */ >> +/* { dg-options "-O3 -fdump-tree-dom2 -fwrapv" } */ >> +/* { dg-skip-if "" { ilp32 } { "-m32" } { "" } } */ >> + > > This doesn't work on x32 nor Linux/ia32 since -m32 > may not be needed for ILP32. This patch works for > me. OK to install?
This also does not work for mips64 where the options are either -mabi=32 or -mabi=n32 for ILP32. HJL's patch looks correct. Thanks, Andrew > > Thanks. > > > -- > H.J. > --- > * gcc.dg/tree-ssa/slsr-30.c: Require non-ilp32. Remove > dg-skip-if. > > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c > b/gcc/testsuite/gcc.dg/tree > -ssa/slsr-30.c > index fbd6897..7921f43 100644 > --- a/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c > +++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c > @@ -1,9 +1,8 @@ > /* Verify straight-line strength reduction fails for simple integer addition > with casts thrown in when -fwrapv is used. */ > > -/* { dg-do compile } */ > +/* { dg-do compile { target { ! { ilp32 } } } } */ > /* { dg-options "-O3 -fdump-tree-dom2 -fwrapv" } */ > -/* { dg-skip-if "" { ilp32 } { "-m32" } { "" } } */ > > long > f (int s, long c)