diff options
author | Andrey Konovalov <andrey.konovalov@linaro.org> | 2014-04-15 01:23:48 +0400 |
---|---|---|
committer | Andrey Konovalov <andrey.konovalov@linaro.org> | 2014-04-15 01:23:48 +0400 |
commit | 6d849f4d57beace52b1027b727a9d83ec020aaf8 (patch) | |
tree | f8ca0618b88f0cde08818e76e62c5fcf82072cc8 /include/linux | |
parent | 6613ee6dc52517d1227f25da53ad13b0bf7f667b (diff) | |
parent | 57e57c0d2969763f87d82892f0f6139215bdae02 (diff) |
Merge branch 'tracking-llvm' into merge-linux-linaro-core-tracking
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/compiler-clang.h | 12 | ||||
-rw-r--r-- | include/linux/compiler.h | 7 | ||||
-rw-r--r-- | include/linux/mod_devicetable.h | 5 | ||||
-rw-r--r-- | include/linux/moduleparam.h | 2 |
4 files changed, 25 insertions, 1 deletions
diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h new file mode 100644 index 00000000000..d1e49d52b64 --- /dev/null +++ b/include/linux/compiler-clang.h @@ -0,0 +1,12 @@ +#ifndef __LINUX_COMPILER_H +#error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead." +#endif + +/* Some compiler specific definitions are overwritten here + * for Clang compiler + */ + +#ifdef uninitialized_var +#undef uninitialized_var +#define uninitialized_var(x) x = *(&(x)) +#endif diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 2472740d7ab..ee7239ea158 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -63,6 +63,13 @@ extern void __chk_io_ptr(const volatile void __iomem *); # include <linux/compiler-intel.h> #endif +/* Clang compiler defines __GNUC__. So we will overwrite implementations + * coming from above header files here + */ +#ifdef __clang__ +#include <linux/compiler-clang.h> +#endif + /* * Generic compiler-dependent macros required for kernel * build go below this comment. Actual compiler/compiler version diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 45e921401b0..dbb5cf09f72 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -548,6 +548,11 @@ struct amba_id { * See documentation of "x86_match_cpu" for details. */ +/* + * MODULE_DEVICE_TABLE expects this struct to be called x86cpu_device_id. + * Although gcc seems to ignore this error, clang fails without this define. + */ +#define x86cpu_device_id x86_cpu_id struct x86_cpu_id { __u16 vendor; __u16 family; diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index c3eb102a9cc..175f6995d1a 100644 --- a/include/linux/moduleparam.h +++ b/include/linux/moduleparam.h @@ -346,7 +346,7 @@ static inline void destroy_params(const struct kernel_param *params, /* The macros to do compile-time type checking stolen from Jakub Jelinek, who IIRC came up with this idea for the 2.4 module init code. */ #define __param_check(name, p, type) \ - static inline type *__check_##name(void) { return(p); } + static inline type __always_unused *__check_##name(void) { return(p); } extern struct kernel_param_ops param_ops_byte; extern int param_set_byte(const char *val, const struct kernel_param *kp); |