Simplify __USEWIDE
[binutils-gdb.git] / opcodes / d30v-dis.c
index 61bb16d6d252b1f08c8c286e0d0763999576866e..571c4a5d85f6e79e41633a5e84ba0bdff581bddc 100644 (file)
@@ -1,5 +1,5 @@
 /* Disassemble D30V instructions.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2022 Free Software Foundation, Inc.
 
    This file is part of the GNU opcodes library.
 
@@ -123,9 +123,9 @@ print_insn (struct disassemble_info *info,
            int is_long,
            int show_ext)
 {
-  int val, opnum, need_comma = 0;
+  unsigned int val, opnum;
   const struct d30v_operand *oper;
-  int i, match, need_paren = 0, found_control = 0;
+  int i, match, need_comma = 0, need_paren = 0, found_control = 0;
   unsigned int opind = 0;
 
   (*info->fprintf_func) (info->stream, "%s", insn->op->name);
@@ -271,14 +271,10 @@ print_insn (struct disassemble_info *info,
          /* IMM6S3 is unsigned.  */
          if (oper->flags & OPERAND_SIGNED || bits == 32)
            {
-             long max;
-             max = (1 << (bits - 1));
-             if (val & max)
+             unsigned int sign = 1u << (bits - 1);
+             if (val & sign)
                {
-                 if (bits == 32)
-                   val = -val;
-                 else
-                   val = -val & ((1 << bits) - 1);
+                 val = -val & (sign + sign - 1);
                  neg = 1;
                }
            }
@@ -303,13 +299,11 @@ print_insn (struct disassemble_info *info,
        {
          if (oper->flags & OPERAND_SIGNED)
            {
-             int max = (1 << (bits - 1));
+             unsigned int sign = 1u << (bits - 1);
 
-             if (val & max)
+             if (val & sign)
                {
-                 val = -val;
-                 if (bits < 32)
-                   val &= ((1 << bits) - 1);
+                 val = -val & (sign + sign - 1);
                  (*info->fprintf_func) (info->stream, "-");
                }
            }