This is the mail archive of the gcc@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: PTR-PLUS merge into the mainline


On 6/29/07, Roman Zippel <zippel@linux-m68k.org> wrote:
Hi,

On Thu, 28 Jun 2007, Andrew_Pinski@PlayStation.Sony.Com wrote:

> Roman Zippel <zippel@linux-m68k.org> wrote on 06/28/2007 07:54:43 PM:
>
> > Hi,
> > Notice that it generates the (i + 1) * 4 instead of (i * 4) + 4 as with
> > the other cases. While I tried to debug this I narrowed it down to the
> > changes in fold_binary(), but I don't really know how to fix this, so
> > I could use some help here.
>
> The main thing is that this is really PR 32120.  The problem is only
> related to the
> merge because of the way fold_binary works.

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.

-- Pinski


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