summaryrefslogtreecommitdiff
path: root/dev-util/hip/files/hip-7.2.0-noinline-fixes.patch
blob: ee5d17a7b15ccf728921e6271edef9b9d4794ccc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Unsetting __noinline__ before inclusion of libc++ __config breaks libc++ headers.

Additionally, `[[__gnu__::__noinline__]]` is used in libstdc++-16 `#include <format>`,
causing build failures in libstdc++ as well.

Bug: https://github.com/ROCm/rocm-systems/issues/1874
--- a/hipamd/include/hip/amd_detail/host_defines.h
+++ b/hipamd/include/hip/amd_detail/host_defines.h
@@ -250,6 +250,17 @@ typedef __hip_internal::int64_t __hip_int64_t;
 
 #define __global__
 
+// __config in libc++ fails on `__has_attribute(__noinline__)` if __noinline__ is emptied
+#if defined(__cplusplus) && defined(__has_include)
+#  if __has_include(<__config>)
+#    include <__config>
+#  else
+// format in libstdc++-16 fails on `[[__gnu__::__noinline__]]` if __noinline__ is emptied
+// https://github.com/ROCm/rocm-systems/issues/1874#issuecomment-5550937256
+#    include <format>
+#  endif
+#endif
+
 #define __noinline__
 #define __forceinline__ inline