This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix libstdc++-v3/include/math.h:66:1 2: error: 'constexpr bool std::isnan(double)' conflicts with a previous declaration


On 04/02/16 22:41 +0000, Jonathan Wakely wrote:
On 04/02/16 17:31 -0500, John David Anglin wrote:
On 2016-02-04 5:11 PM, Gerald Pfeifer wrote:
In file included from .././../gcc-6-20160131/gcc/genautomata.c:116:0:
/wrkdirs/usr/ports/lang/gcc6-devel/work/gcc-6-20160131/libstdc++-v3/include/c_compatibility/math.h:65:12:
error: 'constexpr bool std::isinf(double)' conflicts with a previous declaration
using std::isinf;
           ^~~~~

See
http://beefy2.nyi.freebsd.org/data/93amd64-default/408008/logs/gcc6-devel-6.0.0.s20160131.log for a full log.
The checks for obsolete isinf(double) and isnan(double) are not run on freebsd. Apparently, the checks in acinclude.m4 need to be run on freebsd as well. Maybe the checks should run almost
everywhere?

Yes, maybe. I didn't realise those functions were so widespread, but
if they are I'm amazed more people weren't yelling about
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48891

The problem wasn't introduced by my change but earlier by Jonathan. I added hpux to the list of systems with obsolete defines. The default is to assume there are no obsolete defines.

I think it should be harmless to run the checks on all systems. If
they don't have obsolete defines we'll detect that. If they do things
will start working.

This works on powerpc64-linux (with glibc 2.18 which does define those
functions) and x86_64-freebsd10.2 (which doesn't define them).

Can anyone else test this on an older FreeBSD or other target that
isn't gnu/aix/hpux?

commit 8be7de1a900b22622b7f4ef3534572dfb1f52892
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Feb 4 23:54:47 2016 +0000

    Enable isinf/isnan checks for all targets
    
    	* acinclude.m4 (GLIBCXX_CHECK_MATH11_PROTO): Enable checks for
    	obsolete isinf and isnan for all targets except *-*-solaris2.*.
    	* configure: Regenerate.

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 057b58e..bdcb264 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -2215,7 +2215,7 @@ AC_DEFUN([GLIBCXX_CHECK_MATH11_PROTO], [
       fi
       AC_MSG_RESULT([$glibcxx_cv_math11_overload])
       ;;
-    *-*-*gnu* | *-*-aix* | *-*-hpux*)
+    *)
       # If <math.h> defines the obsolete isinf(double) and isnan(double)
       # functions (instead of or as well as the C99 generic macros) then we
       # can't define std::isinf(double) and std::isnan(double) in <cmath>
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index a919a3e..c3f627f 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -18266,7 +18266,7 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_math11_overload" >&5
 $as_echo "$glibcxx_cv_math11_overload" >&6; }
       ;;
-    *-*-*gnu* | *-*-aix* | *-*-hpux*)
+    *)
       # If <math.h> defines the obsolete isinf(double) and isnan(double)
       # functions (instead of or as well as the C99 generic macros) then we
       # can't define std::isinf(double) and std::isnan(double) in <cmath>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]