* config/tc-mips.c (md_begin): Take -mcpu value into account even when

-mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs
	mutually exclusive (if they are different).
	(md_parse_option): Warn if an -march/-mtune/-mcpu/-m<cpu> option is
	set more than once.
This commit is contained in:
Thiemo Seufer
2001-08-07 12:46:22 +00:00
parent 21d34b1c68
commit 6dce9e24b3
2 changed files with 60 additions and 13 deletions

View File

@ -1,3 +1,11 @@
2001-07-30 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* config/tc-mips.c (md_begin): Take -mcpu value into account even when
-mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs
mutually exclusive (if they are different).
(md_parse_option): Warn if an -march/-mtune/-mcpu/-m<cpu> option is
set more than once.
2001-08-03 Richard Sandiford <rsandifo@redhat.com> 2001-08-03 Richard Sandiford <rsandifo@redhat.com>
* config/tc-mips.c (md_apply_fix): Don't subtract the symbol value * config/tc-mips.c (md_apply_fix): Don't subtract the symbol value

View File

@ -962,6 +962,33 @@ md_begin ()
if (mips_opts.mips16 < 0) if (mips_opts.mips16 < 0)
mips_opts.mips16 = target_cpu_had_mips16; mips_opts.mips16 = target_cpu_had_mips16;
/* Backward compatibility for historic -mcpu= option. Check for
incompatible options, warn if -mcpu is used. */
if (mips_cpu != CPU_UNKNOWN
&& mips_arch != CPU_UNKNOWN
&& mips_cpu != mips_arch)
{
as_fatal (_("The -mcpu option can't be used together with -march. "
"Use -mtune instead of -mcpu."));
}
if (mips_cpu != CPU_UNKNOWN
&& mips_tune != CPU_UNKNOWN
&& mips_cpu != mips_tune)
{
as_fatal (_("The -mcpu option can't be used together with -mtune. "
"Use -march instead of -mcpu."));
}
if (mips_arch == CPU_UNKNOWN && mips_cpu != CPU_UNKNOWN)
{
ci = mips_cpu_info_from_cpu (mips_cpu);
assert (ci != NULL);
mips_arch = ci->cpu;
as_warn (_("The -mcpu option is deprecated. Please use -march and "
"-mtune instead."));
}
/* At this point, mips_arch will either be CPU_UNKNOWN if no ARCH was /* At this point, mips_arch will either be CPU_UNKNOWN if no ARCH was
specified on the command line, or some other value if one was. specified on the command line, or some other value if one was.
Similarly, mips_opts.isa will be ISA_UNKNOWN if not specified on Similarly, mips_opts.isa will be ISA_UNKNOWN if not specified on
@ -984,19 +1011,6 @@ md_begin ()
assert (ci != NULL); assert (ci != NULL);
mips_arch = ci->cpu; mips_arch = ci->cpu;
} }
else if (mips_arch == CPU_UNKNOWN
&& mips_opts.isa == ISA_UNKNOWN
&& mips_cpu != CPU_UNKNOWN)
{
/* Historic -mcpu= option. Warn. */
ci = mips_cpu_info_from_cpu (mips_cpu);
assert (ci != NULL);
mips_arch = ci->cpu;
mips_tune = ci->cpu;
mips_opts.isa = ci->isa;
as_warn (_("The -mcpu option is deprecated. Please use -march and -mtune instead."));
}
else else
{ {
/* We need to set both ISA and ARCH from target cpu. */ /* We need to set both ISA and ARCH from target cpu. */
@ -8985,18 +8999,31 @@ md_parse_option (c, arg)
switch (c) switch (c)
{ {
case OPTION_MTUNE: case OPTION_MTUNE:
if (mips_tune != CPU_UNKNOWN && mips_tune != cpu)
as_warn(_("A different -mtune= was already specified, is now "
"-mtune=%s"), arg);
mips_tune = cpu; mips_tune = cpu;
break; break;
case OPTION_MARCH: case OPTION_MARCH:
if (mips_arch != CPU_UNKNOWN && mips_arch != cpu)
as_warn(_("A different -march= was already specified, is now "
"-march=%s"), arg);
mips_arch = cpu; mips_arch = cpu;
break; break;
case OPTION_MCPU: case OPTION_MCPU:
if (mips_cpu != CPU_UNKNOWN && mips_cpu != cpu)
as_warn(_("A different -mcpu= was already specified, is now "
"-mcpu=%s"), arg);
mips_cpu = cpu; mips_cpu = cpu;
} }
} }
break; break;
case OPTION_M4650: case OPTION_M4650:
if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_R4650)
|| (mips_tune != CPU_UNKNOWN && mips_tune != CPU_R4650))
as_warn(_("A different -march= or -mtune= was already specified, "
"is now -m4650"));
mips_arch = CPU_R4650; mips_arch = CPU_R4650;
mips_tune = CPU_R4650; mips_tune = CPU_R4650;
break; break;
@ -9005,6 +9032,10 @@ md_parse_option (c, arg)
break; break;
case OPTION_M4010: case OPTION_M4010:
if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_R4010)
|| (mips_tune != CPU_UNKNOWN && mips_tune != CPU_R4010))
as_warn(_("A different -march= or -mtune= was already specified, "
"is now -m4010"));
mips_arch = CPU_R4010; mips_arch = CPU_R4010;
mips_tune = CPU_R4010; mips_tune = CPU_R4010;
break; break;
@ -9013,6 +9044,10 @@ md_parse_option (c, arg)
break; break;
case OPTION_M4100: case OPTION_M4100:
if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_VR4100)
|| (mips_tune != CPU_UNKNOWN && mips_tune != CPU_VR4100))
as_warn(_("A different -march= or -mtune= was already specified, "
"is now -m4100"));
mips_arch = CPU_VR4100; mips_arch = CPU_VR4100;
mips_tune = CPU_VR4100; mips_tune = CPU_VR4100;
break; break;
@ -9021,6 +9056,10 @@ md_parse_option (c, arg)
break; break;
case OPTION_M3900: case OPTION_M3900:
if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_R3900)
|| (mips_tune != CPU_UNKNOWN && mips_tune != CPU_R3900))
as_warn(_("A different -march= or -mtune= was already specified, "
"is now -m3900"));
mips_arch = CPU_R3900; mips_arch = CPU_R3900;
mips_tune = CPU_R3900; mips_tune = CPU_R3900;
break; break;