* ppc-dis.c (print_insn_powerpc): Don't skip all operands
authorAlan Modra <amodra@gmail.com>
Fri, 18 May 2007 01:32:58 +0000 (01:32 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 18 May 2007 01:32:58 +0000 (01:32 +0000)
after setting skip_optional.

opcodes/ChangeLog
opcodes/ppc-dis.c

index 563409643029b16f915876b9dc54dc4a4a84eafb..01d4cd40d717b48e333aa7be2aeea7f7915401bf 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-18  Alan Modra  <amodra@bigpond.net.au>
+
+       * ppc-dis.c (print_insn_powerpc): Don't skip all operands
+       after setting skip_optional.
+
 2007-05-16  Peter Bergner  <bergner@vnet.ibm.com>
 
        * ppc-dis.c (operand_value_powerpc, skip_optional_operands): New.
        support Intel mode.
 
 2007-04-30  Mark Salter  <msalter@redhat.com>
-       
+
        * frv-desc.c: Regenerate.
        * frv-desc.h: Regenerate.
-       
+
 2007-04-30  Alan Modra  <amodra@bigpond.net.au>
 
        PR 4436
 
        * arm-dis.c (arm_opcodes): Disassemble to unified syntax.
        (thumb_opcodes): Add missing white space in adr.
-       (arm_decode_shift): New parameter, print_shift.  Only decode the 
+       (arm_decode_shift): New parameter, print_shift.  Only decode the
        shift parameter if set.  Adjust callers.
        (print_insn_arm): Support for operand type q with no shift decode.
 
index 295b04d8e95eb4afd3a6a4604cfe371c2eefe6e4..2545a36f21a5dd0a7cb0a7c3fe707fb1fec5f71b 100644 (file)
@@ -271,12 +271,14 @@ print_insn_powerpc (bfd_vma memaddr,
 
          /* If all of the optional operands have the value zero,
             then don't print any of them.  */
-         if (skip_optional < 0
-             && (operand->flags & PPC_OPERAND_OPTIONAL) != 0)
-           skip_optional = skip_optional_operands (opindex, insn, dialect);
-
-         if (skip_optional > 0)
-           continue;
+         if ((operand->flags & PPC_OPERAND_OPTIONAL) != 0)
+           {
+             if (skip_optional < 0)
+               skip_optional = skip_optional_operands (opindex, insn,
+                                                       dialect);
+             if (skip_optional)
+               continue;
+           }
 
          value = operand_value_powerpc (operand, insn, dialect);