gas/
authorJan Beulich <jbeulich@novell.com>
Tue, 8 Oct 2013 08:55:41 +0000 (08:55 +0000)
committerJan Beulich <jbeulich@novell.com>
Tue, 8 Oct 2013 08:55:41 +0000 (08:55 +0000)
2013-10-08  Jan Beulich <jbeulich@suse.com>

* gas/config/tc-arm.c (do_t_push_pop): Honor inst.size_req. Simplify
LR/PC check.

gas/testsuite/
2013-10-08  Jan Beulich <jbeulich@suse.com>

* gas/arm/thumb-w-good.s: Add PUSH.W and POP.W tests.
* gas/arm/thumb-w-good.d: Update accordingly.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/thumb-w-good.d
gas/testsuite/gas/arm/thumb-w-good.s

index d019f3aea32238eaddf8a2e6dee53b035f6e78f8..3712f8b996f712027ea6043d9136c7c037c964ee 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-08  Jan Beulich <jbeulich@suse.com>
+
+       * gas/config/tc-arm.c (do_t_push_pop): Honor inst.size_req. Simplify
+       LR/PC check.
+
 2013-10-08  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-msp430.c (msp430_operands): Accept "<foo>.a" as an alias
index 7a266792b865db6cc2cf59e3d57c0964a6923ccd..f97c3072b420bc029b0b624ec0502bb7d3741148 100644 (file)
@@ -11672,12 +11672,11 @@ do_t_push_pop (void)
              _("expression too complex"));
 
   mask = inst.operands[0].imm;
-  if ((mask & ~0xff) == 0)
+  if (inst.size_req != 4 && (mask & ~0xff) == 0)
     inst.instruction = THUMB_OP16 (inst.instruction) | mask;
-  else if ((inst.instruction == T_MNEM_push
-           && (mask & ~0xff) == 1 << REG_LR)
-          || (inst.instruction == T_MNEM_pop
-              && (mask & ~0xff) == 1 << REG_PC))
+  else if (inst.size_req != 4
+          && (mask & ~0xff) == (1 << (inst.instruction == T_MNEM_push
+                                      ? REG_LR : REG_PC)))
     {
       inst.instruction = THUMB_OP16 (inst.instruction);
       inst.instruction |= THUMB_PP_PC_LR;
index 63f2c178f68ad8630aff4d7925c211afce779f17..283902161b4bbbef9c569fcdec51574b80b336d0 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-08  Jan Beulich <jbeulich@suse.com>
+
+       * gas/arm/thumb-w-good.s: Add PUSH.W and POP.W tests.
+       * gas/arm/thumb-w-good.d: Update accordingly.
+
 2013-10-08  Nick Clifton  <nickc@redhat.com>
 
        * gas/msp430/bad.s: New test: Checks erroneous size extensions.
index d41493f9498d51c17af5c2b6e024d3688cc240dd..da25e6442a8f558b60752a24684c4abcc79c4194 100644 (file)
@@ -7,3 +7,7 @@
 Disassembly of section .text:
 00000000 <.text> f7ff fffe     bl      00000000 <foo>
 00000004 <.text\+0x4> f3ef 8000        mrs     r0, CPSR
+00000008 <.text\+0x8> f84d 0d04        (str(\.w)?      r0, \[sp, #-4\]!|push(\.w)?     \{r0\})
+0000000c <.text\+0xc> e92d 4001        (stmdb(\.w)?    sp!,|push(\.w)?)[       ]+\{r0, lr\}
+00000010 <.text\+0x10> f85d 0b04       (ldr(\.w)?      r0, \[sp\], #4|pop(\.w)?        \{r0\})
+00000014 <.text\+0x14> e8bd 8001       (ldmia(\.w)?    sp!,|pop(\.w)?)[        ]+\{r0, pc\}
index cbbd07a57319c64445c099f1e7d3649ed67cc1df..feebef13a03d7d47aadafb3711090d38481b0acf 100644 (file)
@@ -5,3 +5,8 @@ bl.w foo
 .arch armv6-m
 mrs.w r0, apsr
 
+.arch armv6t2
+push.w {r0}
+push.w {r0, lr}
+pop.w {r0}
+pop.w {r0, pc}