aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips
diff options
context:
space:
mode:
authormpf <mpf@138bc75d-0d04-0410-961f-82ee72b054a4>2015-01-19 23:05:41 +0000
committermpf <mpf@138bc75d-0d04-0410-961f-82ee72b054a4>2015-01-19 23:05:41 +0000
commitb33cff213dd5e52043f29b7803ec853a83db1040 (patch)
treea0245f8c3eed2f622bb2e96faf4f5bcdf6afbd67 /gcc/config/mips
parentadbb1edd08f6057f674f143b4501f50f46406bef (diff)
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219867 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/mips')
-rw-r--r--gcc/config/mips/mips.h21
1 files changed, 18 insertions, 3 deletions
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. */