On Mon, 2020-04-06 at 12:52 -0400, Michael Meissner via Gcc-patches wrote:

Hi, 

Just a single extra blank line below.

I'm still not a fan of the "Do not set..." comment, but will assume there
is history that necessitates the comment.

Other sections looked OK to me.

Over to Segher. :-)

Thanks,
-Will

> Commit message:
> Enable -mpcrel for -mcpu=future if it is allowed by the ABI.
> 
> 2020-04-06  Michael Meissner  <meiss...@linux.ibm.com>
> 
>       * config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Enable
>       prefixed PC-relative addressing if the ABI supports it.
>       * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Do not
>       set OPTION_MASK_PREFIXED here.
>       * config/rs6000/rs6000.c (rs6000_option_override_internal): Enable
>       OPTION_MASK_PREFIXED and OPTION_MASK_PCREL on -mcpu=future by
>       default if the current ABI allows the options.
> 
> I tested this on a little endian PowerPC power8 system, doing bootstrap and
> make check.  There were no regressions.  I tested by hand the various
> conditions where -mpcrel is not enabled, and they all used the normal power9
> TOC references.
> 
>     -mcpu=power9                      generates TOC;
>     -mcpu=future -mcmodel=large               generates TOC;
>     -mcpu=future -mcmode=small                generates TOC;
>     -mcpu=future -mno-prefixed                generates TOC;
>     -mcpu=future -mno-pcrel           generates TOC;
>     -mcpu=future                      generates PC-relative.
> 

ok,

> --- /tmp/apbaWN_linux64.h     2020-04-03 17:15:05.059677000 -0400
> +++ gcc/config/rs6000/linux64.h       2020-04-03 17:01:05.580426937 -0400
> @@ -640,3 +640,10 @@ extern int dot_symbols;
>     enabling the __float128 keyword.  */
>  #undef       TARGET_FLOAT128_ENABLE_TYPE
>  #define TARGET_FLOAT128_ENABLE_TYPE 1
> +
> +/* Enable using prefixed PC-relative addressing on the 'future' machine if 
> the
> +   ABI supports it.  The ELF v2 ABI only supports PC-relative relocations for
> +   the medium code model.  */
> +#define PCREL_SUPPORTED_BY_OS        (TARGET_FUTURE && TARGET_PREFIXED       
> \
> +                              && ELFv2_ABI_CHECK                     \
> +                              && (TARGET_CMODEL == CMODEL_MEDIUM))

ok


> --- /tmp/XzRKno_rs6000-cpus.def       2020-04-03 17:15:05.068676928 -0400
> +++ gcc/config/rs6000/rs6000-cpus.def 2020-04-03 17:00:50.115550614 -0400
> @@ -75,10 +75,14 @@
>                                | 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.  Do not set 
> OPTION_MASK_PREFIXED
> +   or OPTION_MASK_PCREL here.  Those options are enabled in the function
> +   rs6000_option_override if the ABI supports them.  */
>  #define ISA_FUTURE_MASKS_SERVER      (ISA_3_0_MASKS_SERVER                   
> \
> -                              | OPTION_MASK_FUTURE                   \
> +                              | OPTION_MASK_FUTURE)
> +
> +/* Flags that need to be turned off if -mno-future.  */
> +#define OTHER_FUTURE_MASKS   (OPTION_MASK_PCREL                      \
>                                | OPTION_MASK_PREFIXED)
> 

ok.

>  /* Flags that need to be turned off if -mno-future.  */
> --- /tmp/nyxSRY_rs6000.c      2020-04-03 17:15:05.081676823 -0400
> +++ gcc/config/rs6000/rs6000.c        2020-04-03 17:03:19.846353197 -0400
> @@ -4020,6 +4020,12 @@ 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;
> +
> +

extra blank line.

>    /* -mprefixed (and hence -mpcrel) requires -mcpu=future.  */
>    if (TARGET_PREFIXED && !TARGET_FUTURE)
>      {
> @@ -4171,6 +4177,14 @@ rs6000_option_override_internal (bool gl
>    SUB3TARGET_OVERRIDE_OPTIONS;
>  #endif
> 
> +#ifdef PCREL_SUPPORTED_BY_OS
> +  /* If the ABI has support for PC-relative relocations, enable it by
> +     default.  */
> +  if (PCREL_SUPPORTED_BY_OS
> +      && (rs6000_isa_flags_explicit & OPTION_MASK_PCREL) == 0)
> +    rs6000_isa_flags |= OPTION_MASK_PCREL;
> +#endif
> +

ok.

>    /* -mpcrel requires -mcmodel=medium, but we can't check TARGET_CMODEL until
>        after the subtarget override options are done.  */
>    if (TARGET_PCREL && TARGET_CMODEL != CMODEL_MEDIUM)
> 

Reply via email to