forked from OSchip/llvm-project
[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
This commit is contained in:
parent
96aa0a4115
commit
9a75c06cd9
|
@ -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")
|
||||
|
||||
|
|
Loading…
Reference in New Issue