loongarch64 build failure on 32-bit host
authorAlan Modra <amodra@gmail.com>
Tue, 14 Dec 2021 11:36:29 +0000 (22:06 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 14 Dec 2021 22:50:59 +0000 (09:20 +1030)
gas/config/tc-loongarch.c: In function â€˜loongarch_args_parser_can_match_arg_helper’:
gas/config/tc-loongarch.c:661:13: error: cast from pointer to integer of different size [-Werror=pointer
-to-int-cast]
  661 |       imm = (offsetT) str_hash_find (r_htab, arg);
      |             ^

Cast it to the correct size int, relying on normal integer promotions
if offsetT is larger than a pointer.

* config/tc-loongarch.c (loongarch_args_parser_can_match_arg_helper):
Cast return from str_hash_find to intptr_t, not offsetT.

gas/config/tc-loongarch.c

index f7235a18864fa06d979068fa3b612c8e55f06a2f..7607d1da50135331e63b54dfc920a32f03ea90ad 100644 (file)
@@ -658,12 +658,12 @@ loongarch_args_parser_can_match_arg_helper (char esc_ch1, char esc_ch2,
        }
       break;
     case 'r':
-      imm = (offsetT) str_hash_find (r_htab, arg);
+      imm = (intptr_t) str_hash_find (r_htab, arg);
       ip->match_now = 0 < imm;
       ret = imm - 1;
       break;
     case 'f':
-      imm = (offsetT) str_hash_find (f_htab, arg);
+      imm = (intptr_t) str_hash_find (f_htab, arg);
       ip->match_now = 0 < imm;
       ret = imm - 1;
       break;
@@ -671,21 +671,21 @@ loongarch_args_parser_can_match_arg_helper (char esc_ch1, char esc_ch2,
       switch (esc_ch2)
        {
        case 'r':
-         imm = (offsetT) str_hash_find (cr_htab, arg);
+         imm = (intptr_t) str_hash_find (cr_htab, arg);
          break;
        default:
-         imm = (offsetT) str_hash_find (c_htab, arg);
+         imm = (intptr_t) str_hash_find (c_htab, arg);
        }
       ip->match_now = 0 < imm;
       ret = imm - 1;
       break;
     case 'v':
-      imm = (offsetT) str_hash_find (v_htab, arg);
+      imm = (intptr_t) str_hash_find (v_htab, arg);
       ip->match_now = 0 < imm;
       ret = imm - 1;
       break;
     case 'x':
-      imm = (offsetT) str_hash_find (x_htab, arg);
+      imm = (intptr_t) str_hash_find (x_htab, arg);
       ip->match_now = 0 < imm;
       ret = imm - 1;
       break;