S12Z: GAS: Issue warning if TFR/EXG have identical source and destination.

It is permissible for the source and destination operands of TFR and EXG to be
the same register.  However it is a pointless instruction and anyone writing it
has probably made a mistake.  This change emits a warning if such an instruction
is encountered.

gas/
	* config/tc-s12z.c (tfr): Emit warning if operands are the same.
	* testsuite/gas/s12z/exg.d: New test case.
	* testsuite/gas/s12z/exg.l: New file.
This commit is contained in:
John Darrington 2019-02-01 17:42:54 +01:00
parent 8b3a46f93c
commit 1d4d86699f
4 changed files with 11 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2019-01-31 John Darrington <john@darrington.wattle.id.au>
* config/tc-s12z.c (tfr): Emit warning if operands are the same.
* testsuite/gas/s12z/exg.d: New test case.
* testsuite/gas/s12z/exg.l: New file.
2019-01-31 John Darrington <john@darrington.wattle.id.au>
* config/tc-s12z.c (lex_opr): Add a parameter to indicate whether

View file

@ -1328,6 +1328,8 @@ tfr (const struct instruction *insn)
&& (registers[reg2].bytes <= registers[reg1].bytes))
as_warn (_("Source register for %s is no larger than the destination register"),
insn->name);
else if (reg1 == reg2)
as_warn (_("The destination and source registers are identical"));
char *f = s12z_new_insn (1 + insn->page);
if (insn->page == 2)

View file

@ -1,6 +1,7 @@
#objdump: -d
#name:
#source: exg.s
#warning_output: exg.l
.*: file format elf32-s12z

View file

@ -0,0 +1,2 @@
.*: Assembler messages:
.*:2: Warning: The destination and source registers are identical