Commit 565cbdc2fec92ef2ae75995e06e69172ed2edecd
Committed by
Behan Webster
1 parent
aa93685afb
Exists in
master
and in
13 other branches
LLVMLinux: Add support for clang to compiler.h and new compiler-clang.h
Add a compiler-clang.h file to add specific macros needed for compiling the kernel with clang. Initially the only override required is the macro for silencing the compiler for a purposefully uninintialized variable. Author: Mark Charlebois <charlebm@gmail.com> Signed-off-by: Mark Charlebois <charlebm@gmail.com> Signed-off-by: Behan Webster <behanw@converseincode.com>
Showing 2 changed files with 19 additions and 0 deletions Side-by-side Diff
include/linux/compiler-clang.h
1 | +#ifndef __LINUX_COMPILER_H | |
2 | +#error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead." | |
3 | +#endif | |
4 | + | |
5 | +/* Some compiler specific definitions are overwritten here | |
6 | + * for Clang compiler | |
7 | + */ | |
8 | + | |
9 | +#ifdef uninitialized_var | |
10 | +#undef uninitialized_var | |
11 | +#define uninitialized_var(x) x = *(&(x)) | |
12 | +#endif |
include/linux/compiler.h
... | ... | @@ -63,6 +63,13 @@ |
63 | 63 | # include <linux/compiler-intel.h> |
64 | 64 | #endif |
65 | 65 | |
66 | +/* Clang compiler defines __GNUC__. So we will overwrite implementations | |
67 | + * coming from above header files here | |
68 | + */ | |
69 | +#ifdef __clang__ | |
70 | +#include <linux/compiler-clang.h> | |
71 | +#endif | |
72 | + | |
66 | 73 | /* |
67 | 74 | * Generic compiler-dependent macros required for kernel |
68 | 75 | * build go below this comment. Actual compiler/compiler version |