* gas/config/tc-arm.c (do_t_mov_cmp): Fix reporting of unpredictable and
authorMatthew Gretton-Dann <matthew.gretton-dann@arm.com>
Thu, 1 Jul 2010 10:02:46 +0000 (10:02 +0000)
committerMatthew Gretton-Dann <matthew.gretton-dann@arm.com>
Thu, 1 Jul 2010 10:02:46 +0000 (10:02 +0000)
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.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/thumb2_bad_reg.l
gas/testsuite/gas/arm/thumb2_bad_reg.s

index 854f350..887d7ce 100644 (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.
 2010-07-01  Alan Modra  <amodra@gmail.com>
 
        * config/tc-ppc.c (toc_reloc_types): New variable.
index 8137868..67b36d5 100644 (file)
@@ -10273,9 +10273,24 @@ do_t_mov_cmp (void)
                  reject_bad_reg (Rn);
                  reject_bad_reg (Rm);
                }
                  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);
            }
          else
            reject_bad_reg (Rn);
index fcfd285..0fb9b72 100644 (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.
 2010-06-29  Alan Modra  <amodra@gmail.com>
 
        * gas/maxq10/maxq10.exp: Delete file.
index 1da7bac..2679e59 100644 (file)
 [^:]*:[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 -- `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 -- `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]+: 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'
 [^:]*:[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'
index 20a26e0..f1b1c0b 100644 (file)
@@ -191,8 +191,8 @@ test:
        mov r13, r0                     @ OK
        mov r15, r0                     @ OK
        mov.w r0, r13                   @ OK
        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
        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.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
        @ MOVT
        movt r13, #1
        movt r15, #1