S12Z: gas: Permit "extend" instructions which don't actually extend.
Other assemblers permit "extending" a register into a register of a smaller size or the same size. It doesn't make much sense to do this but would appear to be a valid instruction. So change the error to a warning. gas/ * config/tc-s12z.c (tfr): Change as_bad to as_warn. Also fix message typo and semantics.
This commit is contained in:
parent
d5dcaf1b59
commit
77fdb0e00b
|
@ -1,5 +1,7 @@
|
|||
2019-01-16 John Darrington <john@darrington.wattle.id.au>
|
||||
|
||||
* config/tc-s12z.c (tfr): Change as_bad to as_warn.
|
||||
Also fix message typo and semantics.
|
||||
* config/tc-s12z.c (emit_opr): Emit BFD_RELOC_S12Z_OPR instead of
|
||||
BFD_RELOC_24.
|
||||
* testsuite/gas/s12z/opr-indirect-expr.d: Expect R_S12Z_OPR instead
|
||||
|
|
|
@ -1316,16 +1316,11 @@ tfr (const struct instruction *insn)
|
|||
if (!lex_reg_name (~0, ®2))
|
||||
goto fail;
|
||||
|
||||
if ((0 == strcasecmp ("sex", insn->name))
|
||||
|| (0 == strcasecmp ("zex", insn->name)))
|
||||
{
|
||||
if (registers[reg1].bytes >= registers[reg2].bytes)
|
||||
{
|
||||
as_bad (_("Source register for %s must be smaller that the destination register"),
|
||||
insn->name);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
if ( ((0 == strcasecmp ("sex", insn->name))
|
||||
|| (0 == strcasecmp ("zex", insn->name)))
|
||||
&& (registers[reg2].bytes <= registers[reg1].bytes))
|
||||
as_warn (_("Source register for %s is no larger than the destination register"),
|
||||
insn->name);
|
||||
|
||||
char *f = s12z_new_insn (1 + insn->page);
|
||||
if (insn->page == 2)
|
||||
|
|
Loading…
Reference in New Issue