Module Name:    src
Committed By:   sborrill
Date:           Sat Mar  6 22:02:41 UTC 2010

Modified Files:
        src/include [netbsd-5]: math.h

Log Message:
Pull up the following revisions(s) (requested by joerg in ticket #1315):
        include/math.h: revision 1.51

Address PR#36988: ISO C99 mandates that HUGE_VAL, HUGE_VALF, HUGE_VALL and
INFINITY are constant expressions.
Use the GCC builtins if possible to implement them.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.47.8.1 src/include/math.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/include/math.h
diff -u src/include/math.h:1.47 src/include/math.h:1.47.8.1
--- src/include/math.h:1.47	Fri Apr 25 21:20:57 2008
+++ src/include/math.h	Sat Mar  6 22:02:41 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: math.h,v 1.47 2008/04/25 21:20:57 christos Exp $	*/
+/*	$NetBSD: math.h,v 1.47.8.1 2010/03/06 22:02:41 sborrill Exp $	*/
 
 /*
  * ====================================================
@@ -59,8 +59,12 @@
  * ANSI/POSIX
  */
 /* 7.12#3 HUGE_VAL, HUGELF, HUGE_VALL */
+#if __GNUC_PREREQ__(3, 3)
+#define HUGE_VAL	__builtin_huge_val()
+#else
 extern const union __double_u __infinity;
 #define HUGE_VAL	__infinity.__val
+#endif
 
 /*
  * ISO C99
@@ -72,14 +76,21 @@
     ((_XOPEN_SOURCE  - 0) >= 600) || \
     defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE)
 /* 7.12#3 HUGE_VAL, HUGELF, HUGE_VALL */
+#if __GNUC_PREREQ__(3, 3)
+#define	HUGE_VALF	__builtin_huge_valf()
+#define	HUGE_VALL	__builtin_huge_vall()
+#else
 extern const union __float_u __infinityf;
 #define	HUGE_VALF	__infinityf.__val
 
 extern const union __long_double_u __infinityl;
 #define	HUGE_VALL	__infinityl.__val
+#endif
 
 /* 7.12#4 INFINITY */
-#ifdef __INFINITY
+#if __GNUC_PREREQ__(3, 3)
+#define	INFINITY	__builtin_inff()
+#elif defined(__INFINITY)
 #define	INFINITY	__INFINITY	/* float constant which overflows */
 #else
 #define	INFINITY	HUGE_VALF	/* positive infinity */

Reply via email to