On Wed, Jun 6, 2018 at 6:39 PM, <hpa@xxxxxxxxx> wrote: ... >>Beyond this, a general question: Can someone explain why all these >>inline defines are in compiler-gcc.h (as there exists compiler.h and >>compiler-clang.h)? >> >>Thanks. >> >>Regards, >>- Sedat - > > Because gcc itself also supports both GNU89-style and C99-style inlines, but the kernel was built with the former, and it is not necessarily a trivial modification, except for "static inline" which is the same for both. > > The other option is to pass -fgnu89-inline on the command line, which is supported by both gcc and clang. The two methods are fully equivalent. > We have... $ ls include/linux/compiler* include/linux/compiler-clang.h include/linux/compiler-gcc.h include/linux/compiler.h include/linux/compiler-intel.h include/linux/compiler_types.h include/linux/compiler_types.h says... #ifdef __GNUC__ #include <linux/compiler-gcc.h> #endif ... /* Intel compiler defines __GNUC__. So we will overwrite implementations * coming from above header files here */ #ifdef __INTEL_COMPILER # 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 * specific implementations come from the above header files */ ... include/linux/compiler-clang.h says... #ifndef __LINUX_COMPILER_TYPES_H #error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead." #endif So, compiler-clang.h uses defines etc. from compiler-gcc.h but might overwrite it. Correct? I would have expected inline defines in compiler.h as I thought there is the place for generic stuff. Maybe you can clarify on the roles of especially compiler.h and compiler_types.h. Thanks. - sed@ - -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html