[cfe-dev] [ARM][AArch64] Default to -fno-common

Eli Friedman via cfe-dev cfe-dev at lists.llvm.org
Tue Feb 25 15:03:12 PST 2020


From my experience, the most important optimization that doesn't work on "common" definitions is GlobalMerge.

-Eli

> -----Original Message-----
> From: cfe-dev <cfe-dev-bounces at lists.llvm.org> On Behalf Of Fangrui Song via
> cfe-dev
> Sent: Tuesday, February 25, 2020 9:48 AM
> To: cfe-dev <cfe-dev at lists.llvm.org>
> Subject: [EXT] Re: [cfe-dev] [ARM][AArch64] Default to -fno-common
>
> I am in favor of this change (-fno-common is the sane default; GCC HEAD (future
> 11) will default to -fno-common),
> and left some comments on https://reviews.llvm.org/D75056
>
> But I have questions about the two claims.
>
> For performance benefits:
>    Is it because
>
>    1. we missed some optimization for CommonLinkage
>    2. CommonLinkage is considered interposable.
>
> For code-size reasons:
>    I think it may actually be a very minor regression. Why does a common
>    symbol cost more bytes?
>
> On 2020-02-25, Sjoerd Meijer via cfe-dev wrote:
> >Thanks for your comments and suggestions. I think we can continue the
> discussion in D75056, and I will prepare a revision that enables this for all
> targets.
> >
> >Cheers,
> >Sjoerd.
> >________________________________
> >From: James Y Knight <jyknight at google.com>
> >Sent: 24 February 2020 21:49
> >To: Sjoerd Meijer <Sjoerd.Meijer at arm.com>
> >Cc: Tom Stellard <tstellar at redhat.com>; cfe-dev at lists.llvm.org Developers
> <cfe-dev at lists.llvm.org>
> >Subject: Re: [cfe-dev] [ARM][AArch64] Default to -fno-common
> >
> >IMO, it would be less confusing to just change the default to false across the
> board.
> >
> >If anything should still use -fcommon by default, I'd want that to be based on
> vendor/OS, not CPU.
> >
> >On Mon, Feb 24, 2020 at 11:38 AM Sjoerd Meijer via cfe-dev <cfe-
> dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org>> wrote:
> >>  Is there any reason to limit this to just the ARM targets?
> >
> >No good reason other than that I don't know how beneficial this is for other
> targets.
> >But I definitely don't mind giving other targets the same treatment though
> while I am at it.
> >
> >Cheers,
> >Sjoerd.
> >
> >________________________________
> >From: Tom Stellard <tstellar at redhat.com<mailto:tstellar at redhat.com>>
> >Sent: 24 February 2020 16:31
> >To: Sjoerd Meijer
> <Sjoerd.Meijer at arm.com<mailto:Sjoerd.Meijer at arm.com>>; cfe-
> dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org> Developers <cfe-
> dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org>>
> >Subject: Re: [cfe-dev] [ARM][AArch64] Default to -fno-common
> >
> >On 02/24/2020 08:28 AM, Sjoerd Meijer via cfe-dev wrote:
> >> Hello,
> >>
> >> Subject says most of it: I would like to propose that the Arm targets default
> to -fno-common for performance and code-size reasons. In addition, GCC has
> also flipped the switch recently, see [1], so we would get the same behaviour as
> GCC which would also be nice. I've learned that the switch for GCC was
> relatively straightforward (for users), and there is some GNU documentation
> with Q&As to help toolchain users to transition if they find problems. I have put
> a draft patch up for review here: https://reviews.llvm.org/D75056. This
> definitely needs some doc changes (and I need to look at the tests), but first I
> would like to see how we feel about flipping the switch: any ideas, comments,
> objections?
> >>
> >
> >Is there any reason to limit this to just the ARM targets?
> >
> >-Tom
> >
> >> Cheers,
> >> Sjoerd.
> >>
> >>
> >> [1] The GCC commit:
> >>
> >> commit 6271dd984d7f920d4fb17ad37af6a1f8e6b796dc
> >> Author: Wilco Dijkstra <wdijkstr at arm.com<mailto:wdijkstr at arm.com>>
> >> Date:   Wed Nov 20 16:29:23 2019 +0000
> >>
> >>     PR85678: Change default to -fno-common
> >>     GCC currently defaults to -fcommon.  As discussed in the PR, this is an
> ancient
> >>     C feature which is not conforming with the latest C standards.  On many
> targets
> >>     this means global variable accesses have a codesize and performance
> penalty.
> >>     This applies to C code only, C++ code is not affected by -fcommon.  It is
> about
> >>     time to change the default.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev


More information about the cfe-dev mailing list