This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Strength reduction


On Tue, 26 Jun 2012, William J. Schmidt wrote:

> On Tue, 2012-06-26 at 15:06 +0200, Richard Guenther wrote:
> > On Mon, 25 Jun 2012, William J. Schmidt wrote:
> > 
> > > Here's a new version of the main strength reduction patch, addressing
> > > previous comments.  A couple of quick notes:
> > > 
> > > * I opened PR53773 and PR53774 for the cases where commutative
> > > operations were encountered with a constant in rhs1.  This version of
> > > the patch still has the gcc_asserts in place to catch those cases, but
> > > I'll plan to remove those once the patch is approved.
> > > 
> > >  * You previously asked:
> > > 
> > > >>
> > > >> +static slsr_cand_t
> > > >> +base_cand_from_table (tree base_in)
> > > >> +{
> > > >> +  slsr_cand mapping_key;
> > > >> +
> > > >> +  gimple def = SSA_NAME_DEF_STMT (base_in);
> > > >> +  if (!def)
> > > >> +    return (slsr_cand_t) NULL;
> > > >> +
> > > >> +  mapping_key.cand_stmt = def;
> > > >> +  return (slsr_cand_t) htab_find (stmt_cand_map, &mapping_key);
> > > >>
> > > >> isn't that reachable via the base-name -> chain mapping for base_in?
> > > 
> > > I had to review this a bit, but the answer is no.  If you look at one of
> > > the algebraic manipulations in create_mul_ssa_cand as an example,
> > > base_in corresponds to Y.  base_cand_from_table is looking for a
> > > candidate that has Y for its LHS.  The base-name -> chain mapping is
> > > used to find all candidates that have B as the base_name.
> > > 
> > >  * I added a detailed explanation of what's going on with legal_cast_p.
> > > Hopefully this will be easier to understand now.
> > > 
> > > I've bootstrapped this on powerpc64-unknown-linux-gnu with three new
> > > regressions (for which I opened the two bug reports).  Ok for trunk
> > > after removing the asserts?
> > 
> > Ok.  Please keep an eye on possible fallout.
> 
> Yep, will do.
> 
> > 
> > One more question - you put the pass inbetween VRP and DOM, any
> > reason to not put it after DOM/phi_only_cprop which perform CSE?
> > Thus, does strength-reduction expose CSE opportunities?
> 
> It can introduce copies in some circumstances, which DOM will propagate.
> That was the main reason for putting it there, IIRC.  I originally
> placed it after DOM so it would be in a copy-free environment, but it
> ended up leaving some garbage behind that way.
> 
> An alternative would be to explicitly propagate any introduced copies
> and move the pass later.  I don't recall offhand if there were other
> reasons besides copy propagation for moving the pass -- I looked back
> through my notes and apparently didn't record anything about it at the
> time.

Fair enough - the pass pipeline after loop optimizers is not thoroughly
thought through anyway.

Thanks,
Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]