Commit 6a9573cc by Marc Glisse Committed by Marc Glisse

re PR libstdc++/54112 (including complex.h and complex fails in C++03)

2012-08-13  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/54112
	* include/c_compatibility/complex.h: Undefine complex, always
	include system's complex.h if present.
	* testsuite/26_numerics/complex/c99.cc: New testcase.
	* testsuite/17_intro/headers/c++1998/complex.cc: Likewise.
	* doc/xml/manual/numerics.xml: Document it.

From-SVN: r190340
parent 61f7b9ae
2012-08-13 Marc Glisse <marc.glisse@inria.fr>
PR libstdc++/54112
* include/c_compatibility/complex.h: Undefine complex, always
include system's complex.h if present.
* testsuite/26_numerics/complex/c99.cc: New testcase.
* testsuite/17_intro/headers/c++1998/complex.cc: Likewise.
* doc/xml/manual/numerics.xml: Document it.
2012-08-12 Jonathan Wakely <jwakely.gcc@gmail.com> 2012-08-12 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/52681 PR libstdc++/52681
......
...@@ -44,6 +44,11 @@ ...@@ -44,6 +44,11 @@
prints <code>(u,v)</code> and <code>op&gt;&gt;</code> can read <code>u</code>, prints <code>(u,v)</code> and <code>op&gt;&gt;</code> can read <code>u</code>,
<code>(u)</code>, and <code>(u,v)</code>. <code>(u)</code>, and <code>(u,v)</code>.
</para> </para>
<para>As an extension to C++11 and for increased compatibility with C,
<code>&lt;complex.h&gt;</code> includes both <code>&lt;complex&gt;</code>
and the C99 <code>&lt;complex.h&gt;</code> (if the C library provides
it).
</para>
</section> </section>
</section> </section>
......
...@@ -30,10 +30,11 @@ ...@@ -30,10 +30,11 @@
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
# include <ccomplex> # include <ccomplex>
#else #endif
# if _GLIBCXX_HAVE_COMPLEX_H
# include_next <complex.h> #if _GLIBCXX_HAVE_COMPLEX_H
# endif # include_next <complex.h>
# undef complex
#endif #endif
#ifndef _GLIBCXX_COMPLEX_H #ifndef _GLIBCXX_COMPLEX_H
......
// { dg-do compile }
// Copyright (C) 2012 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 3, 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 COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// libstdc++/54112
#include <bits/c++config.h>
#if _GLIBCXX_HAVE_COMPLEX_H
# include <complex.h>
#endif
#include <tr1/complex>
std::complex<double> x;
// { dg-do compile }
// { dg-options "-std=gnu++11" }
// Copyright (C) 2012 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 3, 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 COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// libstdc++/54112
#include <bits/c++config.h>
#if _GLIBCXX_HAVE_COMPLEX_H
# include <complex.h>
#endif
int main()
{
bool test __attribute__((unused)) = true;
#if _GLIBCXX_HAVE_COMPLEX_H
double _Complex x = .5;
double _Complex y = cacos (x);
(void)y;
#endif
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment