This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Improve funcorder.c optimisation on ppc-darwin
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- To: gkeating at apple dot com
- Cc: gcc-patches at gcc dot gnu dot org, dave dot anglin at nrc-cnrc dot gc dot ca, jh at suse dot cz
- Date: Tue, 14 Oct 2003 13:46:41 -0400 (EDT)
- Subject: Re: Improve funcorder.c optimisation on ppc-darwin
> This patch:
>
> +2003-10-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
> +
> + PR optimization/12142
> + * cse.c (count_reg_usage): In a SET with a REG SET_DEST, count the
> + uses of the register in the SET_SRC. Remove unnecessary argument.
> + * pa.c (legitimize_pic_address): Before reload, use a scratch
> register
> + for the intermediate result in loading the address of a SYMBOL_REF.
> + Set the MEM_NOTRAP_P flag for the MEM. Add a REG_EQUAL to the insn
> + which loads the SYMBOL_REF address.
>
> caused
> FAIL: gcc.dg/funcorder.c scan-assembler-not link_error
>
> on powerpc-darwin. I can't convince myself that the Dave's patch is either
> correct or incorrect; certainly, it seems like the patch suppresses at
> least some legitimate optimisations.
Yes, I'm wondering if it would be better to revert the cse.c portion of my
patch and Jan's rework of count_reg_usage last March. I noticed a simple
nop move survived to the combine pass in some code I was looking at on the
weekend. I had thought that other optimizations would clean up the
situations where it wasn't possible to use a scratch register. However,
it seems that this isn't always the case.
If this rework is done, count_reg_usage would have to be fixed to handle
-fnon-call-exceptions correctly.
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)