aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-06-18 07:36:33 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1996-06-18 07:36:33 -0400
commit10d5c73f74cba56428945851162726159cc934f4 (patch)
tree36983f816d6f5a02409644e06ff1b0887b16962e
parentd6c46142185a09abfa7fef9bdcb6fe00c5c655ab (diff)
downloadgcc-10d5c73f74cba56428945851162726159cc934f4.zip
gcc-10d5c73f74cba56428945851162726159cc934f4.tar.gz
gcc-10d5c73f74cba56428945851162726159cc934f4.tar.bz2
(override_options): Allow EV4/5 or 21064/21164 for cpu.
Clean up handling of floating-point options. From-SVN: r12300
-rw-r--r--gcc/config/alpha/alpha.c103
1 files changed, 43 insertions, 60 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 13ae03e..2301561 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -97,16 +97,18 @@ static void add_long_const PROTO((FILE *, HOST_WIDE_INT, int, int, int));
void
override_options ()
{
- alpha_cpu = TARGET_CPU_DEFAULT;
+ alpha_cpu = PROCESSOR_EV4;
+
if (alpha_cpu_string)
{
- if (alpha_cpu_string[0] == 'e'
- && alpha_cpu_string[1] == 'v'
- && (alpha_cpu_string[2] == '4' || alpha_cpu_string[2] == '5'))
- alpha_cpu = alpha_cpu_string[2] == '4' ? PROCESSOR_EV4 : PROCESSOR_EV5;
+ if (! strcmp (alpha_cpu_string, "ev4")
+ || ! strcmp (alpha_cpu_string, "21064"))
+ alpha_cpu = PROCESSOR_EV4;
+ else if (! strcmp (alpha_cpu_string, "ev5")
+ || ! strcmp (alpha_cpu_string, "21164"))
+ alpha_cpu = PROCESSOR_EV5;
else
- error ("bad value (%s) for -mcpu switch",
- alpha_cpu_string);
+ error ("bad value `%s' for -mcpu switch", alpha_cpu_string);
}
alpha_tp = ALPHA_TP_PROG;
@@ -115,82 +117,63 @@ override_options ()
if (TARGET_IEEE)
{
- alpha_tp_string = "i";
- alpha_fptm_string = "su";
- target_flags |= MASK_IEEE_CONFORMANT;
+ alpha_tp = ALPHA_TP_INSN;
+ alpha_fptm = ALPHA_FPTM_SU;
}
if (TARGET_IEEE_WITH_INEXACT)
{
- alpha_tp_string = "i";
- alpha_fptm_string = "sui";
- target_flags |= MASK_IEEE_CONFORMANT;
+ alpha_tp = ALPHA_TP_INSN;
+ alpha_fptm = ALPHA_FPTM_SUI;
}
if (alpha_tp_string)
- switch (alpha_tp_string[0])
- {
- case 'p':
+ {
+ if (! strcmp (alpha_tp_string, "p"))
alpha_tp = ALPHA_TP_PROG;
- break;
-
- case 'f':
+ else if (! strcmp (alpha_tp_string, "f"))
alpha_tp = ALPHA_TP_FUNC;
- break;
-
- case 'i':
+ else if (! strcmp (alpha_tp_string, "i"))
alpha_tp = ALPHA_TP_INSN;
- break;
-
- default:
- error ("bad value (%s) for -mtrap-precision switch",
- alpha_tp_string);
- break;
- }
+ else
+ error ("bad value `%s' for -mtrap-precision switch", alpha_tp_string);
+ }
if (alpha_fprm_string)
- switch (alpha_fprm_string[0])
- {
- case 'n':
+ {
+ if (! strcmp (alpha_fprm_string, "n"))
alpha_fprm = ALPHA_FPRM_NORM;
- break;
-
- case 'm':
+ else if (! strcmp (alpha_fprm_string, "m"))
alpha_fprm = ALPHA_FPRM_MINF;
- break;
-
- case 'c':
+ else if (! strcmp (alpha_fprm_string, "c"))
alpha_fprm = ALPHA_FPRM_CHOP;
- break;
-
- case 'd':
+ else if (! strcmp (alpha_fprm_string,"d"))
alpha_fprm = ALPHA_FPRM_DYN;
- break;
-
- default:
- error ("bad value (%s) for -mfp-rounding-mode switch",
+ else
+ error ("bad value `%s' for -mfp-rounding-mode switch",
alpha_fprm_string);
- break;
- }
+ }
if (alpha_fptm_string)
- if (strcmp (alpha_fptm_string, "n") == 0)
- alpha_fptm = ALPHA_FPTM_N;
- else if (strcmp (alpha_fptm_string, "u") == 0)
- alpha_fptm = ALPHA_FPTM_U;
- else if (strcmp (alpha_fptm_string, "su") == 0)
- alpha_fptm = ALPHA_FPTM_SU;
- else if (strcmp (alpha_fptm_string, "sui") == 0)
- alpha_fptm = ALPHA_FPTM_SUI;
- else
- error ("bad value (%s) for -mfp-trap-mode switch",
- alpha_fptm_string);
+ {
+ if (strcmp (alpha_fptm_string, "n") == 0)
+ alpha_fptm = ALPHA_FPTM_N;
+ else if (strcmp (alpha_fptm_string, "u") == 0)
+ alpha_fptm = ALPHA_FPTM_U;
+ else if (strcmp (alpha_fptm_string, "su") == 0)
+ alpha_fptm = ALPHA_FPTM_SU;
+ else if (strcmp (alpha_fptm_string, "sui") == 0)
+ alpha_fptm = ALPHA_FPTM_SUI;
+ else
+ error ("bad value `%s' for -mfp-trap-mode switch", alpha_fptm_string);
+ }
/* Do some sanity checks on the above option. */
- if (alpha_fptm >= ALPHA_FPTM_SU && alpha_tp != ALPHA_TP_INSN)
+ if ((alpha_fptm == ALPHA_FPTM_SU || alpha_fptm == ALPHA_FPTM_SUI)
+ && alpha_tp != ALPHA_TP_INSN)
{
- error ("fp software completion requires -mtrap-precision=i");
+ warning ("fp software completion requires -mtrap-precision=i");
alpha_tp = ALPHA_TP_INSN;
}
}