aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Kretz <m.kretz@gsi.de>2023-02-20 11:13:44 +0100
committerMatthias Kretz <m.kretz@gsi.de>2023-02-23 15:01:49 +0100
commit92c47b15d5af3e7f93d11ad69a45b6d1cb8661c5 (patch)
tree5b001de53d138da8fb0d642707154b155ff637d9
parent2e29e2fbeb8936e5c85cefaf547cba42e17e137b (diff)
downloadgcc-92c47b15d5af3e7f93d11ad69a45b6d1cb8661c5.zip
gcc-92c47b15d5af3e7f93d11ad69a45b6d1cb8661c5.tar.gz
gcc-92c47b15d5af3e7f93d11ad69a45b6d1cb8661c5.tar.bz2
libstdc++: Fix simd build failure on clang
Clang does not support __attribute__ on lambdas. Therefore, only set _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA if __clang__ is not defined. Signed-off-by: Matthias Kretz <m.kretz@gsi.de> libstdc++-v3/ChangeLog: PR libstdc++/108030 * include/experimental/bits/simd_detail.h (_GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA): Define as empty for __clang__.
-rw-r--r--libstdc++-v3/include/experimental/bits/simd_detail.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/libstdc++-v3/include/experimental/bits/simd_detail.h b/libstdc++-v3/include/experimental/bits/simd_detail.h
index a0ad10e..30cc1ef 100644
--- a/libstdc++-v3/include/experimental/bits/simd_detail.h
+++ b/libstdc++-v3/include/experimental/bits/simd_detail.h
@@ -254,15 +254,16 @@
#ifdef __clang__
#define _GLIBCXX_SIMD_NORMAL_MATH
+#define _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA
#else
#define _GLIBCXX_SIMD_NORMAL_MATH \
[[__gnu__::__optimize__("finite-math-only,no-signed-zeros")]]
+#define _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA __attribute__((__always_inline__))
#endif
#define _GLIBCXX_SIMD_NEVER_INLINE [[__gnu__::__noinline__]]
#define _GLIBCXX_SIMD_INTRINSIC \
[[__gnu__::__always_inline__, __gnu__::__artificial__]] inline
#define _GLIBCXX_SIMD_ALWAYS_INLINE [[__gnu__::__always_inline__]] inline
-#define _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA __attribute__((__always_inline__))
#define _GLIBCXX_SIMD_IS_UNLIKELY(__x) __builtin_expect(__x, 0)
#define _GLIBCXX_SIMD_IS_LIKELY(__x) __builtin_expect(__x, 1)