This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Fix PR middle-end/28690, indexed load/store performance + reload bug
- From: Ian Lance Taylor <iant at google dot com>
- To: Peter Bergner <bergner at vnet dot ibm dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: 04 Dec 2006 22:54:25 -0800
- Subject: Re: [PATCH] Fix PR middle-end/28690, indexed load/store performance + reload bug
- References: <20061205050808.GA13002@vervain.rchland.ibm.com>
Peter Bergner <firstname.lastname@example.org> writes:
> 2006-12-04 Peter Bergner <email@example.com>
> PR middle-end/28690
> * rtlanal.c (swap_commutative_operands_p): Preference a REG_POINTER
> over a non REG_POINTER.
> * tree-ssa-address.c (gen_addr_rtx): Force a REG_POINTER to be
> the first operand of a PLUS.
> * reload1.c (eliminate_regs_in_insn): Don't call single_set() on
> PARALLEL insns.
The patch to rtlanal.c is OK.
The patch to reload1.c is OK if you change 0 to NULL_RTX in this line:
> + old_set = 0;
The patch to tree-ssa-address.c I'm not sure about. In RTL land I
would say that this is something that should be handled by
LEGITIMIZE_MEMORY_ADDRESS. For example, see how this is done in
hppa_legitimize_address in pa/pa.c. I don't see any similar code in
rs6000_legitimize_address. If you change rs6000_legitimize_address to
do this flip, do you still need this case in tree-ssa-address.c?