This is the mail archive of the
mailing list for the GCC project.
Re: PTR-PLUS merge into the mainline
- From: Richard Guenther <rguenther at suse dot de>
- To: Roman Zippel <zippel at linux-m68k dot org>
- Cc: Andrew Pinski <pinskia at gmail dot com>, Andrew_Pinski at playstation dot sony dot com, gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Thu, 5 Jul 2007 10:37:29 +0200 (CEST)
- Subject: Re: PTR-PLUS merge into the mainline
- References: <OFC6AC01DD.DCB69225-ON88257309.0010816F-88257309.0010FB88@playstation.sony.com> <Pine.LNX.email@example.com> <firstname.lastname@example.org> <Pine.LNX.email@example.com>
On Thu, 5 Jul 2007, Roman Zippel wrote:
> 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 <firstname.lastname@example.org>
> > 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.
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.