From 3c9c7a0e727eb6380bee29120736dba6da2232a3 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 22 Oct 2021 16:31:40 +0200 Subject: [PATCH] build: Make sure ifuncs exist when using fp16 Fixes msys compiles on Windows (and everywhere else hopefully). Fixes #4285 --- meson.build | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 897de13766..02a2786c5c 100644 --- a/meson.build +++ b/meson.build @@ -712,12 +712,24 @@ if get_option('f16c').enabled() # if !defined(__amd64__) && !defined(__x86_64__) # error "F16C intrinsics are only available on x86_64" # endif +#if !defined __has_attribute +# error "No __has_attribute() support" +#endif +#if !__has_attribute(ifunc) +# error "ifunc not supported" +#endif +static int resolved_ifunc (void) { return 0; } +static void *resolve_ifunc (void) { return resolved_ifunc; } +int ifunc_test (void) __attribute__((ifunc ("resolve_ifunc"))); +#else +int ifunc_test (void) { return 0; } #endif #if defined(__SSE__) || defined(_MSC_VER) # include #else # error "No F16C intrinsics available" #endif + int main () { float f[4] = { 0, }; unsigned short h[4] = { 0, }; @@ -730,7 +742,7 @@ int main () { __builtin_cpu_supports ("f16c"); #endif - return 0; + return ifunc_test (); }''' if cc.get_id() != 'msvc' test_f16c_cflags = [ '-mf16c' ] -- 2.30.2