aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@codesourcery.com>2001-04-06 19:14:27 +0000
committerGabriel Dos Reis <gdr@gcc.gnu.org>2001-04-06 19:14:27 +0000
commite521873c0e022770022b5ecf531e1ceb79a8f708 (patch)
tree39f0bff0a063a16d6328a164304df8c158fb79a9
parent6d32e2c9a51e42e77d470a3f653c133d417e45a1 (diff)
downloadgcc-e521873c0e022770022b5ecf531e1ceb79a8f708.zip
gcc-e521873c0e022770022b5ecf531e1ceb79a8f708.tar.gz
gcc-e521873c0e022770022b5ecf531e1ceb79a8f708.tar.bz2
std_cmath.h: Get rid of C99 math macros.
* include/c_std/bits/std_cmath.h: Get rid of C99 math macros. * testsuite/26_numerics/c99_macros.cc: Add test. From-SVN: r41159
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/c_std/bits/std_cmath.h18
-rw-r--r--libstdc++-v3/testsuite/26_numerics/c99_macros.cc61
3 files changed, 84 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 3322bde..56078fd 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2001-04-06 Gabriel Dos Reis <gdr@codesourcery.com>
+
+ * include/c_std/bits/std_cmath.h: Get rid of C99 math macros.
+ * testsuite/26_numerics/c99_macros.cc: Add test.
+
2001-04-06 Phil Edwards <pme@sources.redhat.com>
* docs/html/faq/index.html: Update for 2.92, grab from RELEASE-NOTES.
diff --git a/libstdc++-v3/include/c_std/bits/std_cmath.h b/libstdc++-v3/include/c_std/bits/std_cmath.h
index acddb33..db3e47f 100644
--- a/libstdc++-v3/include/c_std/bits/std_cmath.h
+++ b/libstdc++-v3/include/c_std/bits/std_cmath.h
@@ -67,6 +67,24 @@
#undef tan
#undef tanh
+// These are possible macros imported from C99-land. They tend to break
+// well-formed C++ programs. Just pretend we don't know about them.
+// At some point, we should provide extensions in std:: -- Gaby
+
+#undef fpclassify
+#undef isfinite
+#undef isinf
+#undef isnan
+#undef isnormal
+#undef signbit
+
+#undef isgreater
+#undef isgreaterequal
+#undef isless
+#undef islessequal
+#undef islessgreater
+#undef isunordered
+
namespace std
{
// Forward declaration of a helper function. This really should be
diff --git a/libstdc++-v3/testsuite/26_numerics/c99_macros.cc b/libstdc++-v3/testsuite/26_numerics/c99_macros.cc
new file mode 100644
index 0000000..6a8a3ea
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/c99_macros.cc
@@ -0,0 +1,61 @@
+// 2001-04-06 gdr
+
+// Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This 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 General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+// { dg-do compile }
+
+#include <math.h>
+
+void fpclassify() { }
+
+void isfinite() { }
+
+void isinf() { }
+
+void isnan() { }
+
+void isnormal() { }
+
+void signbit() { }
+
+void isgreater() { }
+
+void isgreaterequal() { }
+
+void isless() { }
+
+void islessequal() { }
+
+void islessgreater() { }
+
+void isunordered() { }
+
+int main()
+{
+ return 0;
+}