On Mon, Mar 11, 2024 at 8:44 AM Michael S. Tsirkin mst@redhat.com wrote:
On Sat, Mar 09, 2024 at 06:05:08PM -0800, Ian Rogers wrote:
An issue was reported with clang and llvm libc where the noinline attribute [1] was being expanded due to the #define in linux/compiler.h (now in compiler_attributes.h). The expansion caused the __attribute__ to appear twice and break the build. To avoid this conflict, rename noinline to __noinline which is more consistent with other compiler attributes.
[1] https://clang.llvm.org/docs/AttributeReference.html#noinline
Following this link, I don't see __noinline there - only __noinline__ and noinline. What's up?
__noinline (which is what this patch is changing the preprocessor define to) will not be expanded in the presence of __attribute__((__noinline__)), __attribute__((noinline)), or [[gnu::inline]], unlike the previous macro definition.