commit abf3f551ec16bcf1d66a95ed4a163f2818e3e415
parent 939d53b331a65816db6fe21e0744b149829b0349
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Tue, 26 Nov 2019 06:50:00 +0000
Disable Clang 8.0 workaround for latest Clang
Diffstat:
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/include/kfr/dft/impl/fft-impl.hpp b/include/kfr/dft/impl/fft-impl.hpp
@@ -943,12 +943,17 @@ KFR_INTRINSIC void generate_real_twiddles(dft_plan_real<T>* self, size_t size)
}
template <typename T>
-#ifdef CMT_ARCH_X32
-// Fix Clang 8.0 bug
+#if (defined CMT_ARCH_X32 && defined __clang__) && ((defined __APPLE__) || (__clang_major__ == 8))
+// Fix for Clang 8.0 bug (x32 with FMA instructions)
+// Xcode has different versions but x86 is very rare on macOS these days,
+// so disable inlining and FMA for x32 macOS and Clang 8.x
__attribute__((target("no-fma"), flatten, noinline))
+#else
+KFR_INTRINSIC
#endif
-void to_fmt(size_t real_size, const complex<T>* rtwiddle, complex<T>* out, const complex<T>* in,
- dft_pack_format fmt)
+void
+to_fmt(size_t real_size, const complex<T>* rtwiddle, complex<T>* out, const complex<T>* in,
+ dft_pack_format fmt)
{
using namespace intrinsics;
size_t csize = real_size / 2; // const size_t causes internal compiler error: in tsubst_copy in GCC 5.2