catrig[fl].c and inexact

Steve Kargl sgk at troutmask.apl.washington.edu
Sat May 13 17:12:13 UTC 2017


On Sat, May 13, 2017 at 06:55:27PM +0200, Dimitry Andric wrote:
> On 13 May 2017, at 18:21, Steve Kargl <sgk at troutmask.apl.washington.edu> wrote:
> > 
> > On Sat, May 13, 2017 at 03:08:26PM +0200, Dimitry Andric wrote:
> ...
> > 
> >> Using the full catrig.c and -O3, I tried gcc 4.2.1, 4.7.4, 4.8.5, 4.9.4,
> >> 5.4.0, 6.3.0 and 7.0.1, in addition to clang 3.4.1, 3.8.0, 3.9.1, 4.0.0
> >> and 5.0.0.
> > 
> > Thanks for checking.  I reduced catrig.c to a small self-contained
> > program and indeed I was getting the desired addition of 1 + tiny
> > to raise FE_INEXACT.  I suppose that I'll need to add an appropriate
> > -Wno-foo to my CFLAGS line to suppress the spurious warning, which
> > might be tricky because -Wunused is one option I'ld like to have.
> 
> The following also gets rid of the warnings:
> 
> Index: lib/msun/src/catrig.c
> ===================================================================
> --- lib/msun/src/catrig.c	(revision 318032)
> +++ lib/msun/src/catrig.c	(working copy)
> @@ -37,7 +37,7 @@
>  #define isinf(x)	(fabs(x) == INFINITY)
>  #undef isnan
>  #define isnan(x)	((x) != (x))
> -#define	raise_inexact()	do { volatile float junk = 1 + tiny; } while(0)
> +#define	raise_inexact()	do { volatile float junk __unused = 1 + tiny; } while(0)
>  #undef signbit
>  #define signbit(x)	(__builtin_signbit(x))
> 
> Index: lib/msun/src/catrigf.c
> ===================================================================
> --- lib/msun/src/catrigf.c	(revision 318032)
> +++ lib/msun/src/catrigf.c	(working copy)
> @@ -51,7 +51,7 @@
>  #define isinf(x)	(fabsf(x) == INFINITY)
>  #undef isnan
>  #define isnan(x)	((x) != (x))
> -#define	raise_inexact()	do { volatile float junk = 1 + tiny; } while(0)
> +#define	raise_inexact()	do { volatile float junk __unused = 1 + tiny; } while(0)
>  #undef signbit
>  #define signbit(x)	(__builtin_signbitf(x))
> 
> Index: lib/msun/src/catrigl.c
> ===================================================================
> --- lib/msun/src/catrigl.c	(revision 318032)
> +++ lib/msun/src/catrigl.c	(working copy)
> @@ -53,7 +53,7 @@
>  #define isinf(x)	(fabsl(x) == INFINITY)
>  #undef isnan
>  #define isnan(x)	((x) != (x))
> -#define	raise_inexact()	do { volatile float junk = 1 + tiny; } while(0)
> +#define	raise_inexact()	do { volatile float junk __unused = 1 + tiny; } while(0)
>  #undef signbit
>  #define signbit(x)	(__builtin_signbitl(x))
> 
> If you are OK with that, I will commit it later today.
> 

I'm OK with this change, but I typically defer to Bruce 
as he knows much more about C and floating point.

-- 
Steve
20170425 https://www.youtube.com/watch?v=VWUpyCsUKR4
20161221 https://www.youtube.com/watch?v=IbCHE-hONow


More information about the freebsd-numerics mailing list