2019-08-18 Bruno Haible <br...@clisp.org> Defeat -flto GCC optimization in math autoconf tests. Reported by Tomasz Kłoczko <kloczko.tom...@gmail.com> at <https://savannah.gnu.org/bugs/?56109>. * m4/mathfunc.m4 (gl_MATHFUNC): Mark function pointer as 'volatile'. * m4/acosl.m4 (gl_FUNC_ACOSL): Likewise. * m4/asinl.m4 (gl_FUNC_ASINL): Likewise. * m4/atanl.m4 (gl_FUNC_ATANL): Likewise. * m4/cosl.m4 (gl_FUNC_COSL): Likewise. * m4/exp2.m4 (gl_FUNC_EXP2): Likewise. * m4/expl.m4 (gl_FUNC_EXPL): Likewise. * m4/expm1.m4 (gl_FUNC_EXPM1): Likewise. * m4/expm1l.m4 (gl_FUNC_EXPM1L): Likewise. * m4/sinl.m4 (gl_FUNC_SINL): Likewise. * m4/sqrtl.m4 (gl_FUNC_SQRTL): Likewise. * m4/tanl.m4 (gl_FUNC_TANL): Likewise.
diff --git a/m4/acosl.m4 b/m4/acosl.m4 index 1e4223b..a15ff68 100644 --- a/m4/acosl.m4 +++ b/m4/acosl.m4 @@ -1,4 +1,4 @@ -# acosl.m4 serial 8 +# acosl.m4 serial 9 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_ACOSL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = acosl; + long double (* volatile funcptr) (long double) = acosl; long double x;]], [[return funcptr (x) > 1 || acosl (x) > 1;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_ACOSL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = acosl; + long double (* volatile funcptr) (long double) = acosl; long double x;]], [[return funcptr (x) > 1 || acosl (x) > 1;]])], diff --git a/m4/asinl.m4 b/m4/asinl.m4 index 40c8c94..0698bd9 100644 --- a/m4/asinl.m4 +++ b/m4/asinl.m4 @@ -1,4 +1,4 @@ -# asinl.m4 serial 8 +# asinl.m4 serial 9 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_ASINL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = asinl; + long double (* volatile funcptr) (long double) = asinl; long double x;]], [[return funcptr (x) > 1 || asinl (x) > 1;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_ASINL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = asinl; + long double (* volatile funcptr) (long double) = asinl; long double x;]], [[return funcptr (x) > 1 || asinl (x) > 1;]])], diff --git a/m4/atanl.m4 b/m4/atanl.m4 index 171e540..5e7294c 100644 --- a/m4/atanl.m4 +++ b/m4/atanl.m4 @@ -1,4 +1,4 @@ -# atanl.m4 serial 8 +# atanl.m4 serial 9 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_ATANL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = atanl; + long double (* volatile funcptr) (long double) = atanl; long double x;]], [[return funcptr (x) > 1 || atanl (x) > 1;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_ATANL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = atanl; + long double (* volatile funcptr) (long double) = atanl; long double x;]], [[return funcptr (x) > 1 || atanl (x) > 1;]])], diff --git a/m4/cosl.m4 b/m4/cosl.m4 index 669070a..c078bdc 100644 --- a/m4/cosl.m4 +++ b/m4/cosl.m4 @@ -1,4 +1,4 @@ -# cosl.m4 serial 8 +# cosl.m4 serial 9 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_COSL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = cosl; + long double (* volatile funcptr) (long double) = cosl; long double x;]], [[return funcptr (x) > 0.4 || cosl (x) > 0.4;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_COSL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = cosl; + long double (* volatile funcptr) (long double) = cosl; long double x;]], [[return funcptr (x) > 0.4 || cosl (x) > 0.4;]])], diff --git a/m4/exp2.m4 b/m4/exp2.m4 index c5c58bd..b6cf666 100644 --- a/m4/exp2.m4 +++ b/m4/exp2.m4 @@ -1,4 +1,4 @@ -# exp2.m4 serial 2 +# exp2.m4 serial 3 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -26,7 +26,7 @@ AC_DEFUN([gl_FUNC_EXP2], "C" #endif double exp2 (double); - double (*funcptr) (double) = exp2; + double (* volatile funcptr) (double) = exp2; double x;]], [[return funcptr (x) > 1.5 || exp2 (x) > 1.5;]])], @@ -50,7 +50,7 @@ AC_DEFUN([gl_FUNC_EXP2], "C" #endif double exp2 (double); - double (*funcptr) (double) = exp2; + double (* volatile funcptr) (double) = exp2; double x;]], [[return funcptr (x) > 1.5 || exp2 (x) > 1.5;]])], diff --git a/m4/expl.m4 b/m4/expl.m4 index b233046..0619a2d 100644 --- a/m4/expl.m4 +++ b/m4/expl.m4 @@ -1,4 +1,4 @@ -# expl.m4 serial 13 +# expl.m4 serial 14 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -23,7 +23,7 @@ AC_DEFUN([gl_FUNC_EXPL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = expl; + long double (* volatile funcptr) (long double) = expl; long double x;]], [[return funcptr (x) > 1.5 || expl (x) > 1.5;]])], @@ -42,7 +42,7 @@ AC_DEFUN([gl_FUNC_EXPL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = expl; + long double (* volatile funcptr) (long double) = expl; long double x;]], [[return funcptr (x) > 1.5 || expl (x) > 1.5;]])], diff --git a/m4/expm1.m4 b/m4/expm1.m4 index 088018a..389c7dc 100644 --- a/m4/expm1.m4 +++ b/m4/expm1.m4 @@ -1,4 +1,4 @@ -# expm1.m4 serial 7 +# expm1.m4 serial 8 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_EXPM1], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - double (*funcptr) (double) = expm1; + double (* volatile funcptr) (double) = expm1; double x;]], [[return funcptr (x) > 0.5 || expm1 (x) > 0.5;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_EXPM1], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - double (*funcptr) (double) = expm1; + double (* volatile funcptr) (double) = expm1; double x;]], [[return funcptr (x) > 0.5 || expm1 (x) > 0.5;]])], diff --git a/m4/expm1l.m4 b/m4/expm1l.m4 index 324b702..5d3a991 100644 --- a/m4/expm1l.m4 +++ b/m4/expm1l.m4 @@ -1,4 +1,4 @@ -# expm1l.m4 serial 4 +# expm1l.m4 serial 5 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -27,7 +27,7 @@ AC_DEFUN([gl_FUNC_EXPM1L], "C" #endif long double expm1l (long double); - long double (*funcptr) (long double) = expm1l; + long double (* volatile funcptr) (long double) = expm1l; long double x;]], [[return funcptr (x) > 0.5 || expm1l (x) > 0.5;]])], @@ -51,7 +51,7 @@ AC_DEFUN([gl_FUNC_EXPM1L], "C" #endif long double expm1l (long double); - long double (*funcptr) (long double) = expm1l; + long double (* volatile funcptr) (long double) = expm1l; long double x;]], [[return funcptr (x) > 0.5 || expm1l (x) > 0.5;]])], diff --git a/m4/mathfunc.m4 b/m4/mathfunc.m4 index 91b538a..b9a5726 100644 --- a/m4/mathfunc.m4 +++ b/m4/mathfunc.m4 @@ -1,4 +1,4 @@ -# mathfunc.m4 serial 11 +# mathfunc.m4 serial 12 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -60,7 +60,7 @@ AC_DEFUN([gl_MATHFUNC], #endif #include <math.h> $4 - $2 (*funcptr) $3 = ]func[; + $2 (* volatile funcptr) $3 = ]func[; int i_ret; float f_ret; double d_ret; @@ -85,7 +85,7 @@ AC_DEFUN([gl_MATHFUNC], #endif #include <math.h> $4 - $2 (*funcptr) $3 = ]func[; + $2 (* volatile funcptr) $3 = ]func[; int i_ret; float f_ret; double d_ret; diff --git a/m4/sinl.m4 b/m4/sinl.m4 index 975ea52..b3599ef 100644 --- a/m4/sinl.m4 +++ b/m4/sinl.m4 @@ -1,4 +1,4 @@ -# sinl.m4 serial 8 +# sinl.m4 serial 9 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_SINL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = sinl; + long double (* volatile funcptr) (long double) = sinl; long double x;]], [[return funcptr (x) > 0.4 || sinl (x) > 0.4;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_SINL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = sinl; + long double (* volatile funcptr) (long double) = sinl; long double x;]], [[return funcptr (x) > 0.4 || sinl (x) > 0.4;]])], diff --git a/m4/sqrtl.m4 b/m4/sqrtl.m4 index 31e94ff..af15c0f 100644 --- a/m4/sqrtl.m4 +++ b/m4/sqrtl.m4 @@ -1,4 +1,4 @@ -# sqrtl.m4 serial 10 +# sqrtl.m4 serial 11 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_SQRTL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = sqrtl; + long double (* volatile funcptr) (long double) = sqrtl; long double x;]], [[return funcptr (x) > 0.4 || sqrtl (x) > 0.4;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_SQRTL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = sqrtl; + long double (* volatile funcptr) (long double) = sqrtl; long double x;]], [[return funcptr (x) > 0.4 || sqrtl (x) > 0.4;]])], diff --git a/m4/tanl.m4 b/m4/tanl.m4 index 4a45a7a..8cd75fb 100644 --- a/m4/tanl.m4 +++ b/m4/tanl.m4 @@ -1,4 +1,4 @@ -# tanl.m4 serial 8 +# tanl.m4 serial 9 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_TANL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = tanl; + long double (* volatile funcptr) (long double) = tanl; long double x;]], [[return funcptr (x) > 0.4 || tanl (x) > 0.4;]])], @@ -41,7 +41,7 @@ AC_DEFUN([gl_FUNC_TANL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> - long double (*funcptr) (long double) = tanl; + long double (* volatile funcptr) (long double) = tanl; long double x;]], [[return funcptr (x) > 0.4 || tanl (x) > 0.4;]])],