File isinf-cxx11-conflict.patch of Package glibc

2016-02-24  Andreas Schwab  <schwab@suse.de>

	* math/test-math-isinff.cc (do_test): Only call isinfl and isnanl
	if !NO_LONG_DOUBLE.

2016-02-14  Jakub Jelinek  <jakub@redhat.com>
	    Jonathan Wakely  <jwakely@redhat.com>
	    Carlos O'Donell  <carlos@redhat.com>

	[BZ 19439]
	* math/Makefile (tests): Add test-math-isinff.
	(CFLAGS-test-math-isinff.cc): Use -std=gnu++11.
	* math/bits/mathcalls.h [__USE_MISC]: Use
	'|| __MATH_DECLARING_DOUBLE == 0' to relax definition of
	functions not in C++11 and which don't conflict e.g. isinff,
	isinfl etc.
	* math/test-math-isinff.cc: New file.

2016-01-11  Jonathan Wakely  <jwakely.gcc@gmail.com>
	    Adhemerval Zanella  <adhemerval.zanella@linaro.org>

	[BZ #19439]
	* math/bits/mathcalls.h
	[!__cplusplus || __cplusplus < 201103L] (isinf): Do not declare
	prototype.
	[!__cplusplus || __cplusplus < 201103L] (isnan): Likewise.

Index: glibc-2.22/math/Makefile
===================================================================
--- glibc-2.22.orig/math/Makefile
+++ glibc-2.22/math/Makefile
@@ -108,6 +108,7 @@ tests = test-matherr test-fenv atest-exp
 	test-tgmath-ret bug-nextafter bug-nexttoward bug-tgmath1 \
 	test-tgmath-int test-tgmath2 test-powl tst-CMPLX tst-CMPLX2 test-snan \
 	test-fenv-tls test-fenv-preserve test-fenv-return test-fenvinline \
+	test-math-isinff \
 	$(tests-static)
 tests-static = test-fpucw-static test-fpucw-ieee-static
 # We do the `long double' tests only if this data type is available and
@@ -184,6 +185,8 @@ CPPFLAGS-test-ildoubl.c = -U__LIBC_INTER
 			  $(libm-test-fast-math-cflags)
 
 
+CFLAGS-test-math-isinff.cc = -std=gnu++11
+
 # The -lieee module sets the _LIB_VERSION_ switch to IEEE mode
 # for error handling in the -lm functions.
 install-lib += libieee.a
Index: glibc-2.22/math/bits/mathcalls.h
===================================================================
--- glibc-2.22.orig/math/bits/mathcalls.h
+++ glibc-2.22/math/bits/mathcalls.h
@@ -196,9 +196,13 @@ __MATHDECL_1 (int,__finite,, (_Mdouble_
 _Mdouble_END_NAMESPACE
 
 #ifdef __USE_MISC
+# if (!defined __cplusplus \
+      || __cplusplus < 201103L /* isinf conflicts with C++11.  */ \
+      || __MATH_DECLARING_DOUBLE == 0) /* isinff or isinfl don't.  */
 /* Return 0 if VALUE is finite or NaN, +1 if it
    is +Infinity, -1 if it is -Infinity.  */
 __MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
+# endif
 
 /* Return nonzero if VALUE is finite and not NaN.  */
 __MATHDECL_1 (int,finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
@@ -230,8 +234,12 @@ __END_NAMESPACE_C99
 __MATHDECL_1 (int,__isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
 
 #if defined __USE_MISC || defined __USE_XOPEN
+# if (!defined __cplusplus \
+      || __cplusplus < 201103L /* isnan conflicts with C++11.  */ \
+      || __MATH_DECLARING_DOUBLE == 0) /* isnanf or isnanl don't.  */
 /* Return nonzero if VALUE is not a number.  */
 __MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
+# endif
 
 /* Bessel functions.  */
 __MATHCALL (j0,, (_Mdouble_));
Index: glibc-2.22/math/test-math-isinff.cc
===================================================================
--- /dev/null
+++ glibc-2.22/math/test-math-isinff.cc
@@ -0,0 +1,53 @@
+/* Test for bug 19439.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Marek Polacek <polacek@redhat.com>, 2012.
+
+   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/>.  */
+
+#define _GNU_SOURCE 1
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static int
+do_test (void)
+{
+  /* Verify that isinff, isinfl, isnanf, and isnanlf are defined
+     in the header under C++11 and can be called.  Without the
+     header fix this test will not compile.  */
+  if (isinff (1.0f)
+      || !isinff (INFINITY)
+#ifndef NO_LONG_DOUBLE
+      || isinfl (1.0L)
+      || !isinfl (INFINITY)
+#endif
+      || isnanf (2.0f)
+      || !isnanf (NAN)
+#ifndef NO_LONG_DOUBLE
+      || isnanl (2.0L)
+      || !isnanl (NAN)
+#endif
+      )
+    {
+      printf ("FAIL: Failed to call is* functions.\n");
+      exit (1);
+    }
+  printf ("PASS: Able to call isinff, isinfl, isnanf, and isnanl.\n");
+  exit (0);
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
openSUSE Build Service is sponsored by