mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
m4: workaround clang/glibc problem with isnan()
When building libvirt with clang we get bogus warnings about 'double' being promoted to 'long double' when calling isnan(). https://bugzilla.redhat.com/show_bug.cgi?id=1472437 Detect this broken isnan() / compiler combination and disable the -Wdouble-promotion flag. Reviewed-by: Pavel Hrdina <phrdina@redhat.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
e255cf02b2
commit
1c21dd711c
@ -134,6 +134,24 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
|
||||
[lv_cv_gcc_wlogical_op_equal_expr_broken=yes])
|
||||
CFLAGS="$save_CFLAGS"])
|
||||
|
||||
AC_CACHE_CHECK([whether clang gives bogus warnings for -Wdouble-promotion],
|
||||
[lv_cv_clang_double_promotion_broken], [
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="-O2 -Wdouble-promotion -Werror"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <math.h>
|
||||
]], [[
|
||||
float f = 0.0;
|
||||
return isnan(f);]])],
|
||||
[lv_cv_clang_double_promotion_broken=no],
|
||||
[lv_cv_clang_double_promotion_broken=yes])
|
||||
CFLAGS="$save_CFLAGS"])
|
||||
|
||||
if test "$lv_cv_clang_double_promotion_broken" = "yes";
|
||||
then
|
||||
dontwarn="$dontwarn -Wdouble-promotion"
|
||||
fi
|
||||
|
||||
# We might fundamentally need some of these disabled forever, but
|
||||
# ideally we'd turn many of them on
|
||||
dontwarn="$dontwarn -Wfloat-equal"
|
||||
|
Loading…
Reference in New Issue
Block a user