This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [SPARC] Disable -fira-share-save-slots by default
- From: Jeff Law <law at redhat dot com>
- To: Eric Botcazou <ebotcazou at adacore dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 25 May 2011 10:04:49 -0600
- Subject: Re: [SPARC] Disable -fira-share-save-slots by default
- References: <201105250030.07953.ebotcazou@adacore.com>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 05/24/11 16:30, Eric Botcazou wrote:
> The new save slot sharing algorithm has a documented limitation:
>
> Future work:
>
> In the fallback case we should iterate backwards across all possible
> modes for the save, choosing the largest available one instead of
> falling back to the smallest mode immediately. (eg TF -> DF -> SF).
That's not new -- I wrote that circa 1992/1993. The whole point behind
the changes from ~1992 was to try and use DFmode insns when
caller-saving FP regs on the sparc. However, I didn't think it was
worth the effort to deal with that case (TF -> DF -> SF). The code
tries to build a save/restore insn of MOVE_MAX_WORDS size and if that
fails, then it drops back to WORD_SIZE IIRC.
> that is annoying for the SPARC when it comes to floating-point code because the
> floating-point registers are single (SF) but there is a fully-fledged support
> for double (DF) arithmetics in the architecture. So saving registers on an
> individual basis really pessimizes here. For example, the size of the object
> generated for the Ada unit a-nlcefu.ads at -O2 decreases from 96080 to 95088
> bytes when you pass -fno-ira-share-save-slots.
It's the new slot sharing code that doesn't have support for saving
larger hunks. Having written the original code to handle larger saves
specifically to help sparc, I can certainly understand why the new code
is causing you grief :-)
>
> Experiments have shown that the impact on integer code is null in terms of code
> size and negligible in terms of stack usage (-fstack-usage reports 8/16 bytes
> increase for most functions). Therefore this patch disables the option by
> default for the SPARC. Boostrapped/regtested on SPARC/Solaris, applied on the
> mainline and 4.6 branch.
>
>
> Jeff, I'd like to apply it to the 4.5 branch as well, but I need your patch:
>
> 2011-01-21 Jeff Law <law@redhat.com>
>
> PR rtl-optimization/41619
> * caller-save.c (setup_save_areas): Break out code to determine
> which hard regs are live across calls by examining the reload chains
> so that it is always used.
> Eliminate code which checked REG_N_CALLS_CROSSED.
>
> Do you have any objections to me backporting it to the branch?
No objections at all. I don't believe there were any follow-up patches
and all the change did was make more of the paths through caller-save
consistent in how they determined what needed to be saved.
jeff
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJN3SihAAoJEBRtltQi2kC7bnsH/10X0fDwfHtt8b16js5nZHZ8
n+f6TPlAuAu1vJ5h4YI7afybMMfBfHAbvTLwtD+f37boreTQU1wizVH4JLC4GgMS
KP9vB48mK/wHli0Hze37QAxVcQt8CPCr3d1fJtpVp6CNUp1gzLWkqT2GjUmxTxfX
M3qQ7wRot0cfvVDx8upOj3Yr9tih/c/vIm5ez49s8fzha2acSpEB0vFFj3gcx3EO
C3Mgu6z1ZVskIP5KOUIV/2EhtXHMoC4dxsodurfvtGafK5gmbaqVSipzZlKj4BSg
Oc4XPKAy07/cSxQhx94pYFB8+Jr7TC99Yubgq2v2gJitf+99AW9MCWmnEvLfX2A=
=w6DV
-----END PGP SIGNATURE-----