print_insn_powerpc tidy
authorAlan Modra <amodra@gmail.com>
Sun, 7 Apr 2019 11:17:06 +0000 (20:47 +0930)
committerAlan Modra <amodra@gmail.com>
Sun, 7 Apr 2019 13:05:56 +0000 (22:35 +0930)
* ppc-dis.c (print_insn_powerpc): Use a tiny state machine
op_separator to control printing of spaces, comma and parens
rather than need_comma, need_paren and spaces vars.

opcodes/ChangeLog
opcodes/ppc-dis.c

index 0fb4e0d3abc4e454887113963ac74515e168d296..bf775b5e3e7ad74355cd1d1f6f3c45f4c14981b2 100644 (file)
@@ -1,3 +1,9 @@
+2019-04-07  Alan Modra  <amodra@gmail.com>
+
+       * ppc-dis.c (print_insn_powerpc): Use a tiny state machine
+       op_separator to control printing of spaces, comma and parens
+       rather than need_comma, need_paren and spaces vars.
+
 2019-04-07  Alan Modra  <amodra@gmail.com>
 
        PR 24421
index f42d5b21aa242007fa4fbe9fdfad7e0eafcd9901..cb10b239c269ef79e1233600debe8fdcddd79129 100644 (file)
@@ -720,8 +720,17 @@ print_insn_powerpc (bfd_vma memaddr,
     {
       const unsigned char *opindex;
       const struct powerpc_operand *operand;
-      int need_comma;
-      int need_paren;
+      enum {
+       need_comma = 0,
+       need_1space = 1,
+       need_2spaces = 2,
+       need_3spaces = 3,
+       need_4spaces = 4,
+       need_5spaces = 5,
+       need_6spaces = 6,
+       need_7spaces = 7,
+       need_paren
+      } op_separator;
       int skip_optional;
       int spaces;
 
@@ -732,8 +741,7 @@ print_insn_powerpc (bfd_vma memaddr,
        spaces = 1;
 
       /* Now extract and print the operands.  */
-      need_comma = 0;
-      need_paren = 0;
+      op_separator = spaces;
       skip_optional = -1;
       for (opindex = opcode->operands; *opindex != 0; opindex++)
        {
@@ -754,16 +762,12 @@ print_insn_powerpc (bfd_vma memaddr,
 
          value = operand_value_powerpc (operand, insn, dialect);
 
-         if (spaces)
-           {
-             (*info->fprintf_func) (info->stream, "%*s", spaces, " ");
-             spaces = 0;
-           }
-         if (need_comma)
-           {
-             (*info->fprintf_func) (info->stream, ",");
-             need_comma = 0;
-           }
+         if (op_separator == need_comma)
+           (*info->fprintf_func) (info->stream, ",");
+         else if (op_separator == need_paren)
+           (*info->fprintf_func) (info->stream, "(");
+         else
+           (*info->fprintf_func) (info->stream, "%*s", op_separator, " ");
 
          /* Print the operand as directed by the flags.  */
          if ((operand->flags & PPC_OPERAND_GPR) != 0
@@ -808,19 +812,12 @@ print_insn_powerpc (bfd_vma memaddr,
          else
            (*info->fprintf_func) (info->stream, "%" PRId64, value);
 
-         if (need_paren)
-           {
-             (*info->fprintf_func) (info->stream, ")");
-             need_paren = 0;
-           }
+         if (op_separator == need_paren)
+           (*info->fprintf_func) (info->stream, ")");
 
-         if ((operand->flags & PPC_OPERAND_PARENS) == 0)
-           need_comma = 1;
-         else
-           {
-             (*info->fprintf_func) (info->stream, "(");
-             need_paren = 1;
-           }
+         op_separator = need_comma;
+         if ((operand->flags & PPC_OPERAND_PARENS) != 0)
+           op_separator = need_paren;
        }
 
       /* We have found and printed an instruction.  */