ubsan: nds32: left shift cannot be represented in type 'int'
[deliverable/binutils-gdb.git] / include / opcode / nds32.h
index 7791864dd0857b62d7d7e8b8bae8b3608b78875e..0e60840f78aa50ff9806411c22f272b4cd58fb43 100644 (file)
@@ -51,11 +51,12 @@ static const int nds32_r54map[] ATTRIBUTE_UNUSED =
   -1, -1, -1, -1, -1, -1, -1, -1
 };
 
-#define N32_BIT(n)             (1 << (n))
+#define N32_BIT(n)             (1u << (n))
 #define __MASK(n)              (N32_BIT (n) - 1)
 #define __MF(v, off, bs)       (((v) & __MASK (bs)) << (off))
 #define __GF(v, off, bs)       (((v) >> off) & __MASK (bs))
-#define __SEXT(v, bs)          ((((v) & ((1 << (bs)) - 1)) ^ (1 << ((bs) - 1))) - (1 << ((bs) - 1)))
+#define __SEXT(v, bs)          \
+  ((((v) & __MASK ((bs))) ^ N32_BIT ((bs) - 1)) - N32_BIT ((bs) - 1))
 
 /* Make nds32 instructions.  */
 
@@ -150,7 +151,7 @@ static const int nds32_r54map[] ATTRIBUTE_UNUSED =
 #define N32_SUB6(insn)         (((insn) >> 0) & 0x3f)
 #define N32_SWID(insn)         (((insn) >> 5) & 0x3ff)
 #define N32_IMMU(insn, bs)     ((insn) & __MASK (bs))
-#define N32_IMMS(insn, bs)     ((signed) __SEXT (((insn) & __MASK (bs)), bs))
+#define N32_IMMS(insn, bs)     ((signed) __SEXT ((insn), (bs)))
 #define N32_IMM5U(insn)                N32_IMMU (insn, 5)
 #define N32_IMM12S(insn)       N32_IMMS (insn, 12)
 #define N32_IMM14S(insn)       N32_IMMS (insn, 14)
This page took 0.026413 seconds and 4 git commands to generate.