Author: Artem Belevich
Date: 2021-05-24T11:07:09-07:00
New Revision: 9a75c06cd9d94d3fd13c47a01044da97b98cf26b

URL: 
https://github.com/llvm/llvm-project/commit/9a75c06cd9d94d3fd13c47a01044da97b98cf26b
DIFF: 
https://github.com/llvm/llvm-project/commit/9a75c06cd9d94d3fd13c47a01044da97b98cf26b.diff

LOG: [CUDA]  Work around compatibility issue with libstdc++ 11.1.0

libstdc++ redeclares __failed_assertion multiple times and that results in the
function declared with conflicting set of attributes when we include <complex>
with __host__ __device__ attributes force-applied to all functions.

In order to work around the issue, we rename __failed_assertion within the
region with forced attributes.

See https://bugs.llvm.org/show_bug.cgi?id=50383 for the details.

Differential Revision: https://reviews.llvm.org/D102936

Added: 
    

Modified: 
    clang/lib/Headers/cuda_wrappers/complex

Removed: 
    


################################################################################
diff  --git a/clang/lib/Headers/cuda_wrappers/complex 
b/clang/lib/Headers/cuda_wrappers/complex
index 11d40a82a8f6a..e6805b6044e98 100644
--- a/clang/lib/Headers/cuda_wrappers/complex
+++ b/clang/lib/Headers/cuda_wrappers/complex
@@ -72,8 +72,16 @@
 #define _GLIBCXX_USE_C99_COMPLEX 0
 #define _GLIBCXX_USE_C99_COMPLEX_TR1 0
 
+// Work around a compatibility issue with libstdc++ 11.1.0
+// https://bugs.llvm.org/show_bug.cgi?id=50383
+#pragma push_macro("__failed_assertion")
+#if _GLIBCXX_RELEASE == 11
+#define __failed_assertion __cuda_failed_assertion
+#endif
+
 #include_next <complex>
 
+#pragma pop_macro("__failed_assertion")
 #pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX_TR1")
 #pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX")
 


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to