diff options
| -rw-r--r-- | libc/sysdeps/linux/bfin/bits/huge_val.h | 67 | 
1 files changed, 10 insertions, 57 deletions
diff --git a/libc/sysdeps/linux/bfin/bits/huge_val.h b/libc/sysdeps/linux/bfin/bits/huge_val.h index f5f5b642a..9c8b72159 100644 --- a/libc/sysdeps/linux/bfin/bits/huge_val.h +++ b/libc/sysdeps/linux/bfin/bits/huge_val.h @@ -1,6 +1,8 @@ -/* `HUGE_VAL' constants for blackfin (where it is infinity). +/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).     Used by <stdlib.h> and <math.h> functions for overflow. -   Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. +   Blackfin version. +   Copyright (C) 1992, 95, 96, 97, 98, 99, 2000, 2004 +   Free Software Foundation, Inc.     This file is part of the GNU C Library.     The GNU C Library is free software; you can redistribute it and/or @@ -22,25 +24,19 @@  # error "Never use <bits/huge_val.h> directly; include <math.h> instead."  #endif -#include <features.h> -  /* IEEE positive infinity (-HUGE_VAL is negative infinity).  */ -#ifdef	__GNUC__ - -# if __GNUC_PREREQ(2,96) - -#  define HUGE_VAL (__extension__ 0x1.0p2047) +#if __GNUC_PREREQ(3,3) +# define HUGE_VAL  (__builtin_huge_val()) +#elif __GNUC_PREREQ(2,96) +# define HUGE_VAL (__extension__ 0x1.0p2047) +#elif defined __GNUC__ -# else - -#  define HUGE_VAL \ +# define HUGE_VAL \    (__extension__							      \     ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; })   \      { __l: 0x000000007ff00000ULL }).__d) -# endif -  #else /* not GCC */  # include <endian.h> @@ -58,46 +54,3 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes };  # define HUGE_VAL	(__huge_val.__d)  #endif	/* GCC.  */ - - -/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL.  */ - -#ifdef __USE_ISOC99 - -# ifdef __GNUC__ - -#  if __GNUC_PREREQ(2,96) - -#   define HUGE_VALF (__extension__ 0x1.0p255f) - -#  else - -#   define HUGE_VALF \ -  (__extension__							      \ -   ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; })    \ -    { __l: 0x7f800000UL }).__d) - -#  endif - -# else /* not GCC */ - -typedef union { unsigned char __c[4]; float __f; } __huge_valf_t; - -#  if __BYTE_ORDER == __BIG_ENDIAN -#   define __HUGE_VALF_bytes	{ 0x7f, 0x80, 0, 0 } -#  endif -#  if __BYTE_ORDER == __LITTLE_ENDIAN -#   define __HUGE_VALF_bytes	{ 0, 0, 0x80, 0x7f } -#  endif - -static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes }; -#  define HUGE_VALF	(__huge_valf.__f) - -# endif	/* GCC.  */ - - -/* Generally there is no separate `long double' format and it is the -   same as `double'.  */ -# define HUGE_VALL HUGE_VAL - -#endif /* __USE_ISOC99.  */  | 
