aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2012-10-29 10:17:51 +0000
committerAlan Modra <amodra@bigpond.net.au>2012-10-29 10:17:51 +0000
commitbd463258244dd3941353008a18ee3198a2f93448 (patch)
treee56c384504ddc8eb0be4cd834880fa2d0e6c86cd
parent5fa5dee4440eb5e7bf4221ebac5c2a5b4b1e7bcf (diff)
downloadbinutils-bd463258244dd3941353008a18ee3198a2f93448.tar.gz
* sb.c (sb_check): Use __builtin_clzll when size_t is not the
same size as long.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/sb.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index deefdd662..81759bdfd 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
2012-10-29 Alan Modra <amodra@gmail.com>
+ * sb.c (sb_check): Use __builtin_clzll when size_t is not the
+ same size as long.
+
+2012-10-29 Alan Modra <amodra@gmail.com>
+
* config/tc-ppc.c (ppc_znop): Remove unused vars.
2012-10-26 Alan Modra <amodra@gmail.com>
diff --git a/gas/sb.c b/gas/sb.c
index f68402fc4..f21f46e9d 100644
--- a/gas/sb.c
+++ b/gas/sb.c
@@ -137,7 +137,10 @@ sb_check (sb *ptr, size_t len)
if ((ssize_t) want < 0)
as_fatal ("string buffer overflow");
#if GCC_VERSION >= 3004
- max = (size_t) 1 << (CHAR_BIT * sizeof (want) - __builtin_clzl (want));
+ max = (size_t) 1 << (CHAR_BIT * sizeof (want)
+ - (sizeof (want) <= sizeof (long)
+ ? __builtin_clzl ((long) want)
+ : __builtin_clzll ((long long) want)));
#else
max = 128;
while (want > max)