aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1996-09-09 21:57:25 +0000
committerDoug Evans <dje@gnu.org>1996-09-09 21:57:25 +0000
commit1f1406b451b43364daa6cf221c753e0a6a40cb55 (patch)
treef45d026920954c83e5911a074412e72897035276 /gcc
parent7c9ad19eda4965ddfcb89b430a8bd18d9f2299fd (diff)
downloadgcc-1f1406b451b43364daa6cf221c753e0a6a40cb55.zip
gcc-1f1406b451b43364daa6cf221c753e0a6a40cb55.tar.gz
gcc-1f1406b451b43364daa6cf221c753e0a6a40cb55.tar.bz2
sparc.h ({MASK,TARGET}_FPU_SET): Define.
* sparc/sparc.h ({MASK,TARGET}_FPU_SET): Define. (TARGET_SWITCHES): Record if -m{,no-}fpu passed. * sparc/sparc.c (sparc_override_options): Don't clobber explicit -m{,no-}fpu setting with cpu default. From-SVN: r12693
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sparc/sparc.c7
-rw-r--r--gcc/config/sparc/sparc.h10
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 5b80dcb..566d41a 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -179,6 +179,8 @@ sparc_override_options ()
struct cpu_table *cpu;
struct sparc_cpu_select *sel;
+ int fpu = TARGET_FPU; /* save current -mfpu status */
+
/* Set the default. */
for (def = &cpu_default[0]; def->name; ++def)
if (def->cpu == TARGET_CPU_DEFAULT)
@@ -210,6 +212,11 @@ sparc_override_options ()
}
}
+ /* If -mfpu or -mno-fpu was explicitly used, don't override with
+ the processor default. */
+ if (TARGET_FPU_SET)
+ target_flags = (target_flags & ~MASK_FPU) | fpu;
+
/* Use the deprecated v8 insns for sparc64 in 32 bit mode. */
if (TARGET_V9 && TARGET_ARCH32)
target_flags |= MASK_DEPRECATED_V8_INSNS;
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index 7157100..d3e18c2 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -394,6 +394,10 @@ extern int target_flags;
#define MASK_BROKEN_SAVERESTORE 0x200000
#define TARGET_BROKEN_SAVERESTORE (target_flags & MASK_BROKEN_SAVERESTORE)
+/* Non-zero means -m{,no-}fpu was passed on the command line. */
+#define MASK_FPU_SET 0x400000
+#define TARGET_FPU_SET (target_flags & MASK_FPU_SET)
+
/* Macro to define tables used to set the flags.
This is a list in braces of pairs in braces,
each pair being { "NAME", VALUE }
@@ -401,10 +405,12 @@ extern int target_flags;
An empty string NAME is used to identify the default VALUE. */
#define TARGET_SWITCHES \
- { {"fpu", MASK_FPU}, \
+ { {"fpu", MASK_FPU | MASK_FPU_SET}, \
{"no-fpu", -MASK_FPU}, \
- {"hard-float", MASK_FPU}, \
+ {"no-fpu", MASK_FPU_SET}, \
+ {"hard-float", MASK_FPU | MASK_FPU_SET}, \
{"soft-float", -MASK_FPU}, \
+ {"soft-float", MASK_FPU_SET}, \
{"epilogue", MASK_EPILOGUE}, \
{"no-epilogue", -MASK_EPILOGUE}, \
{"unaligned-doubles", MASK_UNALIGNED_DOUBLES}, \