PTR-PLUS merge into the mainline

Richard Guenther rguenther@suse.de
Thu Jul 5 08:34:00 GMT 2007


On Thu, 5 Jul 2007, Roman Zippel wrote:

> Hi,
> 
> On Fri, 29 Jun 2007, Andrew Pinski wrote:
> 
> > > I'm not sure that's related, what's happening in my example is that the
> > > call to fold_plusminus_mult_expr() defeats the optimization attempted in
> > > pointer_int_sum(). If I use the patch below to restrict the condition, my
> > > problem is fixed, but PR32120 is unchanged.
> > > Actually if I compare the final_cleanup dump of PR32120 with the output
> > > from gcc 4.1, they are basically identical.
> > 
> > The code to fold_binary was added by:
> > r107218 | rguenth | 2005-11-19 03:29:10 -0800 (Sat, 19 Nov 2005) | 9 lines
> > 
> > 2005-11-19  Richard Guenther  <rguenther@suse.de>
> > 
> >        PR middle-end/23294
> >        * fold-const.c (fold_plusminus_mult_expr): New function.
> >        (fold_binary): Use to canonicalize PLUS_EXPR and MINUS_EXPR
> >        cases, remove now unnecessary code.
> > 
> >        * gcc.dg/tree-ssa/pr23294.c: New testcase.
> > 
> > And it looks like it was doing this transformation this way on purpose.
> > Now as I mentioned before the way this should be done is using PRE/FRE
> > to catch the redudent multiplication.
> 
> I have to agree, IMHO it looks this optimization is done to early.
> Richard, it would be great if you comment on this.
> Thanks.

No, the fold code just does canonicalization.  If you remove that you
just switch the cases that are not handled.  The real fix is in the
value numberer that should value number both kinds the same.

Richard.



More information about the Gcc mailing list