Re: ubsan: ns32k: left shift cannot be represented in type
[deliverable/binutils-gdb.git] / opcodes / ns32k-dis.c
index 5e6f0964b7aa626796f64dab47cfbdc2483ce48d..e43fff712abc858d9e4da7f5e419882673abd52a 100644 (file)
@@ -327,8 +327,8 @@ bit_copy (bfd_byte *buffer, int offset, int count, char *to)
 static int
 sign_extend (unsigned int value, unsigned int bits)
 {
-  unsigned int sign = 1u << bits;
-  return ((value & (sign - 1)) ^ sign) - sign;
+  unsigned int sign = 1u << (bits - 1);
+  return ((value & (sign + sign - 1)) ^ sign) - sign;
 }
 
 static void
This page took 0.023425 seconds and 4 git commands to generate.