This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [PATCH] MIPS gas: Remove superfluous CPU_* checks
Maciej W. Rozycki wrote:
> On Fri, 23 Apr 2004, Thiemo Seufer wrote:
>
> > For .set mipsN we lose the hilo_interlocks optimization for SB1 if a
> > MIPS IV or lower ISA is chosen.
> >
> > We lose gpr_interlocks optimizations for VR5400, VR5500 with .set mips1.
> >
> > We lose cop_interlocks optimizations for VR5400, VR5500, SB1 with
> > .set mips[1-3]
> >
> > I think dropping the optimization when the ISA level was explicitly
> > lowered is an improvement. We should probably generally set the arch
>
> Well, for me that's the expected behavior -- I'd be first to change the
> semantics thus if I were hit by a problem due to a different one.
>
> > to the default value of the .set ISA.
>
> Definitely.
This patch does so.
Thiemo
2004-04-23 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* config/tc-mips.c (s_mipsset): Set default CPU type for .set mipsN.
Index: config/tc-mips.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-mips.c,v
retrieving revision 1.261
diff -u -p -r1.261 tc-mips.c
--- config/tc-mips.c 23 Apr 2004 04:50:53 -0000 1.261
+++ config/tc-mips.c 23 Apr 2004 14:53:37 -0000
@@ -11845,34 +11845,11 @@ s_mipsset (int x ATTRIBUTE_UNUSED)
/* Permit the user to change the ISA and architecture on the fly.
Needless to say, misuse can cause serious problems. */
- if (strcmp (name, "mips0") == 0)
+ if (strcmp (name, "mips0") == 0 || strcmp (name, "arch=default") == 0)
{
reset = 1;
mips_opts.isa = file_mips_isa;
- }
- else if (strcmp (name, "mips1") == 0)
- mips_opts.isa = ISA_MIPS1;
- else if (strcmp (name, "mips2") == 0)
- mips_opts.isa = ISA_MIPS2;
- else if (strcmp (name, "mips3") == 0)
- mips_opts.isa = ISA_MIPS3;
- else if (strcmp (name, "mips4") == 0)
- mips_opts.isa = ISA_MIPS4;
- else if (strcmp (name, "mips5") == 0)
- mips_opts.isa = ISA_MIPS5;
- else if (strcmp (name, "mips32") == 0)
- mips_opts.isa = ISA_MIPS32;
- else if (strcmp (name, "mips32r2") == 0)
- mips_opts.isa = ISA_MIPS32R2;
- else if (strcmp (name, "mips64") == 0)
- mips_opts.isa = ISA_MIPS64;
- else if (strcmp (name, "mips64r2") == 0)
- mips_opts.isa = ISA_MIPS64R2;
- else if (strcmp (name, "arch=default") == 0)
- {
- reset = 1;
mips_opts.arch = file_mips_arch;
- mips_opts.isa = file_mips_isa;
}
else if (strncmp (name, "arch=", 5) == 0)
{
@@ -11887,8 +11864,21 @@ s_mipsset (int x ATTRIBUTE_UNUSED)
mips_opts.isa = p->isa;
}
}
+ else if (strncmp (name, "mips", 4) == 0)
+ {
+ const struct mips_cpu_info *p;
+
+ p = mips_parse_cpu("internal use", name);
+ if (!p)
+ as_bad (_("unknown ISA level %s"), name + 4);
+ else
+ {
+ mips_opts.arch = p->cpu;
+ mips_opts.isa = p->isa;
+ }
+ }
else
- as_bad (_("unknown ISA level %s"), name + 4);
+ as_bad (_("unknown ISA or architecture %s"), name);
switch (mips_opts.isa)
{