[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
This commit is contained in:
parent
c5993c9abc
commit
8d85264514
@ -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>
|
2019-07-28 Gerald Pfeifer <gerald@pfeifer.com>
|
||||||
|
|
||||||
* doc/include/gpl_v3.texi (Copying): Use https for www.gnu.org.
|
* doc/include/gpl_v3.texi (Copying): Use https for www.gnu.org.
|
||||||
|
@ -25,7 +25,11 @@ along with GCC; see the file COPYING3. If not see
|
|||||||
#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
|
#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
|
||||||
#undef TARGET_DEFAULT
|
#undef TARGET_DEFAULT
|
||||||
#define TARGET_DEFAULT (ISA_2_7_MASKS_SERVER | MASK_POWERPC64 | MASK_64BIT | MASK_LITTLE_ENDIAN)
|
#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
|
#else
|
||||||
#undef TARGET_DEFAULT
|
#undef TARGET_DEFAULT
|
||||||
#define TARGET_DEFAULT (MASK_PPC_GFXOPT | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64 | MASK_64BIT)
|
#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
|
#endif
|
||||||
|
@ -23,5 +23,8 @@
|
|||||||
#undef TARGET_DEFAULT
|
#undef TARGET_DEFAULT
|
||||||
#define TARGET_DEFAULT (MASK_EABI | MASK_ALTIVEC)
|
#define TARGET_DEFAULT (MASK_EABI | MASK_ALTIVEC)
|
||||||
|
|
||||||
|
#undef ASM_DEFAULT_EXTRA
|
||||||
|
#define ASM_DEFAULT_EXTRA " %{!mvsx:%{!maltivec:%{!no-maltivec:-maltivec}}}"
|
||||||
|
|
||||||
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
|
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
|
||||||
#define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1
|
#define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1
|
||||||
|
@ -134,11 +134,9 @@ extern int dot_symbols;
|
|||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
#undef ASM_DEFAULT_SPEC
|
|
||||||
#undef ASM_SPEC
|
#undef ASM_SPEC
|
||||||
#undef LINK_OS_FREEBSD_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 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)}"
|
#define LINK_OS_FREEBSD_SPEC "%{m32:%(link_os_freebsd_spec32)}%{!m32:%(link_os_freebsd_spec64)}"
|
||||||
|
|
||||||
|
@ -181,24 +181,20 @@ extern int dot_symbols;
|
|||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
#undef ASM_DEFAULT_SPEC
|
|
||||||
#undef ASM_SPEC
|
#undef ASM_SPEC
|
||||||
#undef LINK_OS_LINUX_SPEC
|
#undef LINK_OS_LINUX_SPEC
|
||||||
#undef LINK_SECURE_PLT_SPEC
|
#undef LINK_SECURE_PLT_SPEC
|
||||||
|
|
||||||
#ifndef RS6000_BI_ARCH
|
#ifndef RS6000_BI_ARCH
|
||||||
#define ASM_DEFAULT_SPEC "-mppc64"
|
|
||||||
#define ASM_SPEC "%(asm_spec64) %(asm_spec_common)"
|
#define ASM_SPEC "%(asm_spec64) %(asm_spec_common)"
|
||||||
#define LINK_OS_LINUX_SPEC "%(link_os_linux_spec64)"
|
#define LINK_OS_LINUX_SPEC "%(link_os_linux_spec64)"
|
||||||
#define LINK_SECURE_PLT_SPEC ""
|
#define LINK_SECURE_PLT_SPEC ""
|
||||||
#else
|
#else
|
||||||
#if DEFAULT_ARCH64_P
|
#if DEFAULT_ARCH64_P
|
||||||
#define ASM_DEFAULT_SPEC "-mppc%{!m32:64}"
|
|
||||||
#define ASM_SPEC "%{m32:%(asm_spec32)}%{!m32:%(asm_spec64)} %(asm_spec_common)"
|
#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_OS_LINUX_SPEC "%{m32:%(link_os_linux_spec32)}%{!m32:%(link_os_linux_spec64)}"
|
||||||
#define LINK_SECURE_PLT_SPEC "%{m32: " LINK_SECURE_PLT_DEFAULT_SPEC "}"
|
#define LINK_SECURE_PLT_SPEC "%{m32: " LINK_SECURE_PLT_DEFAULT_SPEC "}"
|
||||||
#else
|
#else
|
||||||
#define ASM_DEFAULT_SPEC "-mppc%{m64:64}"
|
|
||||||
#define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
|
#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_OS_LINUX_SPEC "%{!m64:%(link_os_linux_spec32)}%{m64:%(link_os_linux_spec64)}"
|
||||||
#define LINK_SECURE_PLT_SPEC "%{!m64: " LINK_SECURE_PLT_DEFAULT_SPEC "}"
|
#define LINK_SECURE_PLT_SPEC "%{!m64: " LINK_SECURE_PLT_DEFAULT_SPEC "}"
|
||||||
|
@ -28,5 +28,8 @@
|
|||||||
#define TARGET_DEFAULT MASK_ALTIVEC
|
#define TARGET_DEFAULT MASK_ALTIVEC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef ASM_DEFAULT_EXTRA
|
||||||
|
#define ASM_DEFAULT_EXTRA " %{!mvsx:%{!maltivec:%{!mno-altivec:-maltivec}}}"
|
||||||
|
|
||||||
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
|
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
|
||||||
#define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1
|
#define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1
|
||||||
|
@ -157,6 +157,7 @@ ASM_OPT_ANY
|
|||||||
#define CPP_DEFAULT_SPEC ""
|
#define CPP_DEFAULT_SPEC ""
|
||||||
|
|
||||||
#define ASM_DEFAULT_SPEC ""
|
#define ASM_DEFAULT_SPEC ""
|
||||||
|
#define ASM_DEFAULT_EXTRA ""
|
||||||
|
|
||||||
/* This macro defines names of additional specifications to put in the specs
|
/* This macro defines names of additional specifications to put in the specs
|
||||||
that can be used in various specifications like CC1_SPEC. Its definition
|
that can be used in various specifications like CC1_SPEC. Its definition
|
||||||
@ -174,7 +175,7 @@ ASM_OPT_ANY
|
|||||||
{ "cpp_default", CPP_DEFAULT_SPEC }, \
|
{ "cpp_default", CPP_DEFAULT_SPEC }, \
|
||||||
{ "asm_cpu", ASM_CPU_SPEC }, \
|
{ "asm_cpu", ASM_CPU_SPEC }, \
|
||||||
{ "asm_cpu_native", ASM_CPU_NATIVE_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 }, \
|
{ "cc1_cpu", CC1_CPU_SPEC }, \
|
||||||
SUBTARGET_EXTRA_SPECS
|
SUBTARGET_EXTRA_SPECS
|
||||||
|
|
||||||
|
@ -254,9 +254,6 @@
|
|||||||
%{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540} } } \
|
%{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540} } } \
|
||||||
%{mcpu=e6500: -D__PPC_CPU_E6500__}"
|
%{mcpu=e6500: -D__PPC_CPU_E6500__}"
|
||||||
|
|
||||||
#undef ASM_DEFAULT_SPEC
|
|
||||||
#define ASM_DEFAULT_SPEC "-mppc%{m64:64}"
|
|
||||||
|
|
||||||
#undef ASM_SPEC
|
#undef ASM_SPEC
|
||||||
#define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
|
#define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
/* Override rs6000.h definition. */
|
/* Override rs6000.h definition. */
|
||||||
#undef ASM_DEFAULT_SPEC
|
#undef ASM_DEFAULT_SPEC
|
||||||
#define ASM_DEFAULT_SPEC "-mppc"
|
#define ASM_DEFAULT_SPEC "-mppc%{m64:64}"
|
||||||
|
|
||||||
#define TARGET_HAS_TOC (TARGET_64BIT \
|
#define TARGET_HAS_TOC (TARGET_64BIT \
|
||||||
|| (TARGET_MINIMAL_TOC \
|
|| (TARGET_MINIMAL_TOC \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user