loongarch64 build failure on 32-bit host
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.
diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c
index f7235a1..7607d1d 100644
--- a/gas/config/tc-loongarch.c
+++ b/gas/config/tc-loongarch.c
@@ -658,12 +658,12 @@
}
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 @@
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;