Bad code generation on HPPA platform
Peter Bergner
bergner@vnet.ibm.com
Thu May 8 18:58:00 GMT 2008
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
More information about the Gcc
mailing list