[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


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