Hi,
Comments inline.

(Taking a pass with focus on cosmetic stuff.  This is intended to help Segher
focus on the harder parts :-) ).

On Mon, 2020-03-23 at 16:38 -0400, Michael Meissner via Gcc-patches wrote:

Subject: [Patch v327] set -mcprel by default ...

Include some powerpc or rs6000 reference in the subject.  My filters
missed this one.   (I'm assuming this is powerpc target specific). 


> This is a revision of a patch that I've submitted several times.  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.

The fewer words, the easier to review.  History is important but so is
making the review easy.  

"This patch makes -mpcrel the default on Linux 64-bit systems that use
ELF V2, medium code model, and have not disabled prefix instructions." 

> 
> Previous versions of the patch had two macros that the target os could set, 
> one
> to say that the target os supported prefixed instructions with large numeric
> offsets, and the second whether PC-relative prefixed load/store instructions
> could be generated.  Segher asked that we drop the capability to configure
> whether prefixed numeric load/store instructions would be enabled by default,
> and this patch does this.  All of the PC-relative support is in the master
> branch, we just need to enable it by default.

[v327] dropped macros to indicate if target supports prefixed
instructions pre previous feedback.

> 
> Is this patch acceptable to be committed to the master branch.  I have done
> various tests with this patch, including most recently bootstraping and 
> running
> make check.  I have built the Spec 2017 benchmark suite with this patch.

> 
> 2020-03-23  Michael Meissner  <meiss...@linux.ibm.com>
> 
>       * config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Enable -mpcrel
>       for -mcpu=future by default on 64-bit systems with medium code
>       model.
>       * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Do not
>       define the bits for -mprefixed or -mpcrel here.

The change to ISA_FUTURE_MASKS_SERVER only drops OPTION_MASK_PREFIXED. 
No change to PCREL there.

>       (OTHER_FUTURE_MASKS): Define the bits for -mprefixed and -mpcrel
>       here.

No touches to OTHER_FUTURE_MASKS below.   (accidental patch ommission
or missed a changelog update?)

>       * config/rs6000/rs6000.c (PCREL_SUPPORTED_BY_OS): If not defined,
>       don't enable -mpcrel by default.

I suggest
s/If not defined//

>       (rs6000_option_override_internal): Enable -mpcrel on systems that
>       support it, if the user did not do -mno-pcrel.

I suggest
s/if the user ...// 

> 
> --- /tmp/QuuFm5_linux64.h     2020-03-20 20:15:38.321862650 -0400
> +++ gcc/config/rs6000/linux64.h       2020-03-20 18:36:33.654484833 -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 support for PC-relative addressing on the 'future' system.  
> Currently
> +   this support only exits for the ELF v2 object file format using the medium
> +   code model.  */
> +#undef  PCREL_SUPPORTED_BY_OS
> +#define PCREL_SUPPORTED_BY_OS        (TARGET_FUTURE && TARGET_PREFIXED       
> \
> +                              && ELFv2_ABI_CHECK                     \
> +                              && (TARGET_CMODEL == CMODEL_MEDIUM))

Is there need or desire to explicitly set TARGET_FUTURE or
TARGET_PREFIXED to zero in the header file now?  There are no other
references to those in the header file.

Otherwise OK.

> --- /tmp/sO5cAE_rs6000-cpus.def       2020-03-20 20:15:38.331862575 -0400
> +++ gcc/config/rs6000/rs6000-cpus.def 2020-03-20 17:05:17.347638233 -0400
> @@ -75,11 +75,10 @@
>                                | 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.  The addressing related options
> +   (like -mprefixed, -mpcrel) are not set here.  */

So, where are they set?  why is it important to say they are not set
here?

>  #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/xQt3Pd_rs6000.c      2020-03-20 20:15:38.343862485 -0400
> +++ gcc/config/rs6000/rs6000.c        2020-03-20 20:11:02.942928364 -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

Presumably this will one day have additional logic to enable PCREL.
Ok.

> +
>  /* Support targetm.vectorize.builtin_mask_for_load.  */
>  tree altivec_builtin_mask_for_load;
> 
> @@ -4012,6 +4018,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)
>      {

Ok.


> @@ -4173,6 +4184,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.

> 
> 

Reply via email to