ubsan: score: left shift of 2 by 31 places cannot be represented in type 'int'
[deliverable/binutils-gdb.git] / opcodes / visium-dis.c
index c71f8cf25ab3aea3270aa711ede5df5f6cb529c8..1f081f1a44c362fb898df8731e55cd3faad0f366 100644 (file)
@@ -94,7 +94,7 @@ disassem_class0 (disassemble_info *info, unsigned int ins)
       /* BRR instruction.  */
       {
        unsigned cbf = (ins >> 27) & 0x000f;
-       int displacement = ((int) (ins << 16)) >> 16;
+       int displacement = ((ins & 0xffff) ^ 0x8000) - 0x8000;
 
        if (ins == 0)
          (*info->fprintf_func) (info->stream, "nop");
@@ -789,7 +789,7 @@ print_insn_visium (bfd_vma addr, disassemble_info *info)
 
   /* Get 32-bit instruction word.  */
   FETCH_DATA (info, buffer + 4);
-  ins = buffer[0] << 24;
+  ins = (unsigned) buffer[0] << 24;
   ins |= buffer[1] << 16;
   ins |= buffer[2] << 8;
   ins |= buffer[3];
This page took 0.024376 seconds and 4 git commands to generate.