http://llvm.org/bugs/show_bug.cgi?id=19389

Jan-Simon Möller <dl...@gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #3 from Jan-Simon Möller <dl...@gmx.de> ---
Closing as a kernel issue. Keeping the used patch here for reference:

From: Mark Charlebois <charl...@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 <charl...@gmail.com>                               
Signed-off-by: Mark Charlebois <charl...@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.
_______________________________________________
LLVMbugs mailing list
LLVMbugs@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to