On Fri, 2020-03-27 at 21:31 -0400, Michael Meissner via Gcc-patches wrote:
Hi, A few cosmetic nits and comments sprinkled in below. I defer to Segher for his approvals and comments. thanks, -Will > This is a revised version of the patch I posted on March 23rd. The > changes are > to update the comments and improve the ChangeLog. Missing the description of what the patch actually does. (From Mar 23): > It makes > -mpcrel the default on Linux 64-bit systems that use ELF v2, use the medium > code mode, and if the user did not disable prefixed load/store instructions > for > -mcpu=future. > There were no regressions when I did the bootstrap and make check > steps. I > verified that -mcpu=future does turn on -mprecl if you are targeting > a Linux -mpcrel > ELF v2 system and use the medium code model. Can I check this into > the master > branch? > > 2020-03-27 Michael Meissner <meiss...@linux.ibm.com> > > * config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): New macro. > * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Do > not > set -mprefixed here. > * config/rs6000/rs6000.c (PCREL_SUPPORTED_BY_OS): New macro. > (rs6000_option_override_internal): Set the -mprefixed and > -mpcrel > options for -mcpu=future if these options can be used. > s/can be used/are supported by the platform/ ? > --- /tmp/JVBhAf_linux64.h 2020-03-27 16:27:05.478619500 -0400 > +++ gcc/config/rs6000/linux64.h 2020-03-27 16:21:56.268876616 > -0400 > @@ -640,3 +640,11 @@ extern int dot_symbols; > enabling the __float128 keyword. */ > #undef TARGET_FLOAT128_ENABLE_TYPE > #define TARGET_FLOAT128_ENABLE_TYPE 1 > + > +/* Enable default support for PC-relative addressing on the 'future' > system if > + we can use the PC-relative instructions. Currently this support > only exits exists > + for the ELF v2 object file format using the medium code > model. */ should that be "s/object file format/ABI/" ? > +#undef PCREL_SUPPORTED_BY_OS > +#define PCREL_SUPPORTED_BY_OS (TARGET_FUTURE && > TARGET_PREFIXED \ > + && ELFv2_ABI_CHECK > \ > + && (TARGET_CMODEL == CMODEL_MEDIUM)) > --- /tmp/KyQOUN_rs6000-cpus.def 2020-03-27 16:27:05.488619427 > -0400 > +++ gcc/config/rs6000/rs6000-cpus.def 2020-03-27 16:23:51.780030238 > -0400 > @@ -75,11 +75,11 @@ > | OPTION_MASK_P8_VECTOR \ > | OPTION_MASK_P9_VECTOR) > > -/* Support for a future processor's features. Do not enable -mpcrel > until it > - is fully functional. */ > +/* Support for a future processor's features. We do not set -mpcrel > or > + -mprefixed here. These bits are set in rs6000_option_override if > the system > + supports those options. */ I'm still not sure the comment here is actually necessary, there are many other places where we also do not set -mpcrel or -mprefixed. If history of the code here requires a hint to point at those options being set in rs6000_option_override, then it's fine. > #define ISA_FUTURE_MASKS_SERVER (ISA_3_0_MASKS_SERVER \ > - | OPTION_MASK_FUTURE \ > - | OPTION_MASK_PREFIXED) > + | OPTION_MASK_FUTURE) > > /* Flags that need to be turned off if -mno-future. */ > #define OTHER_FUTURE_MASKS (OPTION_MASK_PCREL > \ > --- /tmp/z4Mwhm_rs6000.c 2020-03-27 16:27:05.500619340 -0400 > +++ gcc/config/rs6000/rs6000.c 2020-03-27 16:20:13.066641659 > -0400 > @@ -98,6 +98,12 @@ > #endif > #endif > > +/* Set up the defaults for whether PC-relative addressing is > supported by the > + target system. */ > +#ifndef PCREL_SUPPORTED_BY_OS > +#define PCREL_SUPPORTED_BY_OS 0 > +#endif > + > /* Support targetm.vectorize.builtin_mask_for_load. */ > tree altivec_builtin_mask_for_load; > > @@ -4014,6 +4020,11 @@ rs6000_option_override_internal (bool gl > rs6000_isa_flags &= ~OPTION_MASK_FLOAT128_HW; > } > > + /* Enable -mprefixed by default on 64-bit 'future' systems. */ > + if (TARGET_FUTURE && TARGET_POWERPC64 > + && (rs6000_isa_flags_explicit & OPTION_MASK_PREFIXED) == 0) > + rs6000_isa_flags |= OPTION_MASK_PREFIXED; > + > /* -mprefixed (and hence -mpcrel) requires -mcpu=future. */ > if (TARGET_PREFIXED && !TARGET_FUTURE) > { > @@ -4175,6 +4186,11 @@ rs6000_option_override_internal (bool gl > rs6000_isa_flags &= ~OPTION_MASK_PCREL; > } > > + /* If the OS has support for PC-relative relocations, enable it now. */ > + if (PCREL_SUPPORTED_BY_OS > + && (rs6000_isa_flags_explicit & OPTION_MASK_PCREL) == 0) > + rs6000_isa_flags |= OPTION_MASK_PCREL; > + > if (TARGET_DEBUG_REG || TARGET_DEBUG_TARGET) > rs6000_print_isa_options (stderr, 0, "after subtarget", > rs6000_isa_flags); > Ok. thanks -Will