OSDN Git Service

PR gas/12854
authornickc <nickc>
Mon, 13 Jun 2011 12:50:18 +0000 (12:50 +0000)
committernickc <nickc>
Mon, 13 Jun 2011 12:50:18 +0000 (12:50 +0000)
Add additional checks for extraneous shifts and extra tests in the testsuite.

gas/config/tc-arm.c
gas/testsuite/gas/arm/shift-bad.l
gas/testsuite/gas/arm/shift-bad.s

index a34dcec..bf329d6 100644 (file)
@@ -11570,6 +11570,10 @@ do_t_shift (void)
 
              inst.instruction |= inst.operands[0].reg;
              inst.instruction |= inst.operands[2].reg << 3;
+
+             /* PR 12854: Error on extraneous shifts.  */
+             constraint (inst.operands[2].shifted,
+                         _("extraneous shift as part of operand to shift insn"));
            }
          else
            {
@@ -11609,6 +11613,10 @@ do_t_shift (void)
 
          inst.instruction |= inst.operands[0].reg;
          inst.instruction |= inst.operands[2].reg << 3;
+
+         /* PR 12854: Error on extraneous shifts.  */
+         constraint (inst.operands[2].shifted,
+                     _("extraneous shift as part of operand to shift insn"));
        }
       else
        {
index 6db9583..3c9fb6e 100644 (file)
@@ -1,6 +1,9 @@
 .*shift-bad.s: Assembler messages:
-.*shift-bad.s:3: Error: extraneous shift as part of operand to shift insn -- `asr r0,r1,r2,ror#5'
-.*shift-bad.s:4: Error: extraneous shift as part of operand to shift insn -- `ror r0,r1,r2,lsl r3'
-.*shift-bad.s:8: Error: extraneous shift as part of operand to shift insn -- `ror r0,r1,r2,lsl#1'
-.*shift-bad.s:9: Error: extraneous shift as part of operand to shift insn -- `lsl r0,r1,r2,lsl#1'
-.*shift-bad.s:10: Error: extraneous shift as part of operand to shift insn -- `lsl r0,r1,r2,asr r0'
+.*shift-bad.s:2: Error: extraneous shift as part of operand to shift insn -- `asr r0,r1,r2,ror#5'
+.*shift-bad.s:3: Error: extraneous shift as part of operand to shift insn -- `ror r0,r1,r2,lsl r3'
+.*shift-bad.s:7: Error: extraneous shift as part of operand to shift insn -- `ror r0,r0,r2,lsl#1'
+.*shift-bad.s:8: Error: extraneous shift as part of operand to shift insn -- `lsl r0,r0,r2,lsl#1'
+.*shift-bad.s:9: Error: extraneous shift as part of operand to shift insn -- `lsl r0,r0,r2,asr r0'
+.*shift-bad.s:13: Error: extraneous shift as part of operand to shift insn -- `ror r0,r1,r2,lsl#1'
+.*shift-bad.s:14: Error: extraneous shift as part of operand to shift insn -- `lsl r0,r1,r2,lsl#1'
+.*shift-bad.s:15: Error: extraneous shift as part of operand to shift insn -- `lsl r0,r1,r2,asr r0'
index 6e6a795..6ee069b 100644 (file)
@@ -1,10 +1,15 @@
-        .syntax unified
 
         asr     r0, r1, r2, ror #5
         ror     r0, r1, r2, lsl r3
 
         .thumb_func
 foo:
+        ror     r0, r0, r2, lsl #1
+        lsl     r0, r0, r2, lsl #1
+        lsl     r0, r0, r2, asr r0
+
+        .syntax unified
+       
         ror     r0, r1, r2, lsl #1
         lsl     r0, r1, r2, lsl #1
         lsl     r0, r1, r2, asr r0