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

Reply via email to