> -----Original Message----- > From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of Kyrylo > Tkachov > Sent: 30 April 2020 11:57 > To: Andrew Pinski <pins...@gmail.com>; Florian Weimer > <fwei...@redhat.com> > Cc: gcc-patches@gcc.gnu.org; nmeye...@amzn.com > Subject: RE: Should ARMv8-A generic tuning default to -moutline-atomics > > [Moving to gcc-patches] > > > -----Original Message----- > > From: Gcc <gcc-boun...@gcc.gnu.org> On Behalf Of Andrew Pinski via Gcc > > Sent: 30 April 2020 07:21 > > To: Florian Weimer <fwei...@redhat.com> > > Cc: GCC Mailing List <g...@gcc.gnu.org>; nmeye...@amzn.com > > Subject: Re: Should ARMv8-A generic tuning default to -moutline-atomics > > > > On Wed, Apr 29, 2020 at 6:25 AM Florian Weimer via Gcc <g...@gcc.gnu.org> > > wrote: > > > > > > Distributions are receiving requests to build things with > > > -moutline-atomics: > > > > > > <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=956418> > > > > > > Should this be reflected in the GCC upstream defaults for ARMv8-A > > > generic tuning? It does not make much sense to me if every distribution > > > has to overide these flags, either in their build system or by patching > > > GCC. > > > > At least we should make it a configure option. > > I do want the ability to default it for our (Marvell) toolchain for > > Linux (our bare metal toolchain will be defaulting to ARMv8.2-a > > anyways). > > After some internal discussions, I am open to having it on as a default. > Here are two versions. One has it as a tuning setting that CPUs can override, > the other just switches it on by default always unless overridden by -mno- > outline-atomics. > I slightly prefer the second one as it's cleaner and simpler, but happy to > take > either. > Any preferences? > Thanks, > Kyrill > > ChangeLogs: > > 2020-04-30 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * config/aarch64/aarch64-tuning-flags.def (no_outline_atomics): > Declare. > * config/aarch64/aarch64.h (TARGET_OUTLINE_ATOMICS): Define. > * config/aarch64/aarch64.opt (moutline-atomics): Change to Int > variable. > > 2020-04-30 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * config/aarch64/aarch64.h (TARGET_OUTLINE_ATOMICS): Define. > * config/aarch64/aarch64.opt (moutline-atomics): Change to Int > variable. > * doc/invoke.texi (moutline-atomics): Document as on by default. >
I've pushed this second variant after bootstrap and testing on aarch64-none-linux-gnu. Compiled a simple atomic-using testcase with all relevant combinations of -moutline-atomics and LSE and no-LSE -march options. Before the results were (as expected): |-moutline-atomics | -mno-outline-atomics | <no outline-atomics option -------------------------------------------------------------------------------- LSE | inline LSE | inline LSE | inline LSE no-LSE | outline | inline LDXR/STXR | inline LDX/STXR with this patch they are: -moutline-atomics | -mno-outline-atomics | <no outline-atomics option> -------------------------------------------------------------------------------- LSE | inline LSE | inline LSE | inline LSE no-LSE | outline | inline LDXR/STXR | outline Thanks, Kyrill