From aa0c464a8abaf616e2f28c72405da18c09a93496 Mon Sep 17 00:00:00 2001 From: Matthew Fortune Date: Mon, 19 Jan 2015 23:05:41 +0000 Subject: [PATCH] MIPS: Only pass floating-point options to the assembler when necessary gcc/ * config/mips/mips.h (FP_ASM_SPEC): New define. (ASM_SPEC): Remove floating-point options and use FP_ASM_SPEC instead. From-SVN: r219867 --- gcc/ChangeLog | 6 ++++++ gcc/config/mips/mips.h | 21 ++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7078d40cfa9..7e182f3c3f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-01-19 Matthew Fortune + + * config/mips/mips.h (FP_ASM_SPEC): New define. + (ASM_SPEC): Remove floating-point options and use FP_ASM_SPEC + instead. + 2015-01-19 Oleg Endo PR target/53988 diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index c5ea2401a17..ec69ed5d061 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -1243,6 +1243,22 @@ struct mips_cpu_info { %{gcoff*:-mdebug} %{!gcoff*:-no-mdebug}" #endif +/* FP_ASM_SPEC represents the floating-point options that must be passed + to the assembler when FPXX support exists. Prior to that point the + assembler could accept the options but were not required for + correctness. We only add the options when absolutely necessary + because passing -msoft-float to the assembler will cause it to reject + all hard-float instructions which may require some user code to be + updated. */ + +#ifdef HAVE_AS_DOT_MODULE +#define FP_ASM_SPEC "\ +%{mhard-float} %{msoft-float} \ +%{msingle-float} %{mdouble-float}" +#else +#define FP_ASM_SPEC +#endif + /* SUBTARGET_ASM_SPEC is always passed to the assembler. It may be overridden by subtargets. */ @@ -1277,9 +1293,8 @@ struct mips_cpu_info { %{modd-spreg} %{mno-odd-spreg} \ %{mshared} %{mno-shared} \ %{msym32} %{mno-sym32} \ -%{mtune=*} \ -%{mhard-float} %{msoft-float} \ -%{msingle-float} %{mdouble-float} \ +%{mtune=*}" \ +FP_ASM_SPEC "\ %(subtarget_asm_spec)" /* Extra switches sometimes passed to the linker. */ -- 2.30.2