On Fri, 2011-10-21 at 11:26 +0200, Richard Guenther wrote: > On Tue, Oct 18, 2011 at 4:14 PM, William J. Schmidt > <wschm...@linux.vnet.ibm.com> wrote:
<snip> > > + > > + /* We don't use get_def_for_expr for S1 because TER doesn't forward > > + S1 in some situations where this transform is useful, such as > > + when S1 is the base of two MEM_REFs fitting the pattern. */ > > + s1_stmt = SSA_NAME_DEF_STMT (TREE_OPERAND (exp, 0)); > > You can't do this - this will possibly generate wrong code. You _do_ > have to use get_def_for_expr. Or do it when we are still in "true" SSA > form... > > Richard. > OK. get_def_for_expr always returns NULL here for the cases I was targeting, so doing this in expand isn't going to be helpful. Rather than cram this in somewhere else upstream, it might be better to just wait and let this case be handled by the new strength reduction pass. This is one of the easy cases with explicit multiplies in the instruction stream, so it shouldn't require any special handling there. Seem reasonable? Bill