From 634ee598d986cc2b9ff13b31aa70b448da471373 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 14 Oct 2018 09:27:21 +0200 Subject: [PATCH] floor, ceil, trunc, truncf, truncl: Defeat GCC optimizations. * m4/floor.m4 (gl_FUNC_FLOOR_LIBS): Use 'floor' also through a function pointer. * m4/ceil.m4 (gl_FUNC_CEIL_LIBS): Use 'ceil' also through a function pointer. * m4/trunc.m4 (gl_FUNC_TRUNC): Use 'trunc' also through a function pointer. * m4/truncf.m4 (gl_FUNC_TRUNCF): Use 'truncf' also through a function pointer. * m4/truncl.m4 (gl_FUNC_TRUNCL): Use 'truncl' also through a function pointer. --- ChangeLog | 14 ++++++++++++++ m4/ceil.m4 | 8 +++++--- m4/floor.m4 | 8 +++++--- m4/trunc.m4 | 8 +++++--- m4/truncf.m4 | 8 +++++--- m4/truncl.m4 | 8 +++++--- 6 files changed, 39 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index ecd69df04f..7ee522b528 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2018-10-14 Bruno Haible + + floor, ceil, trunc, truncf, truncl: Defeat GCC optimizations. + * m4/floor.m4 (gl_FUNC_FLOOR_LIBS): Use 'floor' also through a function + pointer. + * m4/ceil.m4 (gl_FUNC_CEIL_LIBS): Use 'ceil' also through a function + pointer. + * m4/trunc.m4 (gl_FUNC_TRUNC): Use 'trunc' also through a function + pointer. + * m4/truncf.m4 (gl_FUNC_TRUNCF): Use 'truncf' also through a function + pointer. + * m4/truncl.m4 (gl_FUNC_TRUNCL): Use 'truncl' also through a function + pointer. + 2018-10-13 Akim Demaille bootstrap: fix wget command for po files. diff --git a/m4/ceil.m4 b/m4/ceil.m4 index 592b3f2ee8..87199ed110 100644 --- a/m4/ceil.m4 +++ b/m4/ceil.m4 @@ -1,4 +1,4 @@ -# ceil.m4 serial 11 +# ceil.m4 serial 12 dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -81,8 +81,9 @@ AC_DEFUN([gl_FUNC_CEIL_LIBS], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + double (*funcptr) (double) = ceil; double x;]], - [[x = ceil(x);]])], + [[x = funcptr(x) + ceil(x);]])], [gl_cv_func_ceil_libm=]) if test "$gl_cv_func_ceil_libm" = "?"; then save_LIBS="$LIBS" @@ -93,8 +94,9 @@ AC_DEFUN([gl_FUNC_CEIL_LIBS], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + double (*funcptr) (double) = ceil; double x;]], - [[x = ceil(x);]])], + [[x = funcptr(x) + ceil(x);]])], [gl_cv_func_ceil_libm="-lm"]) LIBS="$save_LIBS" fi diff --git a/m4/floor.m4 b/m4/floor.m4 index 15fa84d2b1..bef45a1e0d 100644 --- a/m4/floor.m4 +++ b/m4/floor.m4 @@ -1,4 +1,4 @@ -# floor.m4 serial 10 +# floor.m4 serial 11 dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -77,8 +77,9 @@ AC_DEFUN([gl_FUNC_FLOOR_LIBS], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + double (*funcptr) (double) = floor; double x;]], - [[x = floor(x);]])], + [[x = funcptr(x) + floor(x);]])], [gl_cv_func_floor_libm=]) if test "$gl_cv_func_floor_libm" = "?"; then save_LIBS="$LIBS" @@ -89,8 +90,9 @@ AC_DEFUN([gl_FUNC_FLOOR_LIBS], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + double (*funcptr) (double) = floor; double x;]], - [[x = floor(x);]])], + [[x = funcptr(x) + floor(x);]])], [gl_cv_func_floor_libm="-lm"]) LIBS="$save_LIBS" fi diff --git a/m4/trunc.m4 b/m4/trunc.m4 index 7abb8ecb35..1ff8f19d61 100644 --- a/m4/trunc.m4 +++ b/m4/trunc.m4 @@ -1,4 +1,4 @@ -# trunc.m4 serial 11 +# trunc.m4 serial 12 dnl Copyright (C) 2007, 2010-2018 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -21,8 +21,9 @@ AC_DEFUN([gl_FUNC_TRUNC], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + double (*funcptr) (double) = trunc; double x;]], - [[x = trunc(x);]])], + [[x = funcptr(x) + trunc(x);]])], [TRUNC_LIBM=]) if test "$TRUNC_LIBM" = "?"; then save_LIBS="$LIBS" @@ -33,8 +34,9 @@ AC_DEFUN([gl_FUNC_TRUNC], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + double (*funcptr) (double) = trunc; double x;]], - [[x = trunc(x);]])], + [[x = funcptr(x) + trunc(x);]])], [TRUNC_LIBM="-lm"]) LIBS="$save_LIBS" fi diff --git a/m4/truncf.m4 b/m4/truncf.m4 index fb4c5699c4..fdd36ec62b 100644 --- a/m4/truncf.m4 +++ b/m4/truncf.m4 @@ -1,4 +1,4 @@ -# truncf.m4 serial 11 +# truncf.m4 serial 12 dnl Copyright (C) 2007, 2010-2018 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -21,8 +21,9 @@ AC_DEFUN([gl_FUNC_TRUNCF], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + float (*funcptr) (float) = truncf; float x;]], - [[x = truncf(x);]])], + [[x = funcptr(x) + truncf(x);]])], [TRUNCF_LIBM=]) if test "$TRUNCF_LIBM" = "?"; then save_LIBS="$LIBS" @@ -33,8 +34,9 @@ AC_DEFUN([gl_FUNC_TRUNCF], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + float (*funcptr) (float) = truncf; float x;]], - [[x = truncf(x);]])], + [[x = funcptr(x) + truncf(x);]])], [TRUNCF_LIBM="-lm"]) LIBS="$save_LIBS" fi diff --git a/m4/truncl.m4 b/m4/truncl.m4 index 39ed3c4ffa..14be186700 100644 --- a/m4/truncl.m4 +++ b/m4/truncl.m4 @@ -1,4 +1,4 @@ -# truncl.m4 serial 13 +# truncl.m4 serial 14 dnl Copyright (C) 2007-2008, 2010-2018 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -25,8 +25,9 @@ AC_DEFUN([gl_FUNC_TRUNCL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + long double (*funcptr) (long double) = truncl; long double x;]], - [[x = truncl(x);]])], + [[x = funcptr(x) + truncl(x);]])], [TRUNCL_LIBM=]) if test "$TRUNCL_LIBM" = "?"; then save_LIBS="$LIBS" @@ -37,8 +38,9 @@ AC_DEFUN([gl_FUNC_TRUNCL], # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include + long double (*funcptr) (long double) = truncl; long double x;]], - [[x = truncl(x);]])], + [[x = funcptr(x) + truncl(x);]])], [TRUNCL_LIBM="-lm"]) LIBS="$save_LIBS" fi -- 2.11.4.GIT