PR26497 UBSAN: tc-sh.c:2467 left shift cannot be represented
authorAlan Modra <amodra@gmail.com>
Mon, 31 Aug 2020 07:12:42 +0000 (16:42 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 31 Aug 2020 10:58:12 +0000 (20:28 +0930)
PR 26497
* config/tc-sh.c (assemble_ppi): Use unsigned variables.

gas/ChangeLog
gas/config/tc-sh.c

index 0d55433db368b33e261dac94e0c2154d8424b641..2265271dba78d1a4ef03e4356f6e8f76f73f5fe3 100644 (file)
@@ -1,3 +1,8 @@
+2020-08-31  Alan Modra  <amodra@gmail.com>
+
+       PR 26497
+       * config/tc-sh.c (assemble_ppi): Use unsigned variables.
+
 2020-08-31  Alan Modra  <amodra@gmail.com>
 
        PR 26495
index e1e509d7d2df5a0159d83c42f635855f2a76bf7a..ea9052286a2ba61cd6f7d6670c9678ce7f8d3068 100644 (file)
@@ -2205,12 +2205,12 @@ find_cooked_opcode (char **str_p)
 static unsigned int
 assemble_ppi (char *op_end, sh_opcode_info *opcode)
 {
-  int movx = 0;
-  int movy = 0;
-  int cond = 0;
-  int field_b = 0;
+  unsigned int movx = 0;
+  unsigned int movy = 0;
+  unsigned int cond = 0;
+  unsigned int field_b = 0;
   char *output;
-  int move_code;
+  unsigned int move_code;
   unsigned int size;
 
   for (;;)
@@ -2464,7 +2464,7 @@ assemble_ppi (char *op_end, sh_opcode_info *opcode)
   if (field_b)
     {
       /* Parallel processing insn.  */
-      unsigned long ppi_code = (movx | movy | 0xf800) << 16 | field_b;
+      unsigned int ppi_code = (movx | movy | 0xf800) << 16 | field_b;
 
       output = frag_more (4);
       size = 4;