This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [critical libstdc++ regression]: Duplicate definitions with -On, n > 1
- To: Gabriel Dos Reis <gdr at codesourcery dot com>
- Subject: Re: [critical libstdc++ regression]: Duplicate definitions with -On, n > 1
- From: Gabriel Dos Reis <gdr at codesourcery dot com>
- Date: 24 May 2001 20:42:14 +0200
- Cc: gcc-patches at gcc dot gnu dot org, Andreas Jaeger <aj at suse dot de>, Kurt Garloff <garloff at suse dot de>, Jan van Dijk <jan at etpmod dot phys dot tue dot nl>, bkoz at redhat dot com, drepper at redhat dot com
- Organization: CodeSourcery, LLC
- References: <m3vgmqbvy2.fsf@merlin.codesourcery.com>
Gabriel Dos Reis <gdr@codesourcery.com> writes:
| Both GCC-3.0 and GCC-3.1 fail to translate the program below when
Fixed with this.
-- Gaby
2001-05-24 Gabriel Dos Reis <gdr@codesourcery.com>
* include/bits/c++config (__NO_MATH_INLINES): New macro.
* testsuite/26_numerics/fabs_inline.cc (main): New test.
Index: libstdc++-v3/include/bits/c++config
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/c++config,v
retrieving revision 1.8.6.3
diff -p -r1.8.6.3 c++config
*** c++config 2001/05/18 07:29:32 1.8.6.3
--- c++config 2001/05/24 18:33:12
***************
*** 33,38 ****
--- 33,43 ----
// Pick up any OS-specific definitions.
#include <bits/os_defines.h>
+ // Tell Glibc not to try to provide its own inline versions of
+ // some math functions. Those cause assembly-time clashes with
+ // our definitions.
+ #define __NO_MATH_INLINES
+
// The current version of the C++ library in compressed ISO date format.
#define __GLIBCPP__ 20010517
Index: libstdc++-v3/testsuite/26_numerics/fabs_inline.cc
===================================================================
RCS file: fabs_inline.cc
diff -N fabs_inline.cc
*** /dev/null Tue May 5 13:32:27 1998
--- fabs_inline.cc Thu May 24 11:33:12 2001
***************
*** 0 ****
--- 1,37 ----
+ // Copyright (C) 1999 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.
+
+ // Test to see whether the host provides its own (inline) view of fabs.
+ // Origin: Kurt Garloff <kurt@garloff.de>, 2001-05-24
+ // dg-do link
+
+ #include <cmath>
+ #include <cstdio>
+
+ typedef double (*realfn) (double);
+
+ using std::fabs;
+
+ int main ()
+ {
+ double a = fabs (-2.4);
+ realfn myfn = fabs;
+ double b = myfn (-2.5);
+ printf ("%f, %f, %p\n", a, b, myfn);
+ return 0;
+ }