summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Belevich <tra@google.com>2023-09-12 13:35:07 -0700
committerTobias Hieta <tobias@hieta.se>2023-09-29 08:23:49 +0200
commit87ec1f460d0efbc565e89f817af73c2496361749 (patch)
treed1e1ec647cb0de415017acc9c415b7af67d1729b
parent[lldb] Fix building LLDB standlone without framework (diff)
downloadllvm-project-87ec1f460d0efbc565e89f817af73c2496361749.tar.gz
llvm-project-87ec1f460d0efbc565e89f817af73c2496361749.tar.bz2
llvm-project-87ec1f460d0efbc565e89f817af73c2496361749.zip
Work around two more instances of __noinline__ conflicts. (#66138)
Fixes https://github.com/llvm/llvm-project/issues/57544 (cherry picked from commit 588023ddafb4b0cd11914ab068c6d07187374d69)
-rw-r--r--clang/lib/Headers/CMakeLists.txt2
-rw-r--r--clang/lib/Headers/cuda_wrappers/bits/basic_string.h9
-rw-r--r--clang/lib/Headers/cuda_wrappers/bits/basic_string.tcc9
3 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt
index f2b0c5cddcbb..db47de2ad965 100644
--- a/clang/lib/Headers/CMakeLists.txt
+++ b/clang/lib/Headers/CMakeLists.txt
@@ -275,6 +275,8 @@ set(cuda_wrapper_files
set(cuda_wrapper_bits_files
cuda_wrappers/bits/shared_ptr_base.h
+ cuda_wrappers/bits/basic_string.h
+ cuda_wrappers/bits/basic_string.tcc
)
set(ppc_wrapper_files
diff --git a/clang/lib/Headers/cuda_wrappers/bits/basic_string.h b/clang/lib/Headers/cuda_wrappers/bits/basic_string.h
new file mode 100644
index 000000000000..64f50d9f6a72
--- /dev/null
+++ b/clang/lib/Headers/cuda_wrappers/bits/basic_string.h
@@ -0,0 +1,9 @@
+// CUDA headers define __noinline__ which interferes with libstdc++'s use of
+// `__attribute((__noinline__))`. In order to avoid compilation error,
+// temporarily unset __noinline__ when we include affected libstdc++ header.
+
+#pragma push_macro("__noinline__")
+#undef __noinline__
+#include_next "bits/basic_string.h"
+
+#pragma pop_macro("__noinline__")
diff --git a/clang/lib/Headers/cuda_wrappers/bits/basic_string.tcc b/clang/lib/Headers/cuda_wrappers/bits/basic_string.tcc
new file mode 100644
index 000000000000..90c7fe34d932
--- /dev/null
+++ b/clang/lib/Headers/cuda_wrappers/bits/basic_string.tcc
@@ -0,0 +1,9 @@
+// CUDA headers define __noinline__ which interferes with libstdc++'s use of
+// `__attribute((__noinline__))`. In order to avoid compilation error,
+// temporarily unset __noinline__ when we include affected libstdc++ header.
+
+#pragma push_macro("__noinline__")
+#undef __noinline__
+#include_next "bits/basic_string.tcc"
+
+#pragma pop_macro("__noinline__")