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
 
   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)