* gas/config/tc-arm.c (do_t_mov_cmp): Fix reporting of unpredictable and

deprecated mov register instructions.
	* gas/testsuite/gas/arm/thumb2_bad_reg.s: Update mov register tests.
	* gas/testsuite/gas/arm/thumb2_bad_reg.l: Likewise.
This commit is contained in:
Matthew Gretton-Dann 2010-07-01 10:02:46 +00:00
parent 726d3ab069
commit 76fa04a48e
5 changed files with 49 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2010-07-01 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* config/tc-arm.c (do_t_mov_cmp): Fix reporting of unpredictable and
deprecated mov register instructions.
2010-07-01 Alan Modra <amodra@gmail.com>
* config/tc-ppc.c (toc_reloc_types): New variable.

View File

@ -10273,9 +10273,24 @@ do_t_mov_cmp (void)
reject_bad_reg (Rn);
reject_bad_reg (Rm);
}
else if ((Rn == REG_SP || Rn == REG_PC)
&& (Rm == REG_SP || Rm == REG_PC))
reject_bad_reg (Rm);
else if (narrow)
{
/* This is mov.n. */
if ((Rn == REG_SP || Rn == REG_PC)
&& (Rm == REG_SP || Rm == REG_PC))
{
as_warn (_("Use of r%u as a source register is "
"deprecated when r%u is the destination "
"register."), Rm, Rn);
}
}
else
{
/* This is mov.w. */
constraint (Rn == REG_PC, BAD_PC);
constraint (Rm == REG_PC, BAD_PC);
constraint (Rn == REG_SP && Rm == REG_SP, BAD_SP);
}
}
else
reject_bad_reg (Rn);

View File

@ -1,3 +1,8 @@
2010-07-01 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* gas/arm/thumb2_bad_reg.s: Update mov register tests.
* gas/arm/thumb2_bad_reg.l: Likewise.
2010-06-29 Alan Modra <amodra@gmail.com>
* gas/maxq10/maxq10.exp: Delete file.

View File

@ -137,14 +137,24 @@
[^:]*:[0-9]+: Error: r15 not allowed here -- `mls r0,r0,r0,r15'
[^:]*:[0-9]+: Error: r13 not allowed here -- `mov.w r13,#1'
[^:]*:[0-9]+: Error: r15 not allowed here -- `mov.w r15,#1'
[^:]*:[0-9]+: Error: r15 not allowed here -- `mov.w r0,r15'
[^:]*:[0-9]+: Error: r15 not allowed here -- `mov.w r15,r0'
[^:]*:[0-9]+: Error: r13 not allowed here -- `movs.w r0,r13'
[^:]*:[0-9]+: Error: r15 not allowed here -- `movs.w r0,r15'
[^:]*:[0-9]+: Error: r13 not allowed here -- `movs.w r13,r0'
[^:]*:[0-9]+: Error: r15 not allowed here -- `movs.w r15,r0'
[^:]*:[0-9]+: Error: r13 not allowed here -- `mov.w r13,r13'
[^:]*:[0-9]+: Error: r13 not allowed here -- `mov.w r15,r13'
[^:]*:[0-9]+: Error: r15 not allowed here -- `mov.w r15,r13'
[^:]*:[0-9]+: Error: r15 not allowed here -- `mov.w r13,r15'
[^:]*:[0-9]+: Error: r15 not allowed here -- `mov.w r15,r15'
[^:]*:[0-9]+: Warning: Use of r13 as a source register is deprecated when r13 is the destination register.
[^:]*:[0-9]+: Warning: Use of r13 as a source register is deprecated when r15 is the destination register.
[^:]*:[0-9]+: Warning: Use of r15 as a source register is deprecated when r13 is the destination register.
[^:]*:[0-9]+: Warning: Use of r15 as a source register is deprecated when r15 is the destination register.
[^:]*:[0-9]+: Error: r13 not allowed here -- `movs r13,r13'
[^:]*:[0-9]+: Error: r15 not allowed here -- `movs r15,r13'
[^:]*:[0-9]+: Error: r13 not allowed here -- `movs r13,r15'
[^:]*:[0-9]+: Error: r15 not allowed here -- `movs r15,r15'
[^:]*:[0-9]+: Error: r13 not allowed here -- `movt r13,#1'
[^:]*:[0-9]+: Error: r15 not allowed here -- `movt r15,#1'
[^:]*:[0-9]+: Error: r13 not allowed here -- `mrc p0,#1,r13,cr0,cr0'

View File

@ -191,8 +191,8 @@ test:
mov r13, r0 @ OK
mov r15, r0 @ OK
mov.w r0, r13 @ OK
mov.w r0, r15 @ OK
mov.w r15, r0 @ OK
mov.w r0, r15
mov.w r15, r0
mov.w r13, r0 @ OK
movs.w r0, r13
movs.w r0, r15
@ -202,6 +202,14 @@ test:
mov.w r15, r13
mov.w r13, r15
mov.w r15, r15
mov r13, r13 @ Deprecated
mov r15, r13 @ Deprecated
mov r13, r15 @ Deprecated
mov r15, r15 @ Deprecated
movs r13, r13
movs r15, r13
movs r13, r15
movs r15, r15
@ MOVT
movt r13, #1
movt r15, #1