This is the mail archive of the gcc-patches@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]

Pointer Plus Patch


Since I don't know if I got the official go ahead to just merge this
branch or not (I am a bit worried to merge it and then getting told I
did the wrong thing), I am sending the (big) patch for review (it
includes a new changelog for each directory which contained a
changelog before).  This is latest and greatest patch from the branch.
The patch contains a couple of new testcases which could go in
seperate if need be.  But most of the changes are mechanical
s/PLUS_EXPR/POINTER_PLUS_EXPR/ .  There are a couple of places where
it is not.  Scalar evolution for an example has a change such that
when you have a pointer type, the increment is not in that pointer
type but is in sizetype.  In VRP, we only support now MIN_EXPR,
MAX_EXPR, and POINTER_PLUS_EXPR for pointers and we will get ICEs if
we have any other tree code.  Alias is better because we now know
which side is a pointer type (this is also true for restrict for rtl
aliasing too).

Even though this patch is large, it removes a lot of code dealing with
how the index could be either operand of PLUS_EXPR.  It only adds a
small bit of extra folding (cross folding between PLUS_EXPR and
POINTER_PLUS_EXPR).

I think I added enough checks in both build2_stat and in the tree cfg
checking code to make sure we only get POINTER_PLUS_EXPR and no
PLUS_EXPR for pointers.

There is only one part which I have been worried about and that is the
C++ front-end when dealing with templates, this patch does a build2
with a NULL operand 0 to get around checking for pointer type with
PLUS_EXPR.  I did not change to change more code in the C++ front-end
than I wantted to.  I did forget one thing I need to change for the
C++ front-end, the diagnostic code; I only thought of this now.

What should I do about the ChangeLog, should I keep ChangeLog.ptr or
write a new one and when I commit, commit it with that one?

This branch has been bootstrapped and tested on powerpc64-linux-gnu,
i686-linux-gnu, powerpc-darwin, sh4-linux-gnu, sparc-solaris,
ia64-linux-gnu.  Built and tested for arm-elf, mips-elf, spu-elf.  And
some more which I forgot now.  This was tested with Ada turned on at
least on i686-linux-gnu.

Should I just go ahead and merge it tomorrow or wait for review of the patch?

Thanks,
Andrew Pinski

Attachment: wholeptrplus.diff.txt
Description: Text document


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