tc-arm.c 0xFFFFFFFFFFFFF breaks on 32-bit hosts
Hans-Peter Nilsson
hans-peter.nilsson@axis.com
Fri Aug 7 23:28:00 GMT 2015
In a i686-linux (remember those? 32-bit long!)
with gcc-4.1.2, I get this compiling gas for arm-eabi:
x/src/gas/config/tc-arm.c: In function 'is_double_a_single':
x/src/gas/config/tc-arm.c:7763: warning: integer constant is too large for 'long' type
x/src/gas/config/tc-arm.c: In function 'double_to_single':
x/src/gas/config/tc-arm.c:7778: warning: integer constant is too large for 'long' type
gas:
* tc-arm.c (double_to_single, is_double_a_single): Append ULL to
0xFFFFFFFFFFFFF to avoid errors on 32-bit hosts.
Maybe you want to fix that some other way, but this works for me.
Ok to commit?
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 7b3b5c9..899bfa2 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -7760,7 +7760,7 @@ static bfd_boolean
is_double_a_single (bfd_int64_t v)
{
int exp = (int)((v >> 52) & 0x7FF);
- bfd_int64_t mantissa = (v & (bfd_int64_t)0xFFFFFFFFFFFFF);
+ bfd_int64_t mantissa = (v & (bfd_int64_t)0xFFFFFFFFFFFFFULL);
return (exp == 0 || exp == 0x7FF
|| (exp >= 1023 - 126 && exp <= 1023 + 127))
@@ -7775,7 +7775,7 @@ double_to_single (bfd_int64_t v)
{
int sign = (int) ((v >> 63) & 1l);
int exp = (int) ((v >> 52) & 0x7FF);
- bfd_int64_t mantissa = (v & (bfd_int64_t)0xFFFFFFFFFFFFF);
+ bfd_int64_t mantissa = (v & (bfd_int64_t)0xFFFFFFFFFFFFFULL);
if (exp == 0x7FF)
exp = 0xFF;
brgds, H-P
More information about the Binutils
mailing list