diff options
author | Alan Modra <amodra@gmail.com> | 2019-07-28 18:56:13 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2019-07-28 18:56:13 +0930 |
commit | 8d852645145d10bbf72cbd82ef080a0057eb9c0e (patch) | |
tree | 742c00171822737398f231196ec5f81eb2f1719e | |
parent | c5993c9abc360b5dc7ef4d8ebb639725eec7939c (diff) | |
download | gcc-8d852645145d10bbf72cbd82ef080a0057eb9c0e.zip gcc-8d852645145d10bbf72cbd82ef080a0057eb9c0e.tar.gz gcc-8d852645145d10bbf72cbd82ef080a0057eb9c0e.tar.bz2 |
[RS6000] Make assembler command line cpu match default for gcc
When gcc is configured using --with-cpu=<cpu>, the specified cpu
effectively becomes a default -mcpu=<cpu> passed to gcc. This then
affects the cpu passed to gas via ASM_CPU_SPEC. If gcc is not
configured using --with-cpu then the cpu passed to gas is that given
by ASM_DEFAULT_SPEC, which currently does not match the default flags
selected in default64.h. This patch makes ASM_DEFAULT_SPEC agree with
TARGET_DEFAULT flags.
rs6000/default64.h appears in three places in config.gcc, the first
one immediately followed by rs6000/freebsd64.h in $tm_file, and the
other two immediately followed by rs6000/linux64.h. To be able to
define ASM_DEFAULT_SPEC in rs6000/default64.h we don't want to
redefine in the other two files. rs6000/freebsd64.h is easy since
that file is always preceded by rs6000/default64.h, but
rs6000/linux64.h can appear without rs6000/default64.h (a
powerpc*-linux config where the default is -m32). In that case we
will have TARGET_DEFAULT flags of 0 (from rs6000/sysv4.h) and want to
use -mppc without -m64 and -mppc64 with -m64. This can be done by
using the rs6000/rtems.h ASM_DEFAULT_SPEC in rs6000/sysv4.h, a change
that won't affect sysv4 configurations where -m64 is invalid.
The patch also introduces ASM_DEFAULT_EXTRA for the altivec variant
targets so as to enable -maltivec by default.
PR target/91050
* config/rs6000/sysv4.h (ASM_DEFAULT_SPEC): Modify if -m64.
* config/rs6000/default64.h (ASM_DEFAULT_SPEC): Define.
* config/rs6000/freebsd64.h (ASM_DEFAULT_SPEC): Don't define.
* config/rs6000/linux64.h (ASM_DEFAULT_SPEC): Likewise.
* config/rs6000/rtems.h (ASM_DEFAULT_SPEC): Likewise.
* config/rs6000/rs6000.h (ASM_DEFAULT_EXTRA): Define and use
in asm_default spec.
* config/rs6000/eabialtivec.h (ASM_DEFAULT_EXTRA): Redefine.
* config/rs6000/linuxaltivec.h (ASM_DEFAULT_EXTRA): Redefine.
From-SVN: r273853
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/config/rs6000/default64.h | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/eabialtivec.h | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/freebsd64.h | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/linux64.h | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/linuxaltivec.h | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/rtems.h | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/sysv4.h | 2 |
9 files changed, 26 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9239cad..d005cd9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2019-07-28 Alan Modra <amodra@gmail.com> + + PR target/91050 + * config/rs6000/sysv4.h (ASM_DEFAULT_SPEC): Modify if -m64. + * config/rs6000/default64.h (ASM_DEFAULT_SPEC): Define. + * config/rs6000/freebsd64.h (ASM_DEFAULT_SPEC): Don't define. + * config/rs6000/linux64.h (ASM_DEFAULT_SPEC): Likewise. + * config/rs6000/rtems.h (ASM_DEFAULT_SPEC): Likewise. + * config/rs6000/rs6000.h (ASM_DEFAULT_EXTRA): Define and use + in asm_default spec. + * config/rs6000/eabialtivec.h (ASM_DEFAULT_EXTRA): Redefine. + * config/rs6000/linuxaltivec.h (ASM_DEFAULT_EXTRA): Redefine. + 2019-07-28 Gerald Pfeifer <gerald@pfeifer.com> * doc/include/gpl_v3.texi (Copying): Use https for www.gnu.org. diff --git a/gcc/config/rs6000/default64.h b/gcc/config/rs6000/default64.h index 0cceefe..10743fe 100644 --- a/gcc/config/rs6000/default64.h +++ b/gcc/config/rs6000/default64.h @@ -25,7 +25,11 @@ along with GCC; see the file COPYING3. If not see #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN) #undef TARGET_DEFAULT #define TARGET_DEFAULT (ISA_2_7_MASKS_SERVER | MASK_POWERPC64 | MASK_64BIT | MASK_LITTLE_ENDIAN) +#undef ASM_DEFAULT_SPEC +#define ASM_DEFAULT_SPEC "-mpower8" #else #undef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_PPC_GFXOPT | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64 | MASK_64BIT) +#undef ASM_DEFAULT_SPEC +#define ASM_DEFAULT_SPEC "-mpower4" #endif diff --git a/gcc/config/rs6000/eabialtivec.h b/gcc/config/rs6000/eabialtivec.h index 6a95f90..6daa922 100644 --- a/gcc/config/rs6000/eabialtivec.h +++ b/gcc/config/rs6000/eabialtivec.h @@ -23,5 +23,8 @@ #undef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_EABI | MASK_ALTIVEC) +#undef ASM_DEFAULT_EXTRA +#define ASM_DEFAULT_EXTRA " %{!mvsx:%{!maltivec:%{!no-maltivec:-maltivec}}}" + #undef SUBSUBTARGET_OVERRIDE_OPTIONS #define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1 diff --git a/gcc/config/rs6000/freebsd64.h b/gcc/config/rs6000/freebsd64.h index 7e819d1..4951275 100644 --- a/gcc/config/rs6000/freebsd64.h +++ b/gcc/config/rs6000/freebsd64.h @@ -134,11 +134,9 @@ extern int dot_symbols; } \ while (0) -#undef ASM_DEFAULT_SPEC #undef ASM_SPEC #undef LINK_OS_FREEBSD_SPEC -#define ASM_DEFAULT_SPEC "-mppc%{!m32:64}" #define ASM_SPEC "%{m32:%(asm_spec32)}%{!m32:%(asm_spec64)} %(asm_spec_common)" #define LINK_OS_FREEBSD_SPEC "%{m32:%(link_os_freebsd_spec32)}%{!m32:%(link_os_freebsd_spec64)}" diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index bd19749..ba5f640 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -181,24 +181,20 @@ extern int dot_symbols; } \ while (0) -#undef ASM_DEFAULT_SPEC #undef ASM_SPEC #undef LINK_OS_LINUX_SPEC #undef LINK_SECURE_PLT_SPEC #ifndef RS6000_BI_ARCH -#define ASM_DEFAULT_SPEC "-mppc64" #define ASM_SPEC "%(asm_spec64) %(asm_spec_common)" #define LINK_OS_LINUX_SPEC "%(link_os_linux_spec64)" #define LINK_SECURE_PLT_SPEC "" #else #if DEFAULT_ARCH64_P -#define ASM_DEFAULT_SPEC "-mppc%{!m32:64}" #define ASM_SPEC "%{m32:%(asm_spec32)}%{!m32:%(asm_spec64)} %(asm_spec_common)" #define LINK_OS_LINUX_SPEC "%{m32:%(link_os_linux_spec32)}%{!m32:%(link_os_linux_spec64)}" #define LINK_SECURE_PLT_SPEC "%{m32: " LINK_SECURE_PLT_DEFAULT_SPEC "}" #else -#define ASM_DEFAULT_SPEC "-mppc%{m64:64}" #define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)" #define LINK_OS_LINUX_SPEC "%{!m64:%(link_os_linux_spec32)}%{m64:%(link_os_linux_spec64)}" #define LINK_SECURE_PLT_SPEC "%{!m64: " LINK_SECURE_PLT_DEFAULT_SPEC "}" diff --git a/gcc/config/rs6000/linuxaltivec.h b/gcc/config/rs6000/linuxaltivec.h index 0f3e24f..8578f42 100644 --- a/gcc/config/rs6000/linuxaltivec.h +++ b/gcc/config/rs6000/linuxaltivec.h @@ -28,5 +28,8 @@ #define TARGET_DEFAULT MASK_ALTIVEC #endif +#undef ASM_DEFAULT_EXTRA +#define ASM_DEFAULT_EXTRA " %{!mvsx:%{!maltivec:%{!mno-altivec:-maltivec}}}" + #undef SUBSUBTARGET_OVERRIDE_OPTIONS #define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1 diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 70e0616..6c24b48 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -157,6 +157,7 @@ ASM_OPT_ANY #define CPP_DEFAULT_SPEC "" #define ASM_DEFAULT_SPEC "" +#define ASM_DEFAULT_EXTRA "" /* This macro defines names of additional specifications to put in the specs that can be used in various specifications like CC1_SPEC. Its definition @@ -174,7 +175,7 @@ ASM_OPT_ANY { "cpp_default", CPP_DEFAULT_SPEC }, \ { "asm_cpu", ASM_CPU_SPEC }, \ { "asm_cpu_native", ASM_CPU_NATIVE_SPEC }, \ - { "asm_default", ASM_DEFAULT_SPEC }, \ + { "asm_default", ASM_DEFAULT_SPEC ASM_DEFAULT_EXTRA }, \ { "cc1_cpu", CC1_CPU_SPEC }, \ SUBTARGET_EXTRA_SPECS diff --git a/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h index 401077d..0c19802 100644 --- a/gcc/config/rs6000/rtems.h +++ b/gcc/config/rs6000/rtems.h @@ -254,9 +254,6 @@ %{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540} } } \ %{mcpu=e6500: -D__PPC_CPU_E6500__}" -#undef ASM_DEFAULT_SPEC -#define ASM_DEFAULT_SPEC "-mppc%{m64:64}" - #undef ASM_SPEC #define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)" diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index 17fea80..4645ef3 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -39,7 +39,7 @@ /* Override rs6000.h definition. */ #undef ASM_DEFAULT_SPEC -#define ASM_DEFAULT_SPEC "-mppc" +#define ASM_DEFAULT_SPEC "-mppc%{m64:64}" #define TARGET_HAS_TOC (TARGET_64BIT \ || (TARGET_MINIMAL_TOC \ |