LLVM 15 adds __noinline__ as a keyword to match behaviour of GCC 12. When this macro is left in, it can cause the expression __attribute__((__noinline__)) to be expanded incorrectly. When the __noinline__ keyword is available disable the macro. Ref: https://reviews.llvm.org/D124866 https://bugs.gentoo.org/85712 =================================================================== --- a/include/hip/amd_detail/host_defines.h +++ b/include/hip/amd_detail/host_defines.h @@ -47,7 +47,9 @@ THE SOFTWARE. #define __constant__ __attribute__((constant)) #endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ +#if !defined(__has_feature) || !__has_feature(cuda_noinline_keyword) #define __noinline__ __attribute__((noinline)) +#endif #define __forceinline__ inline __attribute__((always_inline)) #if __HIP_NO_IMAGE_SUPPORT