Commit Message

This is a follow-up to my RFC of 2/4/2011, addressing
http://gcc/gnu.org/PR46556 by exposing target addressing modes prior to
the expand phase. I've addressed many of the comments from the earlier
skeletal revision, and would like to get some additional feedback at
this point.
Commentary including #### reflects notes to myself for things I haven't
gotten to yet. I have some other comments containing the flag
"EXPERTS:", for which I'm hoping to get specific feedback on questions
that I have.
Changes since the previous submission:
* The code now performs local CSE on statements inserted for
address generation.
* I'm providing a base_hint to create_mem_ref now, which removes
a large class of cases where it formerly produced base expressions
of zero. There are still some of those to look into.
* I added several checks to avoid base addresses that point to an
address outside of the targeted object, which the aliasing
machinery doesn't care for.
* I added a debug counter as suggested, which has been very helpful
in sorting out some complex cases -- thanks for the tip!
* As suggested, I created a general helper function for converting
memory references to affine combinations of trees, and placed it
in tree-affine.c.
(I just realized I haven't updated to a recent svn revision in a few
weeks -- sorry about that.)
Again, thanks for your previous excellent comments, and I look forward
to more of the same! Patch follows.