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
|