about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--math/Makefile3
-rw-r--r--math/test-fp-ilogb-constants.c40
-rw-r--r--sysdeps/sh/sh4/bits/mathdef.h2
4 files changed, 51 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3063bd06af..b6fc831959 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-11-23  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #20859]
+	* sysdeps/sh/sh4/bits/mathdef.h (FP_ILOGB0): Define to
+	(-0x7fffffff) instead of 0x80000001.
+	* math/test-fp-ilogb-constants.c: New file.
+	* math/Makefile (tests): Add test-fp-ilogb-constants.
+
 2016-11-23  Maciej W. Rozycki  <macro@imgtec.com>
 
 	* sysdeps/mips/mips32/crti.S (JALR_RELOC): New macro.
diff --git a/math/Makefile b/math/Makefile
index fe910ef6c0..e84f86ae2e 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -158,7 +158,8 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
 	test-fexcept test-fexcept-traps test-fesetexcept \
 	test-fesetexcept-traps test-fetestexceptflag test-femode \
 	test-femode-traps test-iszero-excess-precision \
-	test-iseqsig-excess-precision test-flt-eval-method $(tests-static)
+	test-iseqsig-excess-precision test-flt-eval-method \
+	test-fp-ilogb-constants $(tests-static)
 tests-static = test-fpucw-static test-fpucw-ieee-static \
 	       test-signgam-uchar-static test-signgam-uchar-init-static \
 	       test-signgam-uint-static test-signgam-uint-init-static \
diff --git a/math/test-fp-ilogb-constants.c b/math/test-fp-ilogb-constants.c
new file mode 100644
index 0000000000..eaa9cc1a02
--- /dev/null
+++ b/math/test-fp-ilogb-constants.c
@@ -0,0 +1,40 @@
+/* Test requirements on FP_ILOGB* constants.
+   Copyright (C) 2016 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <limits.h>
+#include <math.h>
+
+#if FP_ILOGB0 >= 0
+# error "FP_ILOGB0 is positive"
+#endif
+
+#if FP_ILOGB0 != INT_MIN && FP_ILOGB0 != -INT_MAX
+# error "FP_ILOGB0 must be INT_MIN or -INT_MAX"
+#endif
+
+#if FP_ILOGBNAN >= 0 && FP_ILOGBNAN != INT_MAX
+# error "FP_ILOGBNAN must be INT_MIN or INT_MAX"
+#endif
+
+#if FP_ILOGBNAN < 0 && FP_ILOGBNAN != INT_MIN
+# error "FP_ILOGBNAN must be INT_MIN or INT_MAX"
+#endif
+
+/* This is a compilation test.  */
+#define TEST_FUNCTION 0
+#include "../test-skeleton.c"
diff --git a/sysdeps/sh/sh4/bits/mathdef.h b/sysdeps/sh/sh4/bits/mathdef.h
index 90dbebb3fa..21ce094533 100644
--- a/sysdeps/sh/sh4/bits/mathdef.h
+++ b/sysdeps/sh/sh4/bits/mathdef.h
@@ -34,7 +34,7 @@ typedef float float_t;
 typedef double double_t;
 
 /* The values returned by `ilogb' for 0 and NaN respectively.  */
-# define FP_ILOGB0	0x80000001
+# define FP_ILOGB0	(-0x7fffffff)
 # define FP_ILOGBNAN	0x7fffffff
 
 #endif	/* ISO C99 */