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 <[EMAIL PROTECTED]> > > 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. bye, Roman