From 77fdb0e00bd47c564c4e32726fc6020d9441d4a7 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Wed, 16 Jan 2019 14:34:50 +0100 Subject: [PATCH] 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. --- gas/ChangeLog | 2 ++ gas/config/tc-s12z.c | 15 +++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 986af84..6b852c2 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,7 @@ 2019-01-16 John Darrington + * 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 diff --git a/gas/config/tc-s12z.c b/gas/config/tc-s12z.c index 7d1ddf6..f6c5889 100644 --- a/gas/config/tc-s12z.c +++ b/gas/config/tc-s12z.c @@ -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) -- 2.7.4