On Thu, 2008-05-08 at 11:38 -0700, Steve Ellcey wrote:
> The psuedo for %r8 does have REG_POINTER set and the psuedo for %r19
> does not.  I first see REG_POINTER set for ivtmp___1536 (the psuedo for
> %r8) in flow.c.138r.loop2_invariant.  This seems interesting because
> Peter's patch, that fixes this problem without undoing Andrews patch,
> includes a change to loop-invariant.c, though that change should be
> preserving REG_POINTER's during optimization not preventing them.

Similar to hppa, power6 cares about knowing whether a pseudo is a pointer
or not, because for regA + regB load/store addressing, we get much better
performance if regA is the pointer and regB is the offset rather than
the other way around.  What I found, was that the loop invariant and
GCSE code were creating some pseudos to copy expressions into, but was
failing to copy the REG_POINTER/MEM_POINTER attribute along with it.

The hunk from:

  http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00693.html

which replaced the rtlanal.c from the first commit was needed at -O0,
because the only chance to order the operands at -O0 is at expand time.


Peter



Reply via email to