[LLVMbugs] [Bug 19389] SSE register return with SSE disabled
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Thu Apr 17 06:25:55 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=19389
Jan-Simon Möller <dl9pf at gmx.de> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #3 from Jan-Simon Möller <dl9pf at gmx.de> ---
Closing as a kernel issue. Keeping the used patch here for reference:
From: Mark Charlebois <charlebm at gmail.com>
Date: Tue, 15 Apr 2014 17:36:37 +0100
Subject: [PATCH] mbcache: LLVMLinux: mbcache.patch
The call to __builtin_log2 presumes there is a
double log2(double x) function defined in the kernel.
The call to hash_log is a call to hash_64 which is
defined in include/linux/hash.h
static __always_inline u64 hash_64(u64 val, unsigned int bits)
That means that __builtin_log2(NR_BG_LOCKS) is converting
NR_BG_LOCKS to a double and returning a double and then that
is converted to an unsigned int.
Using ilog2 is much more appropriate and efficient.
Another side effect of using __builtin_log2 is that is uses
__aeabi_* functions for ARM that require linking with libgcc.a.
Author: Mark Charlebois <charlebm at gmail.com>
Signed-off-by: Mark Charlebois <charlebm at gmail.com>
diff --git a/fs/mbcache.c b/fs/mbcache.c
index bf166e3..2c0752b 100644
--- a/fs/mbcache.c
+++ b/fs/mbcache.c
@@ -93,7 +93,7 @@
#define MB_CACHE_WRITER ((unsigned short)~0U >> 1)
-#define MB_CACHE_ENTRY_LOCK_BITS __builtin_log2(NR_BG_LOCKS)
+#define MB_CACHE_ENTRY_LOCK_BITS ilog2(NR_BG_LOCKS)
#define MB_CACHE_ENTRY_LOCK_INDEX(ce) \
(hash_long((unsigned long)ce, MB_CACHE_ENTRY_LOCK_BITS))
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140417/988065cd/attachment.html>
More information about the llvm-bugs
mailing list