From b9778b336ca9f97b19db1c0ca69a077e97576b4d Mon Sep 17 00:00:00 2001 From: redi Date: Wed, 2 Nov 2011 00:53:12 +0000 Subject: * include/std/future (promise): Add constructors for uses-allocator construction from rvalue promise. (packaged_task): Implement LWG 2067. Add additional constructors for uses-allocator construction. * testsuite/30_threads/packaged_task/cons/3.cc: New. * testsuite/30_threads/packaged_task/cons/alloc2.cc: New. * testsuite/30_threads/promise/cons/alloc2.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180757 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 10 ++++ libstdc++-v3/include/std/future | 53 ++++++++++++++++++-- .../testsuite/30_threads/packaged_task/cons/3.cc | 56 ++++++++++++++++++++++ .../30_threads/packaged_task/cons/alloc2.cc | 40 ++++++++++++++++ .../testsuite/30_threads/promise/cons/alloc2.cc | 42 ++++++++++++++++ 5 files changed, 197 insertions(+), 4 deletions(-) create mode 100644 libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc create mode 100644 libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc create mode 100644 libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ddc30f80aba..0e21cc7cc62 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2011-11-02 Jonathan Wakely + + * include/std/future (promise): Add constructors for uses-allocator + construction from rvalue promise. + (packaged_task): Implement LWG 2067. Add additional constructors for + uses-allocator construction. + * testsuite/30_threads/packaged_task/cons/3.cc: New. + * testsuite/30_threads/packaged_task/cons/alloc2.cc: New. + * testsuite/30_threads/promise/cons/alloc2.cc: New. + 2011-10-31 Jason Merrill * include/Makefile.am (install-freestanding-headers): Install diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future index 497b964833f..cc8779b40b3 100644 --- a/libstdc++-v3/include/std/future +++ b/libstdc++-v3/include/std/future @@ -955,6 +955,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_storage(__future_base::_S_allocate_result<_Res>(__a)) { } + template + promise(allocator_arg_t, const _Allocator&, promise&& __rhs) + : _M_future(std::move(__rhs._M_future)), + _M_storage(std::move(__rhs._M_storage)) + { } + promise(const promise&) = delete; ~promise() @@ -1047,6 +1053,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_storage(__future_base::_S_allocate_result<_Res&>(__a)) { } + template + promise(allocator_arg_t, const _Allocator&, promise&& __rhs) + : _M_future(std::move(__rhs._M_future)), + _M_storage(std::move(__rhs._M_storage)) + { } + promise(const promise&) = delete; ~promise() @@ -1122,6 +1134,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_storage(__future_base::_S_allocate_result(__a)) { } + template + promise(allocator_arg_t, const _Allocator&, promise&& __rhs) + : _M_future(std::move(__rhs._M_future)), + _M_storage(std::move(__rhs._M_storage)) + { } + promise(const promise&) = delete; ~promise() @@ -1270,6 +1288,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return std::forward<_Tp>(__t); } }; + template::type>::value> + struct __is_same_pkgdtask + { typedef void __type; }; + + template + struct __is_same_pkgdtask<_Task, _Fn, true> + { }; + /// packaged_task template class packaged_task<_Res(_ArgTypes...)> @@ -1281,13 +1308,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Construction and destruction packaged_task() noexcept { } - template + template + explicit + packaged_task(allocator_arg_t, const _Allocator& __a) noexcept + { } + + template::__type> explicit packaged_task(_Fn&& __fn) : _M_state(std::make_shared<_State_type>(std::forward<_Fn>(__fn))) { } - template + template::__type> explicit packaged_task(allocator_arg_t, const _Allocator& __a, _Fn&& __fn) : _M_state(std::allocate_shared<_State_type>(__a, @@ -1301,13 +1335,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } // No copy - packaged_task(packaged_task&) = delete; - packaged_task& operator=(packaged_task&) = delete; + packaged_task(const packaged_task&) = delete; + packaged_task& operator=(const packaged_task&) = delete; + + template + explicit + packaged_task(allocator_arg_t, const _Allocator&, + const packaged_task&) = delete; // Move support packaged_task(packaged_task&& __other) noexcept { this->swap(__other); } + template + explicit + packaged_task(allocator_arg_t, const _Allocator&, + packaged_task&& __other) noexcept + { this->swap(__other); } + packaged_task& operator=(packaged_task&& __other) noexcept { packaged_task(std::move(__other)).swap(*this); diff --git a/libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc b/libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc new file mode 100644 index 00000000000..24ca72085fc --- /dev/null +++ b/libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc @@ -0,0 +1,56 @@ +// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* mips-sgi-irix6* } } +// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* mips-sgi-irix6* } } +// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } +// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } +// { dg-require-cstdint "" } +// { dg-require-gthreads "" } +// { dg-require-atomic-builtins "" } + +// Copyright (C) 2011 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 +// . + +// LWG 2067. packaged_task should have deleted copy c'tor with const parameter + +#include +#include +#include + +template +std::future::type> spawn_task(F f) +{ + typedef typename std::result_of::type result_type; + std::packaged_task task(std::move(f)); + std::future res(task.get_future()); + std::thread(std::move(task)).detach(); + return res; +} + +int get_res() +{ + return 42; +} + +void test01() +{ + auto f = spawn_task(get_res); + VERIFY( f.get() == get_res() ); +} + +int main() +{ + test01(); +} diff --git a/libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc b/libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc new file mode 100644 index 00000000000..40d30705a63 --- /dev/null +++ b/libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc @@ -0,0 +1,40 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } +// { dg-require-cstdint "" } +// { dg-require-gthreads "" } +// { dg-require-atomic-builtins "" } + +// Copyright (C) 2011 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 +// . + +// Test that packaged_task can be default-constructed or move-constructed +// in a context that does uses-allocator construction. + +#include +#include +#include + +using std::packaged_task; +using std::allocator_arg; +using std::allocator; +using std::tuple; + +typedef packaged_task task; +allocator a; + +tuple t1{ allocator_arg, a }; +tuple t2{ allocator_arg, a, task{} }; diff --git a/libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc b/libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc new file mode 100644 index 00000000000..a22fd203438 --- /dev/null +++ b/libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc @@ -0,0 +1,42 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } +// { dg-require-cstdint "" } +// { dg-require-gthreads "" } +// { dg-require-atomic-builtins "" } + +// Copyright (C) 2011 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 +// . + +// Test that promise can be default-constructed or move-constructed +// in a context that does uses-allocator construction. + +#include +#include +#include + +using std::promise; +using std::allocator_arg; +using std::allocator; +using std::tuple; + +typedef promise p; +typedef promise pr; +typedef promise pv; +allocator

a; + +tuple t1{ allocator_arg, a }; +tuple t2{ allocator_arg, a, p{}, pr{}, pv{} }; -- cgit v1.2.1 From cae32d03b2e0fee5c8872d652d54b985cad5137a Mon Sep 17 00:00:00 2001 From: bkoz Date: Wed, 2 Nov 2011 04:23:33 +0000 Subject: 2011-11-02 Benjamin Kosnik * include/bits/c++config: Add tr2 to versioned namespaces. * scripts/run_doxygen: Adjust generated man files as well. * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180760 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 8 +++++++- libstdc++-v3/include/bits/c++config | 5 +++++ libstdc++-v3/scripts/run_doxygen | 4 ++++ libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0e21cc7cc62..9f6c755cd6a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2011-11-02 Benjamin Kosnik + + * include/bits/c++config: Add tr2 to versioned namespaces. + * scripts/run_doxygen: Adjust generated man files as well. + * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers. + 2011-11-02 Jonathan Wakely * include/std/future (promise): Add constructors for uses-allocator @@ -18,7 +24,7 @@ * acinclude.m4 (GLIBCXX_CONFIGURE): Refer to GNU/Linux. * configure: Regenerate. - + 2011-10-31 Jason Merrill PR c++/50920 diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index f77da5ee1a7..e76e7423021 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -148,6 +148,8 @@ namespace __detail { } } + namespace tr2 { } + namespace decimal { } namespace chrono { } @@ -197,6 +199,9 @@ namespace std namespace __detail { inline namespace __7 { } } } + namespace tr2 + { inline namespace __7 { } } + namespace decimal { inline namespace __7 { } } namespace chrono { inline namespace __7 { } } diff --git a/libstdc++-v3/scripts/run_doxygen b/libstdc++-v3/scripts/run_doxygen index 48b17249737..3fef95f83fb 100644 --- a/libstdc++-v3/scripts/run_doxygen +++ b/libstdc++-v3/scripts/run_doxygen @@ -339,6 +339,10 @@ for f in std_tr1_*; do newname=`echo $f | sed 's/^std_tr1_/std::tr1::/'` mv $f $newname done +for f in std_tr2_*; do + newname=`echo $f | sed 's/^std_tr2_/std::tr2::/'` + mv $f $newname +done for f in std_*; do newname=`echo $f | sed 's/^std_/std::/'` mv $f $newname diff --git a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc index 4e2d071b833..c6e6feac6c0 100644 --- a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc +++ b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc @@ -25,4 +25,4 @@ #include -// { dg-error "multiple inlined namespaces" "" { target *-*-* } 258 } +// { dg-error "multiple inlined namespaces" "" { target *-*-* } 263 } -- cgit v1.2.1 From 2350caacdc2ca207092ee12f7c605ae9dc192763 Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 2 Nov 2011 10:06:08 +0000 Subject: 2011-11-02 Paolo Carlini PR libstdc++/50951 * include/bits/random.tcc (operator<<(basic_ostream<>&, const mersenne_twister_engine<>&): Output _M_p too. (operator<<(basic_ostream<>&, const subtract_with_carry_engine<>&): Likewise. (operator>>(basic_istream<>&, mersenne_twister_engine<>&): Reload it. (operator>>(basic_istream<>&, subtract_with_carry_engine<>&): Likewise. * include/bits/random.h (mersenne_twister_engine<>::operator==): Compare _M_p too. (subtract_with_carry_engine<>::operator==): Compare _M_carry and _M_p too. (shuffle_order_engine<>::operator==): Compare _M_v(s) and _M_y too. * testsuite/26_numerics/random/independent_bits_engine/ operators/serialize.cc: Extend. * testsuite/26_numerics/random/subtract_with_carry_engine/ operators/serialize.cc: Likewise. * testsuite/26_numerics/random/discard_block_engine/ operators/serialize.cc: Likewise. * testsuite/26_numerics/random/mersenne_twister_engine/ operators/serialize.cc: Likewise. * testsuite/26_numerics/random/linear_congruential_engine/ operators/serialize.cc: Likewise. * testsuite/26_numerics/random/shuffle_order_engine/ operators/serialize.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180764 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 29 +++++++++++++++++++++ libstdc++-v3/include/bits/random.h | 11 +++++--- libstdc++-v3/include/bits/random.tcc | 8 +++--- .../discard_block_engine/operators/serialize.cc | 16 +++++++++++- .../independent_bits_engine/operators/serialize.cc | 16 +++++++++++- .../operators/serialize.cc | 30 ++++++++++++++++------ .../mersenne_twister_engine/operators/serialize.cc | 16 +++++++++++- .../shuffle_order_engine/operators/serialize.cc | 16 +++++++++++- .../operators/serialize.cc | 16 +++++++++++- 9 files changed, 139 insertions(+), 19 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9f6c755cd6a..82a0b911412 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,32 @@ +2011-11-02 Paolo Carlini + + PR libstdc++/50951 + * include/bits/random.tcc (operator<<(basic_ostream<>&, + const mersenne_twister_engine<>&): Output _M_p too. + (operator<<(basic_ostream<>&, const + subtract_with_carry_engine<>&): Likewise. + (operator>>(basic_istream<>&, mersenne_twister_engine<>&): + Reload it. + (operator>>(basic_istream<>&, subtract_with_carry_engine<>&): + Likewise. + * include/bits/random.h (mersenne_twister_engine<>::operator==): + Compare _M_p too. + (subtract_with_carry_engine<>::operator==): Compare _M_carry + and _M_p too. + (shuffle_order_engine<>::operator==): Compare _M_v(s) and _M_y too. + * testsuite/26_numerics/random/independent_bits_engine/ + operators/serialize.cc: Extend. + * testsuite/26_numerics/random/subtract_with_carry_engine/ + operators/serialize.cc: Likewise. + * testsuite/26_numerics/random/discard_block_engine/ + operators/serialize.cc: Likewise. + * testsuite/26_numerics/random/mersenne_twister_engine/ + operators/serialize.cc: Likewise. + * testsuite/26_numerics/random/linear_congruential_engine/ + operators/serialize.cc: Likewise. + * testsuite/26_numerics/random/shuffle_order_engine/ + operators/serialize.cc: Likewise. + 2011-11-02 Benjamin Kosnik * include/bits/c++config: Add tr2 to versioned namespaces. diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h index 7c66d633863..d109224d1bf 100644 --- a/libstdc++-v3/include/bits/random.h +++ b/libstdc++-v3/include/bits/random.h @@ -491,7 +491,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION friend bool operator==(const mersenne_twister_engine& __lhs, const mersenne_twister_engine& __rhs) - { return std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x); } + { return (std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x) + && __lhs._M_p == __rhs._M_p); } /** * @brief Inserts the current state of a % mersenne_twister_engine @@ -705,7 +706,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION friend bool operator==(const subtract_with_carry_engine& __lhs, const subtract_with_carry_engine& __rhs) - { return std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x); } + { return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x) + && __lhs._M_carry == __rhs._M_carry + && __lhs._M_p == __rhs._M_p); } /** * @brief Inserts the current state of a % subtract_with_carry_engine @@ -1370,7 +1373,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION friend bool operator==(const shuffle_order_engine& __lhs, const shuffle_order_engine& __rhs) - { return __lhs._M_b == __rhs._M_b; } + { return (__lhs._M_b == __rhs._M_b + && std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v) + && __lhs._M_y == __rhs._M_y); } /** * @brief Inserts the current state of a %shuffle_order_engine random diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc index 0e74848ff3c..8936a62316a 100644 --- a/libstdc++-v3/include/bits/random.tcc +++ b/libstdc++-v3/include/bits/random.tcc @@ -471,9 +471,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); __os.fill(__space); - for (size_t __i = 0; __i < __n - 1; ++__i) + for (size_t __i = 0; __i < __n; ++__i) __os << __x._M_x[__i] << __space; - __os << __x._M_x[__n - 1]; + __os << __x._M_p; __os.flags(__flags); __os.fill(__fill); @@ -498,6 +498,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION for (size_t __i = 0; __i < __n; ++__i) __is >> __x._M_x[__i]; + __is >> __x._M_p; __is.flags(__flags); return __is; @@ -627,7 +628,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION for (size_t __i = 0; __i < __r; ++__i) __os << __x._M_x[__i] << __space; - __os << __x._M_carry; + __os << __x._M_carry << __space << __x._M_p; __os.flags(__flags); __os.fill(__fill); @@ -649,6 +650,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION for (size_t __i = 0; __i < __r; ++__i) __is >> __x._M_x[__i]; __is >> __x._M_carry; + __is >> __x._M_p; __is.flags(__flags); return __is; diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc index 7aec649c03b..4249d975a82 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc @@ -3,7 +3,7 @@ // // 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net> // -// Copyright (C) 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2008, 2009, 2010, 2011 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 @@ -46,6 +46,20 @@ test01() str >> v; VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); + + str.clear(); + str << v; + + u(); + u(); + u(); + + str >> u; + VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); } int main() diff --git a/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc b/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc index 332931addfa..32a5157608c 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc @@ -3,7 +3,7 @@ // // 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net> // -// Copyright (C) 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2008, 2009, 2010, 2011 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 @@ -44,6 +44,20 @@ test01() str >> v; VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); + + str.clear(); + str << v; + + u(); + u(); + u(); + + str >> u; + VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); } int main() diff --git a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc index 8b67e5f3a33..a83b22ef651 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc @@ -3,7 +3,7 @@ // // 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net> // -// Copyright (C) 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2008, 2009, 2010, 2011 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 @@ -33,15 +33,29 @@ test01() bool test __attribute__((unused)) = true; std::stringstream str; - std::minstd_rand0 a; - std::minstd_rand0 b; + std::minstd_rand0 u; + std::minstd_rand0 v; - a(); // advance - str << a; - VERIFY( !(a == b) ); + u(); // advance + str << u; + VERIFY( !(u == v) ); - str >> b; - VERIFY( a == b ); + str >> v; + VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); + + str.clear(); + str << v; + + u(); + u(); + u(); + + str >> u; + VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); } int main() diff --git a/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc b/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc index 03fb8b04fa1..7c90e3d390f 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc @@ -3,7 +3,7 @@ // // 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net> // -// Copyright (C) 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2008, 2009, 2010, 2011 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 @@ -47,6 +47,20 @@ test01() str >> v; VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); + + str.clear(); + str << v; + + u(); + u(); + u(); + + str >> u; + VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); } int main() diff --git a/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc b/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc index 578e4959371..c7b15d1ba15 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc @@ -3,7 +3,7 @@ // // 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net> // -// Copyright (C) 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2008, 2009, 2010, 2011 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 @@ -46,6 +46,20 @@ test01() str >> v; VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); + + str.clear(); + str << v; + + u(); + u(); + u(); + + str >> u; + VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); } int main() diff --git a/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc b/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc index e4129fc8df5..1e2e53ac593 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc @@ -3,7 +3,7 @@ // // 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net> // -// Copyright (C) 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2008, 2009, 2010, 2011 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 @@ -43,6 +43,20 @@ test01() str >> v; VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); + + str.clear(); + str << v; + + u(); + u(); + u(); + + str >> u; + VERIFY( u == v ); + for (unsigned i = 0; i < 1000; ++i) + VERIFY( u() == v() ); } int main() -- cgit v1.2.1 From 630d52ca0a88d173f89634a5d7dd8aee07d04d80 Mon Sep 17 00:00:00 2001 From: ro Date: Wed, 2 Nov 2011 15:28:43 +0000 Subject: Move gthr to toplevel libgcc gcc: * gthr-single.h, gthr.h: Move to ../libgcc. * gthr-aix.h: Move to ../libgcc/config/rs6000. * gthr-dce.h: Move to ../libgcc/config/pa. * gthr-lynx.h: Move to ../libgcc/config. * gthr-mipssde.h: Move to ../libgcc/config/mips. * gthr-posix.h: Move to ../libgcc/config. * gthr-rtems.h: Likewise. * gthr-tpf.h: Move to ../libgcc/config/s390. * gthr-vxworks.h: Move to ../libgcc/config. * gthr-win32.h: Move to ../libgcc/config/i386. * configure.ac (gthread_flags): Remove (gthr-default.h): Don't create. (thread_file): Don't substitute. * configure: Regenerate. * Makefile.in (GCC_THREAD_FILE): Remove. (GTHREAD_FLAGS): Remove. (libgcc.mvars): Remove GTHREAD_FLAGS. * config/t-vxworks (EXTRA_HEADERS): Remove. gcc/po: * EXCLUDES (gthr-aix.h, gthr-dce.h, gthr-posix.c, gthr-posix.h) (gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h) (gthr-win32.h, gthr.h): Remove. libgcc: * gthr-single.h, gthr.h: New files. * config/gthr-lynx.h, config/gthr-posix.h., config/gthr-rtems.h, config/gthr-vxworks.h, config/i386/gthr-win32.h, config/mips/gthr-mipssde.h, config/pa/gthr-dce.h, config/rs6000/gthr-aix.h, config/s390/gthr-tpf.h: New files. * config/i386/gthr-win32.c: Include "gthr-win32.h". * configure.ac (thread_header): New variable. Set it depending on target_thread_file. (gthr-default.h): Link from $thread_header. * configure: Regenerate. * Makefile.in (LIBGCC2_CFLAGS): Remove $(GTHREAD_FLAGS). libgfortran: * Makefile.am (AM_CPPFLAGS): Add -I$(srcdir)/$(MULTISRCTOP)../libgcc, -I$(MULTIBUILDTOP)../libgcc. * Makefile.in: Regenerate. * acinclude.m4 (LIBGFOR_CHECK_GTHR_DEFAULT): Remove. * configure.ac (LIBGFOR_CHECK_GTHR_DEFAULT): Likewise. * configure: Regenerate. * config.h.in: Regenerate. libobjc: * Makefile.in (INCLUDES): Add -I$(MULTIBUILDTOP)../libgcc. * configure.ac (target_thread_file, HAVE_GTHR_DEFAULT): Remove. * configure: Regenerate. * config.h.in: Regenerate. libstdc++-v3: * acinclude.m4 (GLIBCXX_CONFIGURE): Determine and substitute toplevel_builddir. (GLIBCXX_ENABLE_THREADS): Remove glibcxx_thread_h, HAVE_GTHR_DEFAULT, enable_thread. (GLIBCXX_CHECK_GTHREADS): Reflect gthr move to libgcc. * include/Makefile.am (thread_host_headers): Remove ${host_builddir}/gthr-tpf.h. (${host_builddir}/gthr.h): Reflect gthr move to libgcc. Use $<. (${host_builddir}/gthr-single.h): Likewise. (${host_builddir}/gthr-posix.h): Likewise. (${host_builddir}/gthr-tpf.h): Remove. (${host_builddir}/gthr-default.h): Likewise. * configure, config.h.in: Regenerate. * Makefile.in, doc/Makefile.in, include/Makefile.in, libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in, src/Makefile.intestsuite/Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180776 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 20 +++++++++++++++++ libstdc++-v3/Makefile.in | 2 +- libstdc++-v3/acinclude.m4 | 30 +++++--------------------- libstdc++-v3/config.h.in | 4 ---- libstdc++-v3/configure | 44 +++++++++++++------------------------- libstdc++-v3/doc/Makefile.in | 2 +- libstdc++-v3/include/Makefile.am | 25 +++++++--------------- libstdc++-v3/include/Makefile.in | 27 ++++++++--------------- libstdc++-v3/libsupc++/Makefile.in | 2 +- libstdc++-v3/po/Makefile.in | 2 +- libstdc++-v3/python/Makefile.in | 2 +- libstdc++-v3/src/Makefile.in | 2 +- libstdc++-v3/testsuite/Makefile.in | 2 +- 13 files changed, 64 insertions(+), 100 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 82a0b911412..7e00e2a382b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -27,6 +27,26 @@ * testsuite/26_numerics/random/shuffle_order_engine/ operators/serialize.cc: Likewise. +2011-11-02 Rainer Orth + + * acinclude.m4 (GLIBCXX_CONFIGURE): Determine and substitute + toplevel_builddir. + (GLIBCXX_ENABLE_THREADS): Remove glibcxx_thread_h, + HAVE_GTHR_DEFAULT, enable_thread. + (GLIBCXX_CHECK_GTHREADS): Reflect gthr move to libgcc. + * include/Makefile.am (thread_host_headers): Remove + ${host_builddir}/gthr-tpf.h. + (${host_builddir}/gthr.h): Reflect gthr move to libgcc. + Use $<. + (${host_builddir}/gthr-single.h): Likewise. + (${host_builddir}/gthr-posix.h): Likewise. + (${host_builddir}/gthr-tpf.h): Remove. + (${host_builddir}/gthr-default.h): Likewise. + * configure, config.h.in: Regenerate. + * Makefile.in, doc/Makefile.in, include/Makefile.in, + libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in, + src/Makefile.intestsuite/Makefile.in: Regenerate. + 2011-11-02 Benjamin Kosnik * include/bits/c++config: Add tr2 to versioned namespaces. diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in index 272c4eeea40..2284126ab06 100644 --- a/libstdc++-v3/Makefile.in +++ b/libstdc++-v3/Makefile.in @@ -239,7 +239,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -279,6 +278,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ # May be used by various substitution variables. diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 9382250d057..684a2958ce8 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -35,6 +35,7 @@ dnl SUBDIRS dnl Substs: dnl glibcxx_builddir (absolute path) dnl glibcxx_srcdir (absolute path) +dnl toplevel_builddir (absolute path) dnl toplevel_srcdir (absolute path) dnl with_cross_host dnl with_newlib @@ -59,9 +60,11 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [ [\\/$]* | ?:[\\/]*) glibcxx_srcdir=${srcdir} ;; *) glibcxx_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; esac + toplevel_builddir=${glibcxx_builddir}/.. toplevel_srcdir=${glibcxx_srcdir}/.. AC_SUBST(glibcxx_builddir) AC_SUBST(glibcxx_srcdir) + AC_SUBST(toplevel_builddir) AC_SUBST(toplevel_srcdir) # We use these options to decide which functions to include. They are @@ -3315,34 +3318,10 @@ dnl having to write complex code (the sed commands to clean the macro dnl namespace are complex and fragile enough as it is). We must also dnl add a relative path so that -I- is supported properly. dnl -dnl Substs: -dnl glibcxx_thread_h -dnl -dnl Defines: -dnl HAVE_GTHR_DEFAULT -dnl AC_DEFUN([GLIBCXX_ENABLE_THREADS], [ AC_MSG_CHECKING([for thread model used by GCC]) target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'` AC_MSG_RESULT([$target_thread_file]) - - if test $target_thread_file != single; then - AC_DEFINE(HAVE_GTHR_DEFAULT, 1, - [Define if gthr-default.h exists - (meaning that threading support is enabled).]) - fi - - glibcxx_thread_h=gthr-$target_thread_file.h - - dnl Check for __GTHREADS define. - gthread_file=${toplevel_srcdir}/gcc/${glibcxx_thread_h} - if grep __GTHREADS $gthread_file >/dev/null 2>&1 ; then - enable_thread=yes - else - enable_thread=no - fi - - AC_SUBST(glibcxx_thread_h) ]) @@ -3356,7 +3335,8 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -fno-exceptions -I${toplevel_srcdir}/gcc" + CXXFLAGS="$CXXFLAGS -fno-exceptions \ + -I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc" target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'` case $target_thread_file in diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index df7effb6a6b..f82d91ad417 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -171,10 +171,6 @@ /* Define if _Unwind_GetIPInfo is available. */ #undef HAVE_GETIPINFO -/* Define if gthr-default.h exists (meaning that threading support is - enabled). */ -#undef HAVE_GTHR_DEFAULT - /* Define to 1 if you have the `hypot' function. */ #undef HAVE_HYPOT diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 77a4abfbadf..428cdc5bd80 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -707,7 +707,6 @@ BASIC_FILE_H CSTDIO_H SECTION_FLAGS WERROR -glibcxx_thread_h glibcxx_PCHFLAGS GLIBCXX_BUILD_PCH_FALSE GLIBCXX_BUILD_PCH_TRUE @@ -741,6 +740,7 @@ AR AS LN_S toplevel_srcdir +toplevel_builddir glibcxx_srcdir glibcxx_builddir ac_ct_CXX @@ -4870,11 +4870,13 @@ $as_echo "$ac_cv_path_EGREP" >&6; } \\/$* | ?:\\/*) glibcxx_srcdir=${srcdir} ;; *) glibcxx_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; esac + toplevel_builddir=${glibcxx_builddir}/.. toplevel_srcdir=${glibcxx_srcdir}/.. + # We use these options to decide which functions to include. They are # set from the top level. @@ -11485,7 +11487,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11488 "configure" +#line 11490 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11591,7 +11593,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11594 "configure" +#line 11596 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14949,7 +14951,7 @@ fi # # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. cat > conftest.$ac_ext << EOF -#line 14952 "configure" +#line 14954 "configure" struct S { ~S(); }; void bar(); void foo() @@ -15077,23 +15079,6 @@ $as_echo_n "checking for thread model used by GCC... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $target_thread_file" >&5 $as_echo "$target_thread_file" >&6; } - if test $target_thread_file != single; then - -$as_echo "#define HAVE_GTHR_DEFAULT 1" >>confdefs.h - - fi - - glibcxx_thread_h=gthr-$target_thread_file.h - - gthread_file=${toplevel_srcdir}/gcc/${glibcxx_thread_h} - if grep __GTHREADS $gthread_file >/dev/null 2>&1 ; then - enable_thread=yes - else - enable_thread=no - fi - - - ac_ext=cpp @@ -15317,7 +15302,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; } # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF -#line 15320 "configure" +#line 15305 "configure" int main() { typedef bool atomic_type; @@ -15354,7 +15339,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15357 "configure" +#line 15342 "configure" int main() { typedef short atomic_type; @@ -15391,7 +15376,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15394 "configure" +#line 15379 "configure" int main() { // NB: _Atomic_word not necessarily int. @@ -15429,7 +15414,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15432 "configure" +#line 15417 "configure" int main() { typedef long long atomic_type; @@ -15505,7 +15490,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15508 "configure" +#line 15493 "configure" int main() { _Decimal32 d1; @@ -15547,7 +15532,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15550 "configure" +#line 15535 "configure" template struct same { typedef T2 type; }; @@ -15581,7 +15566,7 @@ $as_echo "$enable_int128" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15584 "configure" +#line 15569 "configure" template struct same { typedef T2 type; }; @@ -19821,7 +19806,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -fno-exceptions -I${toplevel_srcdir}/gcc" + CXXFLAGS="$CXXFLAGS -fno-exceptions \ + -I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc" target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'` case $target_thread_file in diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in index 43045671ccd..8c38839bff7 100644 --- a/libstdc++-v3/doc/Makefile.in +++ b/libstdc++-v3/doc/Makefile.in @@ -215,7 +215,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -263,6 +262,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ # May be used by various substitution variables. diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index 74acbf0c88a..c342528fe46 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -855,7 +855,6 @@ thread_host_headers = \ ${host_builddir}/gthr.h \ ${host_builddir}/gthr-single.h \ ${host_builddir}/gthr-posix.h \ - ${host_builddir}/gthr-tpf.h \ ${host_builddir}/gthr-default.h @@ -1122,43 +1121,35 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ # Host includes for threads uppercase = [ABCDEFGHIJKLMNOPQRSTUVWXYZ_] -${host_builddir}/gthr.h: ${toplevel_srcdir}/gcc/gthr.h stamp-${host_alias} +${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias} sed -e '/^#pragma/b' \ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's,^#include "\(.*\)",#include ,g' \ - < ${toplevel_srcdir}/gcc/gthr.h > $@ + < $< > $@ -${host_builddir}/gthr-single.h: ${toplevel_srcdir}/gcc/gthr-single.h \ +${host_builddir}/gthr-single.h: ${toplevel_srcdir}/libgcc/gthr-single.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ - < ${toplevel_srcdir}/gcc/gthr-single.h > $@ + < $< > $@ -${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/gcc/gthr-posix.h \ +${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/libgcc/config/gthr-posix.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ - < ${toplevel_srcdir}/gcc/gthr-posix.h > $@ + < $< > $@ -${host_builddir}/gthr-tpf.h: ${toplevel_srcdir}/gcc/gthr-tpf.h \ - stamp-${host_alias} - sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ - -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ - -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ - -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ - < ${toplevel_srcdir}/gcc/gthr-tpf.h > $@ - -${host_builddir}/gthr-default.h: ${toplevel_srcdir}/gcc/${glibcxx_thread_h} \ +${host_builddir}/gthr-default.h: ${toplevel_builddir}/libgcc/gthr-default.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ -e 's,^#include "\(.*\)",#include ,g' \ - < ${toplevel_srcdir}/gcc/${glibcxx_thread_h} > $@ + < $< > $@ # Build two precompiled C++ includes, stdc++.h.gch/*.gch ${pch1a_output}: ${allstamped} ${host_builddir}/c++config.h ${pch1_source} diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index 8b805ba9acb..40dfb99c689 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -213,7 +213,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -253,6 +252,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ # May be used by various substitution variables. @@ -1099,7 +1099,6 @@ thread_host_headers = \ ${host_builddir}/gthr.h \ ${host_builddir}/gthr-single.h \ ${host_builddir}/gthr-posix.h \ - ${host_builddir}/gthr-tpf.h \ ${host_builddir}/gthr-default.h pch1_source = ${glibcxx_srcdir}/include/precompiled/stdc++.h @@ -1510,43 +1509,35 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ echo "" >> $@ ;\ echo "#endif // _GLIBCXX_CXX_CONFIG_H" >> $@ -${host_builddir}/gthr.h: ${toplevel_srcdir}/gcc/gthr.h stamp-${host_alias} +${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias} sed -e '/^#pragma/b' \ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's,^#include "\(.*\)",#include ,g' \ - < ${toplevel_srcdir}/gcc/gthr.h > $@ + < $< > $@ -${host_builddir}/gthr-single.h: ${toplevel_srcdir}/gcc/gthr-single.h \ +${host_builddir}/gthr-single.h: ${toplevel_srcdir}/libgcc/gthr-single.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ - < ${toplevel_srcdir}/gcc/gthr-single.h > $@ + < $< > $@ -${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/gcc/gthr-posix.h \ +${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/libgcc/config/gthr-posix.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ - < ${toplevel_srcdir}/gcc/gthr-posix.h > $@ + < $< > $@ -${host_builddir}/gthr-tpf.h: ${toplevel_srcdir}/gcc/gthr-tpf.h \ - stamp-${host_alias} - sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ - -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ - -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ - -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ - < ${toplevel_srcdir}/gcc/gthr-tpf.h > $@ - -${host_builddir}/gthr-default.h: ${toplevel_srcdir}/gcc/${glibcxx_thread_h} \ +${host_builddir}/gthr-default.h: ${toplevel_builddir}/libgcc/gthr-default.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \ -e 's,^#include "\(.*\)",#include ,g' \ - < ${toplevel_srcdir}/gcc/${glibcxx_thread_h} > $@ + < $< > $@ # Build two precompiled C++ includes, stdc++.h.gch/*.gch ${pch1a_output}: ${allstamped} ${host_builddir}/c++config.h ${pch1_source} diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in index 4c36c35e0bc..9ef5e683af8 100644 --- a/libstdc++-v3/libsupc++/Makefile.in +++ b/libstdc++-v3/libsupc++/Makefile.in @@ -272,7 +272,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -312,6 +311,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ # May be used by various substitution variables. diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in index 09092677b04..0226b894a6e 100644 --- a/libstdc++-v3/po/Makefile.in +++ b/libstdc++-v3/po/Makefile.in @@ -213,7 +213,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -253,6 +252,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ # May be used by various substitution variables. diff --git a/libstdc++-v3/python/Makefile.in b/libstdc++-v3/python/Makefile.in index 01bcddbe1c6..ca046cf0a33 100644 --- a/libstdc++-v3/python/Makefile.in +++ b/libstdc++-v3/python/Makefile.in @@ -237,7 +237,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -277,6 +276,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ # May be used by various substitution variables. diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 5d31fb20c41..c52e5c4df61 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -277,7 +277,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -317,6 +316,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ # May be used by various substitution variables. diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in index 37e8a3cf675..af161ea5d26 100644 --- a/libstdc++-v3/testsuite/Makefile.in +++ b/libstdc++-v3/testsuite/Makefile.in @@ -213,7 +213,6 @@ glibcxx_builddir = @glibcxx_builddir@ glibcxx_localedir = @glibcxx_localedir@ glibcxx_prefixdir = @glibcxx_prefixdir@ glibcxx_srcdir = @glibcxx_srcdir@ -glibcxx_thread_h = @glibcxx_thread_h@ glibcxx_toolexecdir = @glibcxx_toolexecdir@ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ @@ -253,6 +252,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +toplevel_builddir = @toplevel_builddir@ toplevel_srcdir = @toplevel_srcdir@ AUTOMAKE_OPTIONS = nostdinc RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir -- cgit v1.2.1 From c1aeb0ddd9dafdaba9a74ada8358eff863b1dfce Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 2 Nov 2011 18:43:26 +0000 Subject: 2011-11-02 Richard B. Kreckel Paolo Carlini PR libstdc++/50880 * include/std/complex (__complex_acosh): Fix in a better way, use Kahan's formula. * include/tr1/complex (__complex_acosh): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180787 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/include/std/complex | 11 +++-------- libstdc++-v3/include/tr1/complex | 11 +++-------- 2 files changed, 6 insertions(+), 16 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index 3c41b483cd2..d7423433803 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -1686,14 +1686,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::complex<_Tp> __complex_acosh(const std::complex<_Tp>& __z) { - std::complex<_Tp> __t((__z.real() - __z.imag()) - * (__z.real() + __z.imag()) - _Tp(1.0), - _Tp(2.0) * __z.real() * __z.imag()); - __t = std::sqrt(__t); - if (__z.real() < _Tp()) - __t = -__t; - - return std::log(__t + __z); + // Kahan's formula. + return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0))) + + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0)))); } #if _GLIBCXX_USE_C99_COMPLEX_TR1 diff --git a/libstdc++-v3/include/tr1/complex b/libstdc++-v3/include/tr1/complex index d831eeb0146..689ea167ba2 100644 --- a/libstdc++-v3/include/tr1/complex +++ b/libstdc++-v3/include/tr1/complex @@ -185,14 +185,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::complex<_Tp> __complex_acosh(const std::complex<_Tp>& __z) { - std::complex<_Tp> __t((__z.real() - __z.imag()) - * (__z.real() + __z.imag()) - _Tp(1.0), - _Tp(2.0) * __z.real() * __z.imag()); - __t = std::sqrt(__t); - if (__z.real() < _Tp()) - __t = -__t; - - return std::log(__t + __z); + // Kahan's formula. + return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0))) + + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0)))); } #if _GLIBCXX_USE_C99_COMPLEX_TR1 -- cgit v1.2.1 From b4aa9f42797865ffeacaf0276168e20512140ef2 Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 2 Nov 2011 18:43:42 +0000 Subject: 2011-11-02 Richard B. Kreckel Paolo Carlini PR libstdc++/50880 * include/std/complex (__complex_acosh): Fix in a better way, use Kahan's formula. * include/tr1/complex (__complex_acosh): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180788 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7e00e2a382b..f57b699471a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2011-11-02 Richard B. Kreckel + Paolo Carlini + + PR libstdc++/50880 + * include/std/complex (__complex_acosh): Fix in a better way, + use Kahan's formula. + * include/tr1/complex (__complex_acosh): Likewise. + 2011-11-02 Paolo Carlini PR libstdc++/50951 -- cgit v1.2.1 From 518b309a106b837811253e530c097fe4a295fb71 Mon Sep 17 00:00:00 2001 From: bkoz Date: Thu, 3 Nov 2011 17:50:14 +0000 Subject: 2011-11-03 Benjamin Kosnik * doc/html/*: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180837 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 4 + libstdc++-v3/doc/html/api.html | 2 +- libstdc++-v3/doc/html/faq.html | 6 +- libstdc++-v3/doc/html/index.html | 20 ++--- libstdc++-v3/doc/html/manual/abi.html | 16 ++-- libstdc++-v3/doc/html/manual/algorithms.html | 2 +- libstdc++-v3/doc/html/manual/api.html | 4 +- .../doc/html/manual/appendix_contributing.html | 2 +- libstdc++-v3/doc/html/manual/appendix_free.html | 2 +- libstdc++-v3/doc/html/manual/appendix_gpl.html | 4 +- libstdc++-v3/doc/html/manual/appendix_porting.html | 20 ++--- libstdc++-v3/doc/html/manual/atomics.html | 2 +- libstdc++-v3/doc/html/manual/backwards.html | 48 +++++------ libstdc++-v3/doc/html/manual/bk01pt02.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html | 50 ----------- libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html | 41 --------- libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html | 36 -------- libstdc++-v3/doc/html/manual/bk01pt03pr01.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt04.html | 16 ++-- libstdc++-v3/doc/html/manual/concurrency.html | 2 +- libstdc++-v3/doc/html/manual/containers.html | 2 +- libstdc++-v3/doc/html/manual/diagnostics.html | 2 +- .../doc/html/manual/documentation_hacking.html | 8 +- libstdc++-v3/doc/html/manual/extensions.html | 2 +- libstdc++-v3/doc/html/manual/facets.html | 54 ++++++------ libstdc++-v3/doc/html/manual/index.html | 36 ++++---- libstdc++-v3/doc/html/manual/intro.html | 2 +- libstdc++-v3/doc/html/manual/io.html | 2 +- libstdc++-v3/doc/html/manual/iterators.html | 2 +- libstdc++-v3/doc/html/manual/localization.html | 18 ++-- libstdc++-v3/doc/html/manual/memory.html | 42 +++++----- libstdc++-v3/doc/html/manual/numerics.html | 2 +- libstdc++-v3/doc/html/manual/parallel_mode.html | 4 +- .../doc/html/manual/policy_data_structures.html | 12 +-- .../html/manual/policy_data_structures_design.html | 66 +++++++-------- .../html/manual/policy_data_structures_using.html | 2 +- libstdc++-v3/doc/html/manual/profile_mode.html | 2 +- libstdc++-v3/doc/html/manual/setup.html | 15 +--- libstdc++-v3/doc/html/manual/status.html | 8 +- libstdc++-v3/doc/html/manual/strings.html | 2 +- libstdc++-v3/doc/html/manual/support.html | 2 +- libstdc++-v3/doc/html/manual/test.html | 2 +- libstdc++-v3/doc/html/manual/using.html | 2 +- .../doc/html/manual/using_concurrency.html | 97 ++++++++++++++++++---- libstdc++-v3/doc/html/manual/using_exceptions.html | 16 ++-- libstdc++-v3/doc/html/manual/using_headers.html | 12 +-- libstdc++-v3/doc/html/manual/utilities.html | 4 +- 52 files changed, 324 insertions(+), 389 deletions(-) delete mode 100644 libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html delete mode 100644 libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html delete mode 100644 libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f57b699471a..cba43eb7570 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2011-11-03 Benjamin Kosnik + + * doc/html/*: Regenerate. + 2011-11-02 Richard B. Kreckel Paolo Carlini diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index feb596b299a..a3c3f6b3ab8 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -7,7 +7,7 @@ FSF -


diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index b4e05ed943f..6be4f5d37ea 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -4,7 +4,7 @@ 2008, 2010 FSF -



1.1. What is libstdc++?
1.2. Why should I use libstdc++? @@ -145,7 +145,7 @@ Who's in charge of it?

The libstdc++ project is contributed to by several developers - all over the world, in the same way as GCC or Linux. + all over the world, in the same way as GCC or the Linux kernel. Benjamin Kosnik, Gabriel Dos Reis, Phil Edwards, Ulrich Drepper, Loren James Rittle, and Paolo Carlini are the lead maintainers of the SVN archive. @@ -237,7 +237,7 @@

3.1.

How do I install libstdc++?

Often libstdc++ comes pre-installed as an integral part of many - existing Linux and Unix systems, as well as many embedded + existing GNU/Linux and Unix systems, as well as many embedded development tools. It may be necessary to install extra development packages to get the headers, or the documentation, or the source: please consult your vendor for details. diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index 33e5ea69f33..fdae06326a6 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -35,13 +35,13 @@

Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities -
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++0x and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. +
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++0x and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization -
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. +
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Interacting with C
Containers vs. Arrays
10. @@ -145,20 +145,20 @@ Existing tests
C++0x Requirements Test Sequence Descriptions -
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro -
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
+
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro +
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
Removal of ostream::form and istream::scan extensions -
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. -
+
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. +
No stream::attach(int fd) -
+
Support for C++98 dialect. -
+
Support for C++TR1 dialect. -
+
Support for C++0x dialect. -
+
Container::iterator_type is not necessarily Container::value_type*
C. Free Software Needs Free Documentation diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index dd3e011b0b0..7e81927b736 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -490,39 +490,39 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. C++ ABI Summary - .

Dynamic Shared Objects: Survey and Issues . ISO C++ J16/06-0046 - . Benjamin Kosnik.

Versioning With Namespaces . ISO C++ J16/06-0083 - . Benjamin Kosnik.

The neatest accomplishment of the algorithms sect1 is that all the work is done via iterators, not containers directly. This means two diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 59ca7bca99f..d2990892e0f 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -75,11 +75,11 @@ _Alloc_traits have been removed. __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. -


Releases after gcc-3.4 have continued to add to the collection +


Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. -


+


Debug mode first appears.

Precompiled header support PCH support. diff --git a/libstdc++-v3/doc/html/manual/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html index 0aefd110331..5e12f000f03 100644 --- a/libstdc++-v3/doc/html/manual/appendix_contributing.html +++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html @@ -7,7 +7,7 @@ Appendices  Next


The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index 7174e48ae93..467f9d9617b 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -7,7 +7,7 @@ Appendices  Next


Table of Contents

Configure and Build Hacking
Prerequisites
Overview: What Comes from Where
Storing Information in non-AC files (like configure.host)
Coding and Commenting Conventions
The acinclude.m4 layout
GLIBCXX_ENABLE, the --enable maker
Writing and Generating Documentation
Introduction
Generating Documentation
Doxygen
Prerequisites
Generating the Doxygen Files
Markup
Docbook
Prerequisites
Generating the DocBook Files
Editing and Validation
File Organization and Basics
Markup By Example
Porting to New Hardware or Operating Systems
Operating System
CPU
Character Types
Thread Safety
Numeric Limits
Libtool
Test
Organization
Directory Layout
Naming Conventions
Running the Testsuite
Basic
Variations
Permutations
Writing a new test case
Test Harness and Utilities
Dejagnu Harness Details
Utilities
Special Topics
Qualifying Exception Safety Guarantees @@ -15,20 +15,20 @@ Existing tests
C++0x Requirements Test Sequence Descriptions -
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro -
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
+
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro +
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
Removal of ostream::form and istream::scan extensions -
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. -
+
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. +
No stream::attach(int fd) -
+
Support for C++98 dialect. -
+
Support for C++TR1 dialect. -
+
Support for C++0x dialect. -
+
Container::iterator_type is not necessarily Container::value_type*

As noted previously, @@ -41,7 +41,7 @@ Support for C++0x dialect. in GCC try to stay in sync with each other in terms of versions of the auto-tools used, so please try to play nicely with the neighbors. -

Facilities for atomic operations.

diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index fa7d92cd311..ab90f3bf84a 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -17,8 +17,8 @@ ISO Standard (e.g., statistical analysis). While there are a lot of really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those “obvious†classes didn't get included. -

Known Issues include many of the limitations of its immediate ancestor.

Portability notes and known implementation limitations are as follows.

+

Known Issues include many of the limitations of its immediate ancestor.

Portability notes and known implementation limitations are as follows.

In earlier versions of the standard, fstream.h, ostream.h @@ -44,7 +44,7 @@ considered replaced and rewritten. archived. The code is considered replaced and rewritten.

Portability notes and known implementation limitations are as follows. -

+

Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler @@ -364,7 +364,7 @@ libstdc++-v3. of the SGI STL (version 3.3), with extensive changes.

A more formal description of the V3 goals can be found in the official design document. -

Portability notes and known implementation limitations are as follows.

The pre-ISO C++ headers +

Portability notes and known implementation limitations are as follows.

Migration guide for GCC-3.2 diff --git a/libstdc++-v3/doc/html/manual/bk01pt02.html b/libstdc++-v3/doc/html/manual/bk01pt02.html index 5c344b16857..05ae37aed78 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02.html @@ -13,13 +13,13 @@

Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities -
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++0x and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. +
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++0x and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization -
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. +
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Interacting with C
Containers vs. Arrays
10. diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html index 4ad5743ca05..79161360ff5 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html @@ -19,6 +19,6 @@ mode or with debug mode. The following table provides the names and headers of the debugging containers: -


In addition, when compiling in C++0x mode, these additional +


In addition, when compiling in C++0x mode, these additional containers have additional debug capability. -


+


diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html index 71b3de20a73..c33d260ae0e 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html @@ -63,4 +63,4 @@ Then compile this code with the prerequisite compiler flags flags for atomic operations.)

The following table provides the names and headers of all the parallel algorithms that can be used in a similar manner: -

Table 18.1. Parallel Algorithms

AlgorithmHeaderParallel algorithmParallel header
std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
std::countalgorithm__gnu_parallel::countparallel/algorithm
std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
std::equalalgorithm__gnu_parallel::equalparallel/algorithm
std::findalgorithm__gnu_parallel::findparallel/algorithm
std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
std::generatealgorithm__gnu_parallel::generateparallel/algorithm
std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
std::searchalgorithm__gnu_parallel::searchparallel/algorithm
std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
std::transformalgorithm__gnu_parallel::transformparallel/algorithm
std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
std::sortalgorithm__gnu_parallel::sortparallel/algorithm
std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

+

Table 18.1. Parallel Algorithms

AlgorithmHeaderParallel algorithmParallel header
std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
std::countalgorithm__gnu_parallel::countparallel/algorithm
std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
std::equalalgorithm__gnu_parallel::equalparallel/algorithm
std::findalgorithm__gnu_parallel::findparallel/algorithm
std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
std::generatealgorithm__gnu_parallel::generateparallel/algorithm
std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
std::searchalgorithm__gnu_parallel::searchparallel/algorithm
std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
std::transformalgorithm__gnu_parallel::transformparallel/algorithm
std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
std::sortalgorithm__gnu_parallel::sortparallel/algorithm
std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html index e8cf6a4b05d..eada010800c 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html @@ -1,7 +1,7 @@ Design

-

Table 19.1. Profile Code Location

Code LocationUse
libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are +


diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html index 6548b8b8c41..cfa6aaa982c 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html @@ -18,7 +18,7 @@ A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. -

Table 19.2. Profile Diagnostics

GroupFlagBenefitCostFreq.Implemented 
+

Table 19.2. Profile Diagnostics

GroupFlagBenefitCostFreq.Implemented 
CONTAINERS HASHTABLE_TOO_SMALL101 10yes
  HASHTABLE_TOO_LARGE51 10yes
  diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html index 5b62d1fbc72..3b3267340ac 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html @@ -76,7 +76,7 @@ else return false.

Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). -


+


The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html deleted file mode 100644 index 2f75d608b5e..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html +++ /dev/null @@ -1,50 +0,0 @@ - - -Deprecated HP/SGI

- The SGI hashing classes hash_set and - hash_set have been deprecated by the - unordered_set, unordered_multiset, unordered_map, - unordered_multimap containers in TR1 and the upcoming C++0x, and - may be removed in future releases. -

The SGI headers

-     <hash_map>
-     <hash_set>
-     <rope>
-     <slist>
-     <rb_tree>
-   

are all here; - <hash_map> and <hash_set> - are deprecated but available as backwards-compatible extensions, - as discussed further below. <rope> is the - SGI specialization for large strings ("rope," - "large strings," get it? Love that geeky humor.) - <slist> is a singly-linked list, for when the - doubly-linked list<> is too much space - overhead, and <rb_tree> exposes the red-black - tree classes used in the implementation of the standard maps and - sets. -

Each of the associative containers map, multimap, set, and multiset - have a counterpart which uses a - hashing - function to do the arranging, instead of a strict weak ordering - function. The classes take as one of their template parameters a - function object that will return the hash value; by default, an - instantiation of - hash. - You should specialize this functor for your class, or define your own, - before trying to use one of the hashing classes. -

The hashing classes support all the usual associative container - functions, as well as some extra constructors specifying the number - of buckets, etc. -

Why would you want to use a hashing class instead of the - “normalâ€implementations? Matt Austern writes: -

- [W]ith a well chosen hash function, hash tables - generally provide much better average-case performance than - binary search trees, and much worse worst-case performance. So - if your implementation has hash_map, if you don't mind using - nonstandard components, and if you aren't scared about the - possibility of pathological cases, you'll probably get better - performance from hash_map. - -

diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html deleted file mode 100644 index 4350e20b19c..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html +++ /dev/null @@ -1,41 +0,0 @@ - - -Implementation

The functions for atomic operations described above are either -implemented via compiler intrinsics (if the underlying host is -capable) or by library fallbacks.

Compiler intrinsics (builtins) are always preferred. However, as -the compiler builtins for atomics are not universally implemented, -using them directly is problematic, and can result in undefined -function calls. (An example of an undefined symbol from the use -of __sync_fetch_and_add on an unsupported host is a -missing reference to __sync_fetch_and_add_4.) -

In addition, on some hosts the compiler intrinsics are enabled -conditionally, via the -march command line flag. This makes -usage vary depending on the target hardware and the flags used during -compile. -

-If builtins are possible for bool-sized integral types, -_GLIBCXX_ATOMIC_BUILTINS_1 will be defined. -If builtins are possible for int-sized integral types, -_GLIBCXX_ATOMIC_BUILTINS_4 will be defined. -

For the following hosts, intrinsics are enabled by default. -

For others, some form of -march may work. On -non-ancient x86 hardware, -march=native usually does the -trick.

For hosts without compiler intrinsics, but with capable -hardware, hand-crafted assembly is selected. This is the case for the following hosts: -

And for the rest, a simulated atomic lock via pthreads. -

Detailed information about compiler intrinsics for atomic operations can be found in the GCC documentation. -

More details on the library fallbacks from the porting section. -

diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html deleted file mode 100644 index b70d5a621ac..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html +++ /dev/null @@ -1,36 +0,0 @@ - - -Use diff --git a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html index 7e3eb4ac9dc..255a182469f 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html @@ -3,7 +3,7 @@ <meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , runtime , library "/><link rel="home" href="../index.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III.  Extensions"/><link rel="prev" href="extensions.html" title="Part III.  Extensions"/><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III.  Extensions -</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id654345"/></h1></div></div></div><p> +</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id484429"/></h1></div></div></div><p> Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from older versions of standard library components, namely SGI's STL, and some of these are diff --git a/libstdc++-v3/doc/html/manual/bk01pt04.html b/libstdc++-v3/doc/html/manual/bk01pt04.html index a12cff854f4..7ac1c32cc4c 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt04.html +++ b/libstdc++-v3/doc/html/manual/bk01pt04.html @@ -17,20 +17,20 @@ Existing tests </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers"> C++0x Requirements Test Sequence Descriptions -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id710570">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id710603">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id710706">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id710832">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id710893"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro - </a></span></dt><dt><span class="section"><a href="backwards.html#id710989">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id711028">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id711046">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id711092"> +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540654">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id540687">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540790">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id540916">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id540977"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro + </a></span></dt><dt><span class="section"><a href="backwards.html#id541073">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541112">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541130">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541176"> Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code> extensions -</a></span></dt><dt><span class="section"><a href="backwards.html#id711111">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id711267">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id711285">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id711304">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id711429">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id711514">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id711617">No <code class="code">ios::nocreate/ios::noreplace</code>. -</a></span></dt><dt><span class="section"><a href="backwards.html#id711664"> +</a></span></dt><dt><span class="section"><a href="backwards.html#id541195">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541351">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id541369">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id541388">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id541513">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id541598">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id541701">No <code class="code">ios::nocreate/ios::noreplace</code>. +</a></span></dt><dt><span class="section"><a href="backwards.html#id541749"> No <code class="code">stream::attach(int fd)</code> -</a></span></dt><dt><span class="section"><a href="backwards.html#id711732"> +</a></span></dt><dt><span class="section"><a href="backwards.html#id541817"> Support for C++98 dialect. -</a></span></dt><dt><span class="section"><a href="backwards.html#id711760"> +</a></span></dt><dt><span class="section"><a href="backwards.html#id541844"> Support for C++TR1 dialect. -</a></span></dt><dt><span class="section"><a href="backwards.html#id711804"> +</a></span></dt><dt><span class="section"><a href="backwards.html#id541888"> Support for C++0x dialect. -</a></span></dt><dt><span class="section"><a href="backwards.html#id711882"> +</a></span></dt><dt><span class="section"><a href="backwards.html#id541966"> Container::iterator_type is not necessarily Container::value_type* </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C. Free Software Needs Free Documentation diff --git a/libstdc++-v3/doc/html/manual/concurrency.html b/libstdc++-v3/doc/html/manual/concurrency.html index 7294c3ccd8d..98fdae64911 100644 --- a/libstdc++-v3/doc/html/manual/concurrency.html +++ b/libstdc++-v3/doc/html/manual/concurrency.html @@ -7,7 +7,7 @@ Standard Contents </th><td align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 15.  Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"/>Chapter 15.  Concurrency - <a id="id654161" class="indexterm"/> + <a id="id484245" class="indexterm"/> </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p> Facilities for concurrent operation, and control thereof. </p><div class="section" title="API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency.api"/>API Reference</h2></div></div></div><p> diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html index b95e4805a52..554bc1c1d90 100644 --- a/libstdc++-v3/doc/html/manual/containers.html +++ b/libstdc++-v3/doc/html/manual/containers.html @@ -7,7 +7,7 @@ Standard Contents </th><td align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 9.  Containers"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"/>Chapter 9.  Containers - <a id="id651208" class="indexterm"/> + <a id="id481292" class="indexterm"/> </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section" title="Sequences"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.sequences"/>Sequences</h2></div></div></div><div class="section" title="list"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"/>list</h3></div></div></div><div class="section" title="list::size() is O(n)"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"/>list::size() is O(n)</h4></div></div></div><p> Yes it is, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html index 399d7719d07..001e026caeb 100644 --- a/libstdc++-v3/doc/html/manual/diagnostics.html +++ b/libstdc++-v3/doc/html/manual/diagnostics.html @@ -7,7 +7,7 @@ Standard Contents </th><td align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 5.  Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"/>Chapter 5.  Diagnostics - <a id="id632643" class="indexterm"/> + <a id="id462728" class="indexterm"/> </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics.exceptions"/>Exceptions</h2></div></div></div><div class="section" title="API Reference"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"/>API Reference</h3></div></div></div><p> All exception objects are defined in one of the standard header files: <code class="filename">exception</code>, diff --git a/libstdc++-v3/doc/html/manual/documentation_hacking.html b/libstdc++-v3/doc/html/manual/documentation_hacking.html index 293d2a922d7..11bc93ef4c0 100644 --- a/libstdc++-v3/doc/html/manual/documentation_hacking.html +++ b/libstdc++-v3/doc/html/manual/documentation_hacking.html @@ -117,7 +117,7 @@ supported, and are always aliased to dummy rules. These unsupported formats are: <span class="emphasis"><em>info</em></span>, <span class="emphasis"><em>ps</em></span>, and <span class="emphasis"><em>dvi</em></span>. - </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id701803"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p> + </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id531887"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p> Prerequisite tools are Bash 2.0 or later, <a class="link" href="http://www.doxygen.org/">Doxygen</a>, and the <a class="link" href="http://www.gnu.org/software/coreutils/">GNU @@ -263,7 +263,7 @@ writing Doxygen comments. Single and double quotes, and separators in filenames are two common trouble spots. When in doubt, consult the following table. - </p><div class="table"><a id="id702306"/><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id702468"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p> + </p><div class="table"><a id="id532390"/><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id532552"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p> Editing the DocBook sources requires an XML editor. Many exist: some notable options include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>, @@ -419,11 +419,11 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal <a class="link" href="http://www.docbook.org/tdg/en/html/part2.html">online</a>. An incomplete reference for HTML to Docbook conversion is detailed in the table below. - </p><div class="table"><a id="id702945"/><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>, + </p><div class="table"><a id="id533030"/><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>, <literallayout></td></tr><tr><td style="text-align: left"><ul></td><td style="text-align: left"><itemizedlist></td></tr><tr><td style="text-align: left"><ol></td><td style="text-align: left"><orderedlist></td></tr><tr><td style="text-align: left"><il></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><dl></td><td style="text-align: left"><variablelist></td></tr><tr><td style="text-align: left"><dt></td><td style="text-align: left"><term></td></tr><tr><td style="text-align: left"><dd></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><a href=""></td><td style="text-align: left"><ulink url=""></td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left"><literal>, <programlisting></td></tr><tr><td style="text-align: left"><strong></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left">"</td><td style="text-align: left"><quote></td></tr></tbody></table></div></div><br class="table-break"/><p> And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. -</p><div class="table"><a id="id703147"/><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left"> +</p><div class="table"><a id="id533231"/><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left"> <p><function>clear()</function></p> <p><function>fs.clear()</function></p> </td></tr><tr><td style="text-align: left"><type></td><td style="text-align: left"><type>long long</type></td></tr><tr><td style="text-align: left"><varname></td><td style="text-align: left"><varname>fs</varname></td></tr><tr><td style="text-align: left"><literal></td><td style="text-align: left"> diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html index 4e6a01495c3..ef3d6abcfb5 100644 --- a/libstdc++-v3/doc/html/manual/extensions.html +++ b/libstdc++-v3/doc/html/manual/extensions.html @@ -5,7 +5,7 @@ </th></tr><tr><td align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr></table><hr/></div><div class="part" title="Part III.  Extensions"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"/>Part III.  Extensions - <a id="id654326" class="indexterm"/> + <a id="id484410" class="indexterm"/> </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="preface"><a href="bk01pt03pr01.html"/></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.link">Link- and run-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.alt">Alternatives for Coexistence</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="mt_allocator.html">20. The mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s02.html">Design Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch20s02.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch20s03.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.init">Initialization</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch20s04.html">Single Thread Example</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s05.html">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="chapter"><a href="bitmap_allocator.html">21. The bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.allocate"><code class="function">allocate</code></a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.deallocate"><code class="function">deallocate</code></a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.1">1</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.2">2</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.locality">Locality</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="policy_data_structures.html">22. Policy-Based Data Structures</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.configuring"> Configuring via Template Parameters diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html index 33350cd5914..c394c39e30a 100644 --- a/libstdc++-v3/doc/html/manual/facets.html +++ b/libstdc++-v3/doc/html/manual/facets.html @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Facets
 Next

System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

API Specifications, Java Platform . java.util.Properties, java.text.MessageFormat, java.util.Locale, java.util.ResourceBundle - .

GNU gettext tools, version 0.10.38, Native Language Support Library and Tools. diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index d2108b00eca..9f9e19c15ac 100644 --- a/libstdc++-v3/doc/html/manual/index.html +++ b/libstdc++-v3/doc/html/manual/index.html @@ -16,13 +16,13 @@

Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities -
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++0x and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. +
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++0x and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization -
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. +
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Interacting with C
Containers vs. Arrays
10. @@ -126,39 +126,39 @@ Existing tests
C++0x Requirements Test Sequence Descriptions -
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro -
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
+
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro +
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
Removal of ostream::form and istream::scan extensions -
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. -
+
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. +
No stream::attach(int fd) -
+
Support for C++98 dialect. -
+
Support for C++TR1 dialect. -
+
Support for C++0x dialect. -
+
Container::iterator_type is not necessarily Container::value_type*
C. Free Software Needs Free Documentation
D. GNU General Public License version 3 -
E. GNU Free Documentation License
diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html index d2544ae1295..578c8131a13 100644 --- a/libstdc++-v3/doc/html/manual/io.html +++ b/libstdc++-v3/doc/html/manual/io.html @@ -7,7 +7,7 @@ Standard Contents
 Next

 Next

The following FAQ entry points out that diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html index a9171a98797..4fad79f1fec 100644 --- a/libstdc++-v3/doc/html/manual/localization.html +++ b/libstdc++-v3/doc/html/manual/localization.html @@ -7,8 +7,8 @@ Standard Contents  Next


System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

Boost C++ Libraries documentation, shared_ptr diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html index 4fe23e34bb0..d0197db70b1 100644 --- a/libstdc++-v3/doc/html/manual/numerics.html +++ b/libstdc++-v3/doc/html/manual/numerics.html @@ -7,7 +7,7 @@ Standard Contents  Next


Using complex<> becomes even more comple- er, sorry, diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index b85e408591e..cf37b7d163a 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode.html @@ -13,11 +13,11 @@ explicit source declaration or by compiling existing sources with a specific compiler flag.

The standard C++ library contains associative containers based on red-black trees and collision-chaining hash tables. These are very useful, but they are not ideal for all types of @@ -259,7 +259,7 @@

The figure below shows the different underlying data structures currently supported in this library. -


+


A shows a collision-chaining hash-table, B shows a probing hash-table, C shows a red-black tree, D shows a splay tree, E shows a tree based on an ordered vector(implicit in the order of the @@ -378,7 +378,7 @@ no guarantee that the elements traversed will coincide with the logical elements between 1 and 5, as in label B. -


+


In our opinion, this problem is not caused just because red-black trees are order preserving while collision-chaining hash tables are (generally) not - it @@ -429,7 +429,7 @@ list, as in the graphic below, label B. Here the iterators are as light as can be, but the hash-table's operations are more complicated. -


+


It should be noted that containers based on collision-chaining hash-tables are not the only ones with this type of behavior; many other self-organizing data structures display it as well. @@ -445,7 +445,7 @@ container. The graphic below shows three cases: A1 and A2 show a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 show a collision-chaining hash table. -


  1. +


    1. Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can be de-referenced and incremented. The sequence of iterators changed, but in a way that is well-defined by the interface. @@ -681,7 +681,7 @@ typically less structured than an associative container's tree; the third simply uses an associative container. These are shown in the figure below with labels A1 and A2, B, and C. -


      +


      No single implementation can completely replace any of the others. Some have better push and pop amortized performance, some have diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html index 71e80a993eb..777dda3528a 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html @@ -171,7 +171,7 @@ naturally; collision-chaining hash tables (label B) store equivalent-key values in the same bucket, the bucket can be arranged so that equivalent-key values are consecutive. -


      +


      Put differently, the standards' non-unique mapping associative-containers are associative containers that map primary keys to linked lists that are embedded into the @@ -253,7 +253,7 @@ first graphic above. Labels A and B, respectively. Each shaded box represents some size-type or secondary associative-container. -


      +


      In the first example above, then, one would use an associative container mapping each user to an associative container which maps each application id to a start time (see @@ -306,7 +306,7 @@ shows invariants for order-preserving containers: point-type iterators are synonymous with range-type iterators. Orthogonally, Cshows invariants for "set" - containers: iterators are synonymous with const iterators.


      Note that point-type iterators in self-organizing containers + containers: iterators are synonymous with const iterators.


      Note that point-type iterators in self-organizing containers (hash-based associative containers) lack movement operators, such as operator++ - in fact, this is the reason why this library differentiates from the standard C++ librarys @@ -345,7 +345,7 @@ to the question of whether point-type iterators and range-type iterators are valid. The graphic below shows tags corresponding to different types of invalidation guarantees. -


    The graphic below shows the relationships. -


Hash-tables, as opposed to trees, do not naturally grow or shrink. It is necessary to specify policies to determine how and when a hash table should change its size. Usually, resize policies can be decomposed into orthogonal policies:

  1. A size policy indicating how a hash table @@ -668,10 +668,10 @@ and some load factor be denoted by Α. We would like to calculate the minimal length of k, such that if there were Α m elements in the hash table, a probe sequence of length k would - be found with probability at most 1/m.


    Denote the probability that a probe sequence of length + be found with probability at most 1/m.


    Denote the probability that a probe sequence of length k appears in bin i by pi, the length of the probe sequence of bin i by - li, and assume uniform distribution. Then

    Equation 22.7.  + li, and assume uniform distribution. Then

    Equation 22.7.  Probability of Probe Sequence of Length k

    p1 = @@ -685,7 +685,7 @@ li are negatively-dependent ([biblio.dubhashi98neg]) . Let - I(.) denote the indicator function. Then

    Equation 22.8.  + I(.) denote the indicator function. Then

    Equation 22.8.  Probability Probe Sequence in Some Bin

    P( existsi li ≥ k ) = @@ -724,7 +724,7 @@ a resize is needed, and if so, what is the new size (points D to G); following the resize, it notifies the policy that a resize has completed (point H); finally, the element is - inserted, and the policy notified (point I).


    In practice, a resize policy can be usually orthogonally + inserted, and the policy notified (point I).


    In practice, a resize policy can be usually orthogonally decomposed to a size policy and a trigger policy. Consequently, the library contains a single class for instantiating a resize policy: hash_standard_resize_policy @@ -733,8 +733,8 @@ both, and acts as a standard delegate ([biblio.gof]) to these policies.

    The two graphics immediately below show sequence diagrams illustrating the interaction between the standard resize policy - and its trigger and size policies, respectively.


    The library includes the following instantiations of size and trigger policies:


    These problems are solved by a combination of two means: node iterators, and template-template node updater parameters.

    Each tree-based container defines two additional iterator types, const_node_iterator @@ -920,7 +920,7 @@ node_update class, and publicly subclasses node_update. The graphic below shows this scheme, as well as some predefined policies (which are explained - below).


    node_update (an instantiation of + below).


    node_update (an instantiation of Node_Update) must define metadata_type as the type of metadata it requires. For order statistics, e.g., metadata_type might be size_t. @@ -939,7 +939,7 @@ nd_it. For example, say node x in the graphic below label A has an invalid invariant, but its' children, y and z have valid invariants. After the invocation, all three - nodes should have valid invariants, as in label B.


    When a tree operation might invalidate some node invariant, + nodes should have valid invariants, as in label B.


    When a tree operation might invalidate some node invariant, it invokes this method in its node_update base to restore the invariant. For example, the graphic below shows an insert operation (point A); the tree performs some @@ -947,7 +947,7 @@ C, and D). (It is well known that any insert, erase, split or join, can restore all node invariants by a small number of node invariant updates ([biblio.clrs2001]) - .


    To complete the description of the scheme, three questions + .


    To complete the description of the scheme, three questions need to be answered:

    1. How can a tree which supports order statistics define a method such as find_by_order?

    2. How can the node updater base access methods of the tree?

    3. How can the following cyclic dependency be resolved? @@ -989,7 +989,7 @@ node's metadata (this is halting reducible). In the graphic below, assume the shaded node is inserted. The tree would have to traverse the useless path shown to the root, applying - redundant updates all the way.


    A null policy class, null_node_update + redundant updates all the way.


A null policy class, null_node_update solves both these problems. The tree detects that node invariants are irrelevant, and defines all accordingly.

Trie-based containers support node invariants, as do tree-based containers. There are two minor differences, though, which, unfortunately, thwart sharing them sharing the same node-updating policies:

The graphic below shows the scheme, as well as some predefined - policies (which are explained below).


This library offers the following pre-defined trie node + policies (which are explained below).


This library offers the following pre-defined trie node updating policies:

this library allows instantiating lists with policies implementing any algorithm moving nodes to the front of the list (policies implementing algorithms interchanging nodes are unsupported).

Associative containers based on lists are parametrized by a @@ -1311,7 +1311,7 @@ sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are - shown in the graphic below, in labels A1 and A2, label B, and label C.


Roughly speaking, any value that is both pushed and popped + shown in the graphic below, in labels A1 and A2, label B, and label C.


Roughly speaking, any value that is both pushed and popped from a priority queue must incur a logarithmic expense (in the amortized sense). Any priority queue implementation that would avoid this, would violate known bounds on comparison-based @@ -1391,7 +1391,7 @@ container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category; this is one of the possible tags shown in the graphic below. -


Additionally, a traits mechanism can be used to query a +


Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then

__gnu_pbds::container_traits<Cntnr>

is a traits class identifying the properties of the diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html index 0e2fdb3d1c4..ec58b190dd7 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html @@ -62,7 +62,7 @@ In addition, there are the following diagnostics classes, used to report errors specific to this library's data structures. -


Perflint: A Context Sensitive Performance Advisor for C++ Programs . Lixia Liu. Silvius Rus. Copyright © 2009 . Proceedings of the 2009 International Symposium on Code Generation diff --git a/libstdc++-v3/doc/html/manual/setup.html b/libstdc++-v3/doc/html/manual/setup.html index 6615390b526..5ce28a4508f 100644 --- a/libstdc++-v3/doc/html/manual/setup.html +++ b/libstdc++-v3/doc/html/manual/setup.html @@ -46,9 +46,9 @@

Finally, a few system-specific requirements:

linux

- If gcc 3.1.0 or later on is being used on linux, an attempt + If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt will be made to use "C" library functionality necessary for - C++ named locale support. For gcc 4.6.0 and later, this + C++ named locale support. For GCC 4.6.0 and later, this means that glibc 2.3 or later is required.

If the 'gnu' locale model is being used, the following @@ -87,16 +87,7 @@ zh_TW BIG5 libstdc++ after "C" locales are installed is not necessary.

To install support for locales, do only one of the following: -

  • install all locales

    • with RedHat Linux: -

      export LC_ALL=C -

      rpm -e glibc-common --nodeps -

      - rpm -i --define "_install_langs all" - glibc-common-2.2.5-34.i386.rpm - -

    • - Instructions for other operating systems solicited. -

  • install just the necessary locales

    • with Debian Linux:

      Add the above list, as shown, to the file +

      • install all locales

      • install just the necessary locales

        • with Debian GNU/Linux:

          Add the above list, as shown, to the file /etc/locale.gen

          run /usr/sbin/locale-gen

        • on most Unix-like operating systems:

          localedef -i de_DE -f ISO-8859-1 de_DE

          (repeat for each entry in the above list)

        • Instructions for other operating systems solicited.

diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index 8e68bb29fc5..d72a0c20de2 100644 --- a/libstdc++-v3/doc/html/manual/status.html +++ b/libstdc++-v3/doc/html/manual/status.html @@ -8,7 +8,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2003.

This page describes the C++ support in mainline GCC SVN, not in any particular release. -

Table 1.1. C++ 1998/2003 Implementation Status

SectionDescriptionStatusComments
+

Table 1.1. C++ 1998/2003 Implementation Status

SectionDescriptionStatusComments
18 Language support @@ -157,7 +157,7 @@ presence of the required flag.

This page describes the C++0x support in mainline GCC SVN, not in any particular release. -

Table 1.2. C++ 200x Implementation Status

SectionDescriptionStatusComments
+

Table 1.2. C++ 200x Implementation Status

SectionDescriptionStatusComments
18 Language support @@ -245,7 +245,7 @@ In this implementation the header names are prefixed by

This page describes the TR1 support in mainline GCC SVN, not in any particular release. -

Table 1.3. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr  +

Table 1.3. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr 

Uses code from boost::shared_ptr. @@ -258,7 +258,7 @@ decimal floating-point arithmetic

This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. -

Table 1.4. C++ TR 24733 Implementation Status

This part deals with the functions called and objects created automatically during the course of a program's existence. diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html index 802d4159a07..9153c93c18a 100644 --- a/libstdc++-v3/doc/html/manual/test.html +++ b/libstdc++-v3/doc/html/manual/test.html @@ -493,7 +493,7 @@ only default variables. reporting functions including:

  • time_counter

  • resource_counter

  • report_performance

Testing is composed of running a particular test sequence, and looking at what happens to the surrounding code when diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html index 529577e5eb6..a58915b4336 100644 --- a/libstdc++-v3/doc/html/manual/using.html +++ b/libstdc++-v3/doc/html/manual/using.html @@ -11,5 +11,5 @@ enumerated and detailed in the table below.

By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. -

Table 3.1. C++ Command Options

Option FlagsDescription
-std=c++98Use the 1998 ISO C++ standard plus amendments.
-std=gnu++98As directly above, with GNU extensions.
-std=c++0xUse the working draft of the upcoming ISO C++0x standard.
-std=gnu++0xAs directly above, with GNU extensions.
-fexceptionsSee exception-free dialect
-frttiAs above, but RTTI-free dialect.
-pthread or -pthreadsFor ISO C++0x <thread>, <future>, +


diff --git a/libstdc++-v3/doc/html/manual/using_concurrency.html b/libstdc++-v3/doc/html/manual/using_concurrency.html index 671ebdd3a4b..e0c729263cd 100644 --- a/libstdc++-v3/doc/html/manual/using_concurrency.html +++ b/libstdc++-v3/doc/html/manual/using_concurrency.html @@ -34,7 +34,15 @@ AFAIK, none of this is properly documented anywhere other than in ``gcc -dumpspecs'' (look at lib and cpp entries).

-We currently use the SGI STL definition of thread safety. +In the terms of the 2011 C++ standard a thread-safe program is one which +does not perform any conflicting non-atomic operations on memory locations +and so does not contain any data races. +The standard places requirements on the library to ensure that no data +races are caused by the library itself or by programs which use the +library correctly (as described below). +The C++11 memory model and library requirements are a more formal version +of the SGI STL definition of thread safety, which the library used +prior to the 2011 standard.

The library strives to be thread-safe when all of the following conditions are met:

  • The system's libc is itself thread-safe, @@ -58,37 +66,96 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)

  • An implementation of atomicity.h functions exists for the architecture in question. See the internals documentation for more details. -

The user-code must guard against concurrent method calls which may - access any particular library object's state. Typically, the - application programmer may infer what object locks must be held - based on the objects referenced in a method call. Without getting +

The user code must guard against concurrent function calls which + access any particular library object's state when one or more of + those accesses modifies the state. An object will be modified by + invoking a non-const member function on it or passing it as a + non-const argument to a library function. An object will not be + modified by invoking a const member function on it or passing it to + a function as a pointer- or reference-to-const. + Typically, the application + programmer may infer what object locks must be held based on the + objects referenced in a function call and whether the objects are + accessed as const or non-const. Without getting into great detail, here is an example which requires user-level locks:

      library_class_a shared_object_a;
 
-     thread_main () {
+     void thread_main () {
        library_class_b *object_b = new library_class_b;
        shared_object_a.add_b (object_b);   // must hold lock for shared_object_a
        shared_object_a.mutate ();          // must hold lock for shared_object_a
      }
 
      // Multiple copies of thread_main() are started in independent threads.

Under the assumption that object_a and object_b are never exposed to - another thread, here is an example that should not require any + another thread, here is an example that does not require any user-level locks:

-     thread_main () {
+     void thread_main () {
        library_class_a object_a;
        library_class_b *object_b = new library_class_b;
        object_a.add_b (object_b);
        object_a.mutate ();
-     } 

All library objects are safe to use in a multithreaded program as - long as each thread carefully locks out access by any other - thread while it uses any object visible to another thread, i.e., - treat library objects like any other shared resource. In general, - this requirement includes both read and write access to objects; - unless otherwise documented as safe, do not assume that two threads - may access a shared standard library object at the same time. + }

All library types are safe to use in a multithreaded program + if objects are not shared between threads or as + long each thread carefully locks out access by any other + thread while it modifies any object visible to another thread. + Unless otherwise documented, the only exceptions to these rules + are atomic operations on the types in + <atomic> + and lock/unlock operations on the standard mutex types in + <mutex>. These + atomic operations allow concurrent accesses to the same object + without introducing data races. +

The following member functions of standard containers can be + considered to be const for the purposes of avoiding data races: + begin, end, rbegin, rend, + front, back, data, + find, lower_bound, upper_bound, + equal_range, at + and, except in associative or unordered associative containers, + operator[]. In other words, although they are non-const + so that they can return mutable iterators, those member functions + will not modify the container. + Accessing an iterator might cause a non-modifying access to + the container the iterator refers to (for example incrementing a + list iterator must access the pointers between nodes, which are part + of the container and so conflict with other accesses to the container). +

Programs which follow the rules above will not encounter data + races in library code, even when using library types which share + state between distinct objects. In the example below the + shared_ptr objects share a reference count, but + because the code does not perform any non-const operations on the + globally-visible object, the library ensures that the reference + count updates are atomic and do not introduce data races: +

+    std::shared_ptr<int> global_sp;
+
+    void thread_main() {
+      auto local_sp = global_sp;  // OK, copy constructor's parameter is reference-to-const
+
+      int i = *global_sp;         // OK, operator* is const
+      int j = *local_sp;          // OK, does not operate on global_sp
+
+      // *global_sp = 2;          // NOT OK, modifies int visible to other threads      
+      // *local_sp = 2;           // NOT OK, modifies int visible to other threads      
+
+      // global_sp.reset();       // NOT OK, reset is non-const
+      local_sp.reset();           // OK, does not operate on global_sp
+    }
+
+    int main() {
+      global_sp.reset(new int(1));
+      std::thread t1(thread_main);
+      std::thread t2(thread_main);
+      t1.join();
+      t2.join();
+    }
+      

For further details of the C++11 memory model see Hans-J. Boehm's + Threads + and memory model for C++ pages, particularly the introduction + and FAQ.

System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) @@ -275,39 +275,39 @@ is called. . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

Error and Exception Handling . David Abrahams . Boost - .

Standard Library Exception Policy . Matt Austern. WG21 N1077 - .

ia64 c++ abi exception handling . Richard Henderson. GNU - .

GCC Bug 25191: exception_defines.h #defines try/catch diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html index 71fee7de525..db60e432187 100644 --- a/libstdc++-v3/doc/html/manual/using_headers.html +++ b/libstdc++-v3/doc/html/manual/using_headers.html @@ -20,19 +20,19 @@ upcoming 200x standard.

C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. -



+



C++0x include files. These are only available in C++0x compilation mode, i.e. -std=c++0x or -std=gnu++0x. -



+



In addition, TR1 includes as: -



Decimal floating-point arithmetic is available if the C++ +



Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). -


+


Also included are files for the C++ ABI interface: -


+


And a large variety of extensions. -





 Next

If you don't know what functors are, you're not alone. Many people get slightly the wrong idea. In the interest of not reinventing the wheel, we will refer you to the introduction to the functor concept written by SGI as chapter of their STL, in -- cgit v1.2.1 From cb8a60c51b6670e94ea694cc2bae856154cef443 Mon Sep 17 00:00:00 2001 From: bkoz Date: Thu, 3 Nov 2011 22:23:35 +0000 Subject: 2011-11-03 Benjamin Kosnik * doc/doxygen/doxygroups.cc: Add markup for namespace tr2. * include/tr2/bool_set: Adjust doxygen markup. * include/tr2/dynamic_bitset: Same. * include/tr2/type_traits: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180874 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/doc/doxygen/doxygroups.cc | 8 +++++++- libstdc++-v3/include/tr2/bool_set | 22 +++++++++++----------- libstdc++-v3/include/tr2/dynamic_bitset | 22 +++++++++++----------- libstdc++-v3/include/tr2/type_traits | 20 ++++++++++++++++++-- 5 files changed, 54 insertions(+), 25 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index cba43eb7570..c282177c76b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2011-11-03 Benjamin Kosnik + + * doc/doxygen/doxygroups.cc: Add markup for namespace tr2. + * include/tr2/bool_set: Adjust doxygen markup. + * include/tr2/dynamic_bitset: Same. + * include/tr2/type_traits: Same. + 2011-11-03 Benjamin Kosnik * doc/html/*: Regenerate. diff --git a/libstdc++-v3/doc/doxygen/doxygroups.cc b/libstdc++-v3/doc/doxygen/doxygroups.cc index 00175388301..1212b6ff5f0 100644 --- a/libstdc++-v3/doc/doxygen/doxygroups.cc +++ b/libstdc++-v3/doc/doxygen/doxygroups.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010 + Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. See license.html for license. @@ -29,6 +29,12 @@ /** @namespace std::tr1::__detail * @brief Implementation details not part of the namespace std::tr1 interface. */ +/** @namespace std::tr2 + * @brief ISO C++ TR2 entities toplevel namespace is std::tr2. +*/ +/** @namespace std::tr2::__detail + * @brief Implementation details not part of the namespace std::tr2 interface. +*/ /** @namespace __gnu_cxx * @brief GNU extensions for public use. */ diff --git a/libstdc++-v3/include/tr2/bool_set b/libstdc++-v3/include/tr2/bool_set index fe322675991..f577ed0c76c 100644 --- a/libstdc++-v3/include/tr2/bool_set +++ b/libstdc++-v3/include/tr2/bool_set @@ -26,16 +26,6 @@ * This is a TR2 C++ Library header. */ -// -// Sort of an implementation of bool_set in n2136 Hervé Brönnimann, -// Guillaume Melquiond, Sylvain Pion. -// -// The implicit conversion to bool is slippery! I may use the new -// explicit conversion. This has been specialized in the language so -// that in contexts requiring a bool the conversion happens -// implicitly. Thus most objections should be eliminated. -// - #ifndef _GLIBCXX_TR2_BOOL_SET #define _GLIBCXX_TR2_BOOL_SET 1 @@ -50,6 +40,17 @@ namespace tr2 { _GLIBCXX_BEGIN_NAMESPACE_VERSION + /** + * bool_set + * + * See N2136, Bool_set: multi-valued logic + * by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion. + * + * The implicit conversion to bool is slippery! I may use the new + * explicit conversion. This has been specialized in the language + * so that in contexts requiring a bool the conversion happens + * implicitly. Thus most objections should be eliminated. + */ class bool_set { public: @@ -60,7 +61,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Constructor from bool. bool_set(bool __t) : _M_b(_Bool_set_val(__t)) { } - /// // I'm not sure about this. bool contains(bool_set __b) const { return this->is_singleton() && this->equals(__b); } diff --git a/libstdc++-v3/include/tr2/dynamic_bitset b/libstdc++-v3/include/tr2/dynamic_bitset index 5a4b7943bbe..b5c3bf3fcc8 100644 --- a/libstdc++-v3/include/tr2/dynamic_bitset +++ b/libstdc++-v3/include/tr2/dynamic_bitset @@ -120,11 +120,11 @@ public: } void - _M_assign(const __dynamic_bitset_base& __b) + _M_assign(const __dynamic_bitset_base& __b) { this->_M_w = __b._M_w; } void - _M_swap(__dynamic_bitset_base& __b) + _M_swap(__dynamic_bitset_base& __b) { this->_M_w.swap(__b._M_w); } void @@ -178,7 +178,7 @@ public: { return this->_M_w[_M_w.size() - 1]; } void - _M_do_and(const __dynamic_bitset_base& __x) + _M_do_and(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -188,7 +188,7 @@ public: } void - _M_do_or(const __dynamic_bitset_base& __x) + _M_do_or(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -198,7 +198,7 @@ public: } void - _M_do_xor(const __dynamic_bitset_base& __x) + _M_do_xor(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -208,7 +208,7 @@ public: } void - _M_do_dif(const __dynamic_bitset_base& __x) + _M_do_dif(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -245,7 +245,7 @@ public: } bool - _M_is_equal(const __dynamic_bitset_base& __x) const + _M_is_equal(const __dynamic_bitset_base& __x) const { if (__x.size() == this->size()) { @@ -259,7 +259,7 @@ public: } bool - _M_is_less(const __dynamic_bitset_base& __x) const + _M_is_less(const __dynamic_bitset_base& __x) const { if (__x.size() == this->size()) { @@ -296,7 +296,7 @@ public: } bool - _M_is_subset_of(const __dynamic_bitset_base& __b) + _M_is_subset_of(const __dynamic_bitset_base& __b) { if (__b.size() == this->size()) { @@ -310,7 +310,7 @@ public: } bool - _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const + _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const { if (this->is_subset_of(__b)) { @@ -387,7 +387,7 @@ public: this->_M_w[__wshift] = this->_M_w[0] << __offset; } - ////std::fill(this->_M_w.begin(), this->_M_w.begin() + __wshift, + //// std::fill(this->_M_w.begin(), this->_M_w.begin() + __wshift, //// static_cast<_WordT>(0)); } } diff --git a/libstdc++-v3/include/tr2/type_traits b/libstdc++-v3/include/tr2/type_traits index 73edf1137e4..4ec41181047 100644 --- a/libstdc++-v3/include/tr2/type_traits +++ b/libstdc++-v3/include/tr2/type_traits @@ -43,19 +43,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @defgroup metaprogramming Type Traits * @ingroup utilities * - * Compile time type transformation and information. * @{ */ + /** + * See N2965: Type traits and base classes + * by Michael Spertus + */ + + /** + * Simple typelist. Compile-time list of types. + */ template struct typelist; + /// Specialization for an empty typelist. template<> struct typelist<> { typedef std::true_type empty; }; + /// Partial specialization. template struct typelist<_First, _Rest...> { @@ -72,23 +81,30 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; }; - // Sequence abstraction metafunctions default to looking in the type + /// Sequence abstraction metafunctions for manipulating a typelist. + + + /// Return the first type in a typelist. template struct first : public _Tp::first { }; + /// Return the typelist minus the first type. template struct rest : public _Tp::rest { }; + /// Query to see if a typelist is empty. template struct empty : public _Tp::empty { }; + /// Enumerate all the base classes of a class. Form of a typelist. template struct bases { typedef typelist<__bases(_Tp)...> type; }; + /// Enumerate all the direct base classes of a class. Form of a typelist. template struct direct_bases { -- cgit v1.2.1 From 041dc85d3a03d129e9c98f88b5a03cfd4e422b3b Mon Sep 17 00:00:00 2001 From: bkoz Date: Fri, 4 Nov 2011 19:39:23 +0000 Subject: 2011-11-04 Benjamin Kosnik * scripts/run_doxygen: Fix sed quoting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180978 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 4 ++++ libstdc++-v3/scripts/run_doxygen | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c282177c76b..470c0c1f4eb 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2011-11-04 Benjamin Kosnik + + * scripts/run_doxygen: Fix sed quoting. + 2011-11-03 Benjamin Kosnik * doc/doxygen/doxygroups.cc: Add markup for namespace tr2. diff --git a/libstdc++-v3/scripts/run_doxygen b/libstdc++-v3/scripts/run_doxygen index 3fef95f83fb..7b601bce0a8 100644 --- a/libstdc++-v3/scripts/run_doxygen +++ b/libstdc++-v3/scripts/run_doxygen @@ -261,7 +261,7 @@ for f in $problematic; do # this is also slow, but safe and easy to debug oldh=`sed -n '/fC#include .*/\1/p' $f` newh=`echo $oldh | ./stdheader` - sed "s=${oldh}=${newh}=" $f > TEMP + sed 's=${oldh}=${newh}=' $f > TEMP mv TEMP $f done rm stdheader -- cgit v1.2.1 From 5cebcec734bb0881877f4ad700e4a219f6bfc063 Mon Sep 17 00:00:00 2001 From: redi Date: Sat, 5 Nov 2011 13:33:29 +0000 Subject: PR libstdc++/49894 PR bootstrap/50982 * include/std/mutex (once_flag): Use NSDMI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181013 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/include/std/mutex | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 470c0c1f4eb..1d9c379f51b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2011-11-05 Jonathan Wakely + + PR libstdc++/49894 + PR bootstrap/50982 + * include/std/mutex (once_flag): Use NSDMI. + 2011-11-04 Benjamin Kosnik * scripts/run_doxygen: Fix sed quoting. diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index 4d154ff6f0c..321a332e548 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -760,11 +760,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { private: typedef __gthread_once_t __native_type; - __native_type _M_once; + __native_type _M_once = __GTHREAD_ONCE_INIT; public: /// Constructor - constexpr once_flag() noexcept : _M_once(__GTHREAD_ONCE_INIT) { } + constexpr once_flag() noexcept = default; /// Deleted copy constructor once_flag(const once_flag&) = delete; -- cgit v1.2.1 From f9f3749cee59fc48274d4b8fbf346415caa19c17 Mon Sep 17 00:00:00 2001 From: redi Date: Sun, 6 Nov 2011 00:29:36 +0000 Subject: PR libstdc++/44436 * doc/xml/manual/status_cxx200x.xml: Document emplace members are missing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181022 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/doc/xml/manual/status_cxx200x.xml | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1d9c379f51b..bb1d554d34e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2011-11-06 Jonathan Wakely + + PR libstdc++/44436 + * doc/xml/manual/status_cxx200x.xml: Document emplace members are + missing. + 2011-11-05 Jonathan Wakely PR libstdc++/49894 diff --git a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml index 3922dff8307..db4ecb69019 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml @@ -1387,16 +1387,18 @@ particular release. + 23.2.4 Associative containers - Y - + Partial + Missing emplace members + 23.2.5 Unordered associative containers - Y - + Partial + Missing emplace members 23.3 -- cgit v1.2.1 From 96c81d1fcaef659d24617b7f1263f108ee414298 Mon Sep 17 00:00:00 2001 From: redi Date: Sun, 6 Nov 2011 00:51:17 +0000 Subject: * doc/xml/manual/test.xml: Fix dg-warning examples. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181023 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 4 ++++ libstdc++-v3/doc/xml/manual/test.xml | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index bb1d554d34e..3b5ba45f75d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2011-11-06 Jonathan Wakely + + * doc/xml/manual/test.xml: Fix dg-warning examples. + 2011-11-06 Jonathan Wakely PR libstdc++/44436 diff --git a/libstdc++-v3/doc/xml/manual/test.xml b/libstdc++-v3/doc/xml/manual/test.xml index 006ff332086..84664107db3 100644 --- a/libstdc++-v3/doc/xml/manual/test.xml +++ b/libstdc++-v3/doc/xml/manual/test.xml @@ -609,10 +609,10 @@ Example 1: Testing compilation only // { dg-do compile } Example 2: Testing for expected warnings on line 36, which all targets fail -// { dg-warning "string literals" "" { xfail *-*-* } 36 +// { dg-warning "string literals" "" { xfail *-*-* } 36 } Example 3: Testing for expected warnings on line 36 -// { dg-warning "string literals" "" { target *-*-* } 36 +// { dg-warning "string literals" "" { target *-*-* } 36 } Example 4: Testing for compilation errors on line 41 // { dg-do compile } -- cgit v1.2.1 From 1cd6e20de6e40ead3795087811f151f00b06e016 Mon Sep 17 00:00:00 2001 From: amacleod Date: Sun, 6 Nov 2011 14:55:48 +0000 Subject: Check in patch/merge from cxx-mem-model Branch git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181031 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 22 + libstdc++-v3/include/Makefile.am | 2 - libstdc++-v3/include/Makefile.in | 2 - libstdc++-v3/include/bits/atomic_0.h | 677 -------------------- libstdc++-v3/include/bits/atomic_2.h | 685 --------------------- libstdc++-v3/include/bits/atomic_base.h | 675 +++++++++++++++++--- libstdc++-v3/include/std/atomic | 101 ++- libstdc++-v3/src/Makefile.am | 12 +- libstdc++-v3/src/Makefile.in | 18 +- libstdc++-v3/src/atomic.cc | 146 ----- libstdc++-v3/src/compatibility-atomic-c++0x.cc | 158 +++++ .../testsuite/29_atomics/atomic/cons/user_pod.cc | 6 +- .../requirements/explicit_instantiation/1.cc | 2 +- .../testsuite/29_atomics/headers/atomic/macros.cc | 79 ++- 14 files changed, 909 insertions(+), 1676 deletions(-) delete mode 100644 libstdc++-v3/include/bits/atomic_0.h delete mode 100644 libstdc++-v3/include/bits/atomic_2.h delete mode 100644 libstdc++-v3/src/atomic.cc create mode 100644 libstdc++-v3/src/compatibility-atomic-c++0x.cc (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 3b5ba45f75d..dd1bd56d979 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,25 @@ +2011-11-06 Benjamin Kosnik + Andrew MacLeod + + Merged from cxx-mem-model. + + * include/Makefile.am (bits_headers): Remove atomic_0.h, atomic_2.h. + * include/Makefile.in: Regenerate. + * src/Makefile.am (sources): Rename atomic.cc to + compatibility-atomic-c++0x.cc. + * src/Makefile.in: Regenerate. + * include/bits/atomic_0.h: Remove. + * include/bits/atomic_2.h: Incorporate into... + * include/bits/atomic_base.h: ...this. Use new __atomic routines. + * include/std/atomic: Add generic atomic calls to basic atomic class. + * src/atomic.cc: Move... + * src/compatibility-atomic-c++0x.cc: ...here. + * src/compatibility-c++0x.cc: Tweak. + * testsuite/29_atomics/atomic/cons/user_pod.cc: Fix. + * testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc: + Same. + * testsuite/29_atomics/headers/atomic/macros.cc: Same. + 2011-11-06 Jonathan Wakely * doc/xml/manual/test.xml: Fix dg-warning examples. diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index c342528fe46..bc4594db4a3 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -83,8 +83,6 @@ bits_headers = \ ${bits_srcdir}/alloc_traits.h \ ${bits_srcdir}/allocator.h \ ${bits_srcdir}/atomic_base.h \ - ${bits_srcdir}/atomic_0.h \ - ${bits_srcdir}/atomic_2.h \ ${bits_srcdir}/basic_ios.h \ ${bits_srcdir}/basic_ios.tcc \ ${bits_srcdir}/basic_string.h \ diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index 40dfb99c689..3b31e8a2c5d 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -335,8 +335,6 @@ bits_headers = \ ${bits_srcdir}/alloc_traits.h \ ${bits_srcdir}/allocator.h \ ${bits_srcdir}/atomic_base.h \ - ${bits_srcdir}/atomic_0.h \ - ${bits_srcdir}/atomic_2.h \ ${bits_srcdir}/basic_ios.h \ ${bits_srcdir}/basic_ios.tcc \ ${bits_srcdir}/basic_string.h \ diff --git a/libstdc++-v3/include/bits/atomic_0.h b/libstdc++-v3/include/bits/atomic_0.h deleted file mode 100644 index 4f8b0929f16..00000000000 --- a/libstdc++-v3/include/bits/atomic_0.h +++ /dev/null @@ -1,677 +0,0 @@ -// -*- C++ -*- header. - -// Copyright (C) 2008, 2009, 2010, 2011 -// 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. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/atomic_0.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{atomic} - */ - -#ifndef _GLIBCXX_ATOMIC_0_H -#define _GLIBCXX_ATOMIC_0_H 1 - -#pragma GCC system_header - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -// 0 == __atomic0 == Never lock-free -namespace __atomic0 -{ - _GLIBCXX_BEGIN_EXTERN_C - - void - atomic_flag_clear_explicit(__atomic_flag_base*, memory_order) - _GLIBCXX_NOTHROW; - - void - __atomic_flag_wait_explicit(__atomic_flag_base*, memory_order) - _GLIBCXX_NOTHROW; - - _GLIBCXX_CONST __atomic_flag_base* - __atomic_flag_for_address(const volatile void* __z) _GLIBCXX_NOTHROW; - - _GLIBCXX_END_EXTERN_C - - // Implementation specific defines. -#define _ATOMIC_MEMBER_ _M_i - - // Implementation specific defines. -#define _ATOMIC_LOAD_(__a, __x) \ - ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type; \ - __i_type* __p = &_ATOMIC_MEMBER_; \ - __atomic_flag_base* __g = __atomic_flag_for_address(__p); \ - __atomic_flag_wait_explicit(__g, __x); \ - __i_type __r = *__p; \ - atomic_flag_clear_explicit(__g, __x); \ - __r; }) - -#define _ATOMIC_STORE_(__a, __n, __x) \ - ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type; \ - __i_type* __p = &_ATOMIC_MEMBER_; \ - __typeof__(__n) __w = (__n); \ - __atomic_flag_base* __g = __atomic_flag_for_address(__p); \ - __atomic_flag_wait_explicit(__g, __x); \ - *__p = __w; \ - atomic_flag_clear_explicit(__g, __x); \ - __w; }) - -#define _ATOMIC_MODIFY_(__a, __o, __n, __x) \ - ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type; \ - __i_type* __p = &_ATOMIC_MEMBER_; \ - __typeof__(__n) __w = (__n); \ - __atomic_flag_base* __g = __atomic_flag_for_address(__p); \ - __atomic_flag_wait_explicit(__g, __x); \ - __i_type __r = *__p; \ - *__p __o __w; \ - atomic_flag_clear_explicit(__g, __x); \ - __r; }) - -#define _ATOMIC_CMPEXCHNG_(__a, __e, __n, __x) \ - ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type; \ - __i_type* __p = &_ATOMIC_MEMBER_; \ - __typeof__(__e) __q = (__e); \ - __typeof__(__n) __w = (__n); \ - bool __r; \ - __atomic_flag_base* __g = __atomic_flag_for_address(__p); \ - __atomic_flag_wait_explicit(__g, __x); \ - __i_type __t = *__p; \ - if (*__q == __t) \ - { \ - *__p = (__i_type)__w; \ - __r = true; \ - } \ - else { *__q = __t; __r = false; } \ - atomic_flag_clear_explicit(__g, __x); \ - __r; }) - - - /// atomic_flag - struct atomic_flag : public __atomic_flag_base - { - atomic_flag() noexcept = default; - ~atomic_flag() noexcept = default; - atomic_flag(const atomic_flag&) = delete; - atomic_flag& operator=(const atomic_flag&) = delete; - atomic_flag& operator=(const atomic_flag&) volatile = delete; - - // Conversion to ATOMIC_FLAG_INIT. - atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { } - - bool - test_and_set(memory_order __m = memory_order_seq_cst) noexcept; - - bool - test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept; - - void - clear(memory_order __m = memory_order_seq_cst) noexcept; - - void - clear(memory_order __m = memory_order_seq_cst) volatile noexcept; - }; - - - /// Base class for atomic integrals. - // - // For each of the integral types, define atomic_[integral type] struct - // - // atomic_bool bool - // atomic_char char - // atomic_schar signed char - // atomic_uchar unsigned char - // atomic_short short - // atomic_ushort unsigned short - // atomic_int int - // atomic_uint unsigned int - // atomic_long long - // atomic_ulong unsigned long - // atomic_llong long long - // atomic_ullong unsigned long long - // atomic_char16_t char16_t - // atomic_char32_t char32_t - // atomic_wchar_t wchar_t - - // Base type. - // NB: Assuming _ITp is an integral scalar type that is 1, 2, 4, or 8 bytes, - // since that is what GCC built-in functions for atomic memory access work on. - template - struct __atomic_base - { - private: - typedef _ITp __int_type; - - __int_type _M_i; - - public: - __atomic_base() noexcept = default; - ~__atomic_base() noexcept = default; - __atomic_base(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) volatile = delete; - - // Requires __int_type convertible to _M_base._M_i. - constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } - - operator __int_type() const noexcept - { return load(); } - - operator __int_type() const volatile noexcept - { return load(); } - - __int_type - operator=(__int_type __i) noexcept - { - store(__i); - return __i; - } - - __int_type - operator=(__int_type __i) volatile noexcept - { - store(__i); - return __i; - } - - __int_type - operator++(int) noexcept - { return fetch_add(1); } - - __int_type - operator++(int) volatile noexcept - { return fetch_add(1); } - - __int_type - operator--(int) noexcept - { return fetch_sub(1); } - - __int_type - operator--(int) volatile noexcept - { return fetch_sub(1); } - - __int_type - operator++() noexcept - { return fetch_add(1) + 1; } - - __int_type - operator++() volatile noexcept - { return fetch_add(1) + 1; } - - __int_type - operator--() noexcept - { return fetch_sub(1) - 1; } - - __int_type - operator--() volatile noexcept - { return fetch_sub(1) - 1; } - - __int_type - operator+=(__int_type __i) noexcept - { return fetch_add(__i) + __i; } - - __int_type - operator+=(__int_type __i) volatile noexcept - { return fetch_add(__i) + __i; } - - __int_type - operator-=(__int_type __i) noexcept - { return fetch_sub(__i) - __i; } - - __int_type - operator-=(__int_type __i) volatile noexcept - { return fetch_sub(__i) - __i; } - - __int_type - operator&=(__int_type __i) noexcept - { return fetch_and(__i) & __i; } - - __int_type - operator&=(__int_type __i) volatile noexcept - { return fetch_and(__i) & __i; } - - __int_type - operator|=(__int_type __i) noexcept - { return fetch_or(__i) | __i; } - - __int_type - operator|=(__int_type __i) volatile noexcept - { return fetch_or(__i) | __i; } - - __int_type - operator^=(__int_type __i) noexcept - { return fetch_xor(__i) ^ __i; } - - __int_type - operator^=(__int_type __i) volatile noexcept - { return fetch_xor(__i) ^ __i; } - - bool - is_lock_free() const noexcept - { return false; } - - bool - is_lock_free() const volatile noexcept - { return false; } - - void - store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - _ATOMIC_STORE_(this, __i, __m); - } - - void - store(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - _ATOMIC_STORE_(this, __i, __m); - } - - __int_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - return _ATOMIC_LOAD_(this, __m); - } - - __int_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - return _ATOMIC_LOAD_(this, __m); - } - - __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return _ATOMIC_MODIFY_(this, =, __i, __m); } - - __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _ATOMIC_MODIFY_(this, =, __i, __m); } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); - } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); - } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { - return compare_exchange_weak(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return compare_exchange_weak(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { - return compare_exchange_strong(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return compare_exchange_strong(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return _ATOMIC_MODIFY_(this, +=, __i, __m); } - - __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _ATOMIC_MODIFY_(this, +=, __i, __m); } - - __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return _ATOMIC_MODIFY_(this, -=, __i, __m); } - - __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _ATOMIC_MODIFY_(this, -=, __i, __m); } - - __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return _ATOMIC_MODIFY_(this, &=, __i, __m); } - - __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _ATOMIC_MODIFY_(this, &=, __i, __m); } - - __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return _ATOMIC_MODIFY_(this, |=, __i, __m); } - - __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _ATOMIC_MODIFY_(this, |=, __i, __m); } - - __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return _ATOMIC_MODIFY_(this, ^=, __i, __m); } - - __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _ATOMIC_MODIFY_(this, ^=, __i, __m); } - }; - - - /// Partial specialization for pointer types. - template - struct __atomic_base<_PTp*> - { - private: - typedef _PTp* __return_pointer_type; - typedef void* __pointer_type; - __pointer_type _M_i; - - public: - __atomic_base() noexcept = default; - ~__atomic_base() noexcept = default; - __atomic_base(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) volatile = delete; - - // Requires __pointer_type convertible to _M_i. - constexpr __atomic_base(__return_pointer_type __p) noexcept - : _M_i (__p) { } - - operator __return_pointer_type() const noexcept - { return reinterpret_cast<__return_pointer_type>(load()); } - - operator __return_pointer_type() const volatile noexcept - { return reinterpret_cast<__return_pointer_type>(load()); } - - __return_pointer_type - operator=(__pointer_type __p) noexcept - { - store(__p); - return reinterpret_cast<__return_pointer_type>(__p); - } - - __return_pointer_type - operator=(__pointer_type __p) volatile noexcept - { - store(__p); - return reinterpret_cast<__return_pointer_type>(__p); - } - - __return_pointer_type - operator++(int) noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_add(1)); } - - __return_pointer_type - operator++(int) volatile noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_add(1)); } - - __return_pointer_type - operator--(int) noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_sub(1)); } - - __return_pointer_type - operator--(int) volatile noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_sub(1)); } - - __return_pointer_type - operator++() noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_add(1) + 1); } - - __return_pointer_type - operator++() volatile noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_add(1) + 1); } - - __return_pointer_type - operator--() noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_sub(1) - 1); } - - __return_pointer_type - operator--() volatile noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_sub(1) - 1); } - - __return_pointer_type - operator+=(ptrdiff_t __d) noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_add(__d) + __d); } - - __return_pointer_type - operator+=(ptrdiff_t __d) volatile noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_add(__d) + __d); } - - __return_pointer_type - operator-=(ptrdiff_t __d) noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_sub(__d) - __d); } - - __return_pointer_type - operator-=(ptrdiff_t __d) volatile noexcept - { return reinterpret_cast<__return_pointer_type>(fetch_sub(__d) - __d); } - - bool - is_lock_free() const noexcept - { return true; } - - bool - is_lock_free() const volatile noexcept - { return true; } - - void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - _ATOMIC_STORE_(this, __p, __m); - } - - void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - volatile __pointer_type* __p2 = &_M_i; - __typeof__(__p) __w = (__p); - __atomic_flag_base* __g = __atomic_flag_for_address(__p2); - __atomic_flag_wait_explicit(__g, __m); - *__p2 = reinterpret_cast<__pointer_type>(__w); - atomic_flag_clear_explicit(__g, __m); - __w; - } - - __return_pointer_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - void* __v = _ATOMIC_LOAD_(this, __m); - return reinterpret_cast<__return_pointer_type>(__v); - } - - __return_pointer_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - void* __v = _ATOMIC_LOAD_(this, __m); - return reinterpret_cast<__return_pointer_type>(__v); - } - - __return_pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { - void* __v = _ATOMIC_MODIFY_(this, =, __p, __m); - return reinterpret_cast<__return_pointer_type>(__v); - } - - __return_pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - volatile __pointer_type* __p2 = &_M_i; - __typeof__(__p) __w = (__p); - __atomic_flag_base* __g = __atomic_flag_for_address(__p2); - __atomic_flag_wait_explicit(__g, __m); - __pointer_type __r = *__p2; - *__p2 = __w; - atomic_flag_clear_explicit(__g, __m); - __r; - return reinterpret_cast<__return_pointer_type>(_M_i); - } - - bool - compare_exchange_strong(__return_pointer_type& __rp1, __pointer_type __p2, - memory_order __m1, memory_order __m2) noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - __pointer_type& __p1 = reinterpret_cast(__rp1); - return _ATOMIC_CMPEXCHNG_(this, &__p1, __p2, __m1); - } - - bool - compare_exchange_strong(__return_pointer_type& __rp1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - __pointer_type& __p1 = reinterpret_cast(__rp1); - return _ATOMIC_CMPEXCHNG_(this, &__p1, __p2, __m1); - } - - __return_pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { - void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m); - return reinterpret_cast<__return_pointer_type>(__v); - } - - __return_pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m); - return reinterpret_cast<__return_pointer_type>(__v); - } - - __return_pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { - void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m); - return reinterpret_cast<__return_pointer_type>(__v); - } - - __return_pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m); - return reinterpret_cast<__return_pointer_type>(__v); - } - }; - -#undef _ATOMIC_LOAD_ -#undef _ATOMIC_STORE_ -#undef _ATOMIC_MODIFY_ -#undef _ATOMIC_CMPEXCHNG_ -} // namespace __atomic0 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif diff --git a/libstdc++-v3/include/bits/atomic_2.h b/libstdc++-v3/include/bits/atomic_2.h deleted file mode 100644 index 072e82a0a9f..00000000000 --- a/libstdc++-v3/include/bits/atomic_2.h +++ /dev/null @@ -1,685 +0,0 @@ -// -*- C++ -*- header. - -// Copyright (C) 2008, 2009, 2010, 2011 -// 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. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/atomic_2.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{atomic} - */ - -#ifndef _GLIBCXX_ATOMIC_2_H -#define _GLIBCXX_ATOMIC_2_H 1 - -#pragma GCC system_header - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -// 2 == __atomic2 == Always lock-free -// Assumed: -// _GLIBCXX_ATOMIC_BUILTINS_1 -// _GLIBCXX_ATOMIC_BUILTINS_2 -// _GLIBCXX_ATOMIC_BUILTINS_4 -// _GLIBCXX_ATOMIC_BUILTINS_8 -namespace __atomic2 -{ - /// atomic_flag - struct atomic_flag : public __atomic_flag_base - { - atomic_flag() noexcept = default; - ~atomic_flag() noexcept = default; - atomic_flag(const atomic_flag&) = delete; - atomic_flag& operator=(const atomic_flag&) = delete; - atomic_flag& operator=(const atomic_flag&) volatile = delete; - - // Conversion to ATOMIC_FLAG_INIT. - atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { } - - bool - test_and_set(memory_order __m = memory_order_seq_cst) noexcept - { - // Redundant synchronize if built-in for lock is a full barrier. - if (__m != memory_order_acquire && __m != memory_order_acq_rel) - __sync_synchronize(); - return __sync_lock_test_and_set(&_M_i, 1); - } - - bool - test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept - { - // Redundant synchronize if built-in for lock is a full barrier. - if (__m != memory_order_acquire && __m != memory_order_acq_rel) - __sync_synchronize(); - return __sync_lock_test_and_set(&_M_i, 1); - } - - void - clear(memory_order __m = memory_order_seq_cst) noexcept - { - __glibcxx_assert(__m != memory_order_consume); - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - - __sync_lock_release(&_M_i); - if (__m != memory_order_acquire && __m != memory_order_acq_rel) - __sync_synchronize(); - } - - void - clear(memory_order __m = memory_order_seq_cst) volatile noexcept - { - __glibcxx_assert(__m != memory_order_consume); - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - - __sync_lock_release(&_M_i); - if (__m != memory_order_acquire && __m != memory_order_acq_rel) - __sync_synchronize(); - } - }; - - - /// Base class for atomic integrals. - // - // For each of the integral types, define atomic_[integral type] struct - // - // atomic_bool bool - // atomic_char char - // atomic_schar signed char - // atomic_uchar unsigned char - // atomic_short short - // atomic_ushort unsigned short - // atomic_int int - // atomic_uint unsigned int - // atomic_long long - // atomic_ulong unsigned long - // atomic_llong long long - // atomic_ullong unsigned long long - // atomic_char16_t char16_t - // atomic_char32_t char32_t - // atomic_wchar_t wchar_t - // - // NB: Assuming _ITp is an integral scalar type that is 1, 2, 4, or - // 8 bytes, since that is what GCC built-in functions for atomic - // memory access expect. - template - struct __atomic_base - { - private: - typedef _ITp __int_type; - - __int_type _M_i; - - public: - __atomic_base() noexcept = default; - ~__atomic_base() noexcept = default; - __atomic_base(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) volatile = delete; - - // Requires __int_type convertible to _M_i. - constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } - - operator __int_type() const noexcept - { return load(); } - - operator __int_type() const volatile noexcept - { return load(); } - - __int_type - operator=(__int_type __i) noexcept - { - store(__i); - return __i; - } - - __int_type - operator=(__int_type __i) volatile noexcept - { - store(__i); - return __i; - } - - __int_type - operator++(int) noexcept - { return fetch_add(1); } - - __int_type - operator++(int) volatile noexcept - { return fetch_add(1); } - - __int_type - operator--(int) noexcept - { return fetch_sub(1); } - - __int_type - operator--(int) volatile noexcept - { return fetch_sub(1); } - - __int_type - operator++() noexcept - { return __sync_add_and_fetch(&_M_i, 1); } - - __int_type - operator++() volatile noexcept - { return __sync_add_and_fetch(&_M_i, 1); } - - __int_type - operator--() noexcept - { return __sync_sub_and_fetch(&_M_i, 1); } - - __int_type - operator--() volatile noexcept - { return __sync_sub_and_fetch(&_M_i, 1); } - - __int_type - operator+=(__int_type __i) noexcept - { return __sync_add_and_fetch(&_M_i, __i); } - - __int_type - operator+=(__int_type __i) volatile noexcept - { return __sync_add_and_fetch(&_M_i, __i); } - - __int_type - operator-=(__int_type __i) noexcept - { return __sync_sub_and_fetch(&_M_i, __i); } - - __int_type - operator-=(__int_type __i) volatile noexcept - { return __sync_sub_and_fetch(&_M_i, __i); } - - __int_type - operator&=(__int_type __i) noexcept - { return __sync_and_and_fetch(&_M_i, __i); } - - __int_type - operator&=(__int_type __i) volatile noexcept - { return __sync_and_and_fetch(&_M_i, __i); } - - __int_type - operator|=(__int_type __i) noexcept - { return __sync_or_and_fetch(&_M_i, __i); } - - __int_type - operator|=(__int_type __i) volatile noexcept - { return __sync_or_and_fetch(&_M_i, __i); } - - __int_type - operator^=(__int_type __i) noexcept - { return __sync_xor_and_fetch(&_M_i, __i); } - - __int_type - operator^=(__int_type __i) volatile noexcept - { return __sync_xor_and_fetch(&_M_i, __i); } - - bool - is_lock_free() const noexcept - { return true; } - - bool - is_lock_free() const volatile noexcept - { return true; } - - void - store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - - if (__m == memory_order_relaxed) - _M_i = __i; - else - { - // write_mem_barrier(); - _M_i = __i; - if (__m == memory_order_seq_cst) - __sync_synchronize(); - } - } - - void - store(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - - if (__m == memory_order_relaxed) - _M_i = __i; - else - { - // write_mem_barrier(); - _M_i = __i; - if (__m == memory_order_seq_cst) - __sync_synchronize(); - } - } - - __int_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - - __sync_synchronize(); - __int_type __ret = _M_i; - __sync_synchronize(); - return __ret; - } - - __int_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - - __sync_synchronize(); - __int_type __ret = _M_i; - __sync_synchronize(); - return __ret; - } - - __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { - // XXX built-in assumes memory_order_acquire. - return __sync_lock_test_and_set(&_M_i, __i); - } - - - __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - // XXX built-in assumes memory_order_acquire. - return __sync_lock_test_and_set(&_M_i, __i); - } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { return compare_exchange_strong(__i1, __i2, __m1, __m2); } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept - { return compare_exchange_strong(__i1, __i2, __m1, __m2); } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { - return compare_exchange_weak(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return compare_exchange_weak(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - - __int_type __i1o = __i1; - __int_type __i1n = __sync_val_compare_and_swap(&_M_i, __i1o, __i2); - - // Assume extra stores (of same value) allowed in true case. - __i1 = __i1n; - return __i1o == __i1n; - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - - __int_type __i1o = __i1; - __int_type __i1n = __sync_val_compare_and_swap(&_M_i, __i1o, __i2); - - // Assume extra stores (of same value) allowed in true case. - __i1 = __i1n; - return __i1o == __i1n; - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { - return compare_exchange_strong(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return compare_exchange_strong(__i1, __i2, __m, - __calculate_memory_order(__m)); - } - - __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __sync_fetch_and_add(&_M_i, __i); } - - __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __sync_fetch_and_add(&_M_i, __i); } - - __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __sync_fetch_and_sub(&_M_i, __i); } - - __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __sync_fetch_and_sub(&_M_i, __i); } - - __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __sync_fetch_and_and(&_M_i, __i); } - - __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __sync_fetch_and_and(&_M_i, __i); } - - __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __sync_fetch_and_or(&_M_i, __i); } - - __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __sync_fetch_and_or(&_M_i, __i); } - - __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __sync_fetch_and_xor(&_M_i, __i); } - - __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __sync_fetch_and_xor(&_M_i, __i); } - }; - - - /// Partial specialization for pointer types. - template - struct __atomic_base<_PTp*> - { - private: - typedef _PTp* __pointer_type; - - __pointer_type _M_p; - - public: - __atomic_base() noexcept = default; - ~__atomic_base() noexcept = default; - __atomic_base(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) volatile = delete; - - // Requires __pointer_type convertible to _M_p. - constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } - - operator __pointer_type() const noexcept - { return load(); } - - operator __pointer_type() const volatile noexcept - { return load(); } - - __pointer_type - operator=(__pointer_type __p) noexcept - { - store(__p); - return __p; - } - - __pointer_type - operator=(__pointer_type __p) volatile noexcept - { - store(__p); - return __p; - } - - __pointer_type - operator++(int) noexcept - { return fetch_add(1); } - - __pointer_type - operator++(int) volatile noexcept - { return fetch_add(1); } - - __pointer_type - operator--(int) noexcept - { return fetch_sub(1); } - - __pointer_type - operator--(int) volatile noexcept - { return fetch_sub(1); } - - __pointer_type - operator++() noexcept - { return fetch_add(1) + 1; } - - __pointer_type - operator++() volatile noexcept - { return fetch_add(1) + 1; } - - __pointer_type - operator--() noexcept - { return fetch_sub(1) -1; } - - __pointer_type - operator--() volatile noexcept - { return fetch_sub(1) -1; } - - __pointer_type - operator+=(ptrdiff_t __d) noexcept - { return fetch_add(__d) + __d; } - - __pointer_type - operator+=(ptrdiff_t __d) volatile noexcept - { return fetch_add(__d) + __d; } - - __pointer_type - operator-=(ptrdiff_t __d) noexcept - { return fetch_sub(__d) - __d; } - - __pointer_type - operator-=(ptrdiff_t __d) volatile noexcept - { return fetch_sub(__d) - __d; } - - bool - is_lock_free() const noexcept - { return true; } - - bool - is_lock_free() const volatile noexcept - { return true; } - - void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - - if (__m == memory_order_relaxed) - _M_p = __p; - else - { - // write_mem_barrier(); - _M_p = __p; - if (__m == memory_order_seq_cst) - __sync_synchronize(); - } - } - - void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - __glibcxx_assert(__m != memory_order_acquire); - __glibcxx_assert(__m != memory_order_acq_rel); - __glibcxx_assert(__m != memory_order_consume); - - if (__m == memory_order_relaxed) - _M_p = __p; - else - { - // write_mem_barrier(); - _M_p = __p; - if (__m == memory_order_seq_cst) - __sync_synchronize(); - } - } - - __pointer_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - - __sync_synchronize(); - __pointer_type __ret = _M_p; - __sync_synchronize(); - return __ret; - } - - __pointer_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - __glibcxx_assert(__m != memory_order_release); - __glibcxx_assert(__m != memory_order_acq_rel); - - __sync_synchronize(); - __pointer_type __ret = _M_p; - __sync_synchronize(); - return __ret; - } - - __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { - // XXX built-in assumes memory_order_acquire. - return __sync_lock_test_and_set(&_M_p, __p); - } - - - __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - // XXX built-in assumes memory_order_acquire. - return __sync_lock_test_and_set(&_M_p, __p); - } - - bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - - __pointer_type __p1o = __p1; - __pointer_type __p1n = __sync_val_compare_and_swap(&_M_p, __p1o, __p2); - - // Assume extra stores (of same value) allowed in true case. - __p1 = __p1n; - return __p1o == __p1n; - } - - bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept - { - __glibcxx_assert(__m2 != memory_order_release); - __glibcxx_assert(__m2 != memory_order_acq_rel); - __glibcxx_assert(__m2 <= __m1); - - __pointer_type __p1o = __p1; - __pointer_type __p1n = __sync_val_compare_and_swap(&_M_p, __p1o, __p2); - - // Assume extra stores (of same value) allowed in true case. - __p1 = __p1n; - return __p1o == __p1n; - } - - __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return __sync_fetch_and_add(&_M_p, __d); } - - __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __sync_fetch_and_add(&_M_p, __d); } - - __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return __sync_fetch_and_sub(&_M_p, __d); } - - __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __sync_fetch_and_sub(&_M_p, __d); } - }; - -} // namespace __atomic2 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index ebb7d58ac72..2e4a6a1894a 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -83,86 +83,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __ret; } - /** - * @brief Base type for atomic_flag. - * - * Base type is POD with data, allowing atomic_flag to derive from - * it and meet the standard layout type requirement. In addition to - * compatibilty with a C interface, this allows different - * implementations of atomic_flag to use the same atomic operation - * functions, via a standard conversion to the __atomic_flag_base - * argument. - */ - _GLIBCXX_BEGIN_EXTERN_C + /// Lock-free Property - struct __atomic_flag_base - { - bool _M_i; - }; +#define LOCKFREE_PROP(T) (__atomic_always_lock_free (sizeof (T), 0) ? 2 : 1) - _GLIBCXX_END_EXTERN_C - -#define ATOMIC_FLAG_INIT { false } +#define ATOMIC_CHAR_LOCK_FREE LOCKFREE_PROP (char) +#define ATOMIC_CHAR16_T_LOCK_FREE LOCKFREE_PROP (char16_t) +#define ATOMIC_CHAR32_T_LOCK_FREE LOCKFREE_PROP (char32_t) +#define ATOMIC_WCHAR_T_LOCK_FREE LOCKFREE_PROP (wchar_t) +#define ATOMIC_SHORT_LOCK_FREE LOCKFREE_PROP (short) +#define ATOMIC_INT_LOCK_FREE LOCKFREE_PROP (int) +#define ATOMIC_LONG_LOCK_FREE LOCKFREE_PROP (long) +#define ATOMIC_LLONG_LOCK_FREE LOCKFREE_PROP (long long) // Base types for atomics. - // - // Three nested namespaces for atomic implementation details. - // - // The nested namespace inlined into std:: is determined by the value - // of the _GLIBCXX_ATOMIC_PROPERTY macro and the resulting - // ATOMIC_*_LOCK_FREE macros. - // - // 0 == __atomic0 == Never lock-free - // 1 == __atomic1 == Best available, sometimes lock-free - // 2 == __atomic2 == Always lock-free - - namespace __atomic0 - { - struct atomic_flag; - - template - struct __atomic_base; - } - - namespace __atomic2 - { - struct atomic_flag; - - template - struct __atomic_base; - } - - namespace __atomic1 - { - using __atomic2::atomic_flag; - using __atomic0::__atomic_base; - } - - /// Lock-free Property -#if defined(_GLIBCXX_ATOMIC_BUILTINS_1) && defined(_GLIBCXX_ATOMIC_BUILTINS_2) \ - && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_ATOMIC_BUILTINS_8) -# define _GLIBCXX_ATOMIC_PROPERTY 2 -# define _GLIBCXX_ATOMIC_NAMESPACE __atomic2 -#elif defined(_GLIBCXX_ATOMIC_BUILTINS_1) -# define _GLIBCXX_ATOMIC_PROPERTY 1 -# define _GLIBCXX_ATOMIC_NAMESPACE __atomic1 -#else -# define _GLIBCXX_ATOMIC_PROPERTY 0 -# define _GLIBCXX_ATOMIC_NAMESPACE __atomic0 -#endif - -#define ATOMIC_CHAR_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY -#define ATOMIC_CHAR16_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY -#define ATOMIC_CHAR32_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY -#define ATOMIC_WCHAR_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY -#define ATOMIC_SHORT_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY -#define ATOMIC_INT_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY -#define ATOMIC_LONG_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY -#define ATOMIC_LLONG_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY - - inline namespace _GLIBCXX_ATOMIC_NAMESPACE { } - + template + struct __atomic_base; /// atomic_char typedef __atomic_base atomic_char; @@ -287,6 +224,594 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct atomic<_Tp*>; + + /** + * @brief Base type for atomic_flag. + * + * Base type is POD with data, allowing atomic_flag to derive from + * it and meet the standard layout type requirement. In addition to + * compatibilty with a C interface, this allows different + * implementations of atomic_flag to use the same atomic operation + * functions, via a standard conversion to the __atomic_flag_base + * argument. + */ + _GLIBCXX_BEGIN_EXTERN_C + + struct __atomic_flag_base + { + bool _M_i; + }; + + _GLIBCXX_END_EXTERN_C + +#define ATOMIC_FLAG_INIT { false } + + /// atomic_flag + struct atomic_flag : public __atomic_flag_base + { + atomic_flag() noexcept = default; + ~atomic_flag() noexcept = default; + atomic_flag(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) volatile = delete; + + // Conversion to ATOMIC_FLAG_INIT. + atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { } + + bool + test_and_set(memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_exchange_n(&_M_i, 1, __m); + } + + bool + test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_exchange_n(&_M_i, 1, __m); + } + + void + clear(memory_order __m = memory_order_seq_cst) noexcept + { + __glibcxx_assert(__m != memory_order_consume); + __glibcxx_assert(__m != memory_order_acquire); + __glibcxx_assert(__m != memory_order_acq_rel); + + __atomic_store_n(&_M_i, 0, __m); + } + + void + clear(memory_order __m = memory_order_seq_cst) volatile noexcept + { + __glibcxx_assert(__m != memory_order_consume); + __glibcxx_assert(__m != memory_order_acquire); + __glibcxx_assert(__m != memory_order_acq_rel); + + __atomic_store_n(&_M_i, 0, __m); + } + }; + + + /// Base class for atomic integrals. + // + // For each of the integral types, define atomic_[integral type] struct + // + // atomic_bool bool + // atomic_char char + // atomic_schar signed char + // atomic_uchar unsigned char + // atomic_short short + // atomic_ushort unsigned short + // atomic_int int + // atomic_uint unsigned int + // atomic_long long + // atomic_ulong unsigned long + // atomic_llong long long + // atomic_ullong unsigned long long + // atomic_char16_t char16_t + // atomic_char32_t char32_t + // atomic_wchar_t wchar_t + // + // NB: Assuming _ITp is an integral scalar type that is 1, 2, 4, or + // 8 bytes, since that is what GCC built-in functions for atomic + // memory access expect. + template + struct __atomic_base + { + private: + typedef _ITp __int_type; + + __int_type _M_i; + + public: + __atomic_base() noexcept = default; + ~__atomic_base() noexcept = default; + __atomic_base(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) volatile = delete; + + // Requires __int_type convertible to _M_i. + constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } + + operator __int_type() const noexcept + { return load(); } + + operator __int_type() const volatile noexcept + { return load(); } + + __int_type + operator=(__int_type __i) noexcept + { + store(__i); + return __i; + } + + __int_type + operator=(__int_type __i) volatile noexcept + { + store(__i); + return __i; + } + + __int_type + operator++(int) noexcept + { return fetch_add(1); } + + __int_type + operator++(int) volatile noexcept + { return fetch_add(1); } + + __int_type + operator--(int) noexcept + { return fetch_sub(1); } + + __int_type + operator--(int) volatile noexcept + { return fetch_sub(1); } + + __int_type + operator++() noexcept + { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator++() volatile noexcept + { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator--() noexcept + { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator--() volatile noexcept + { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator+=(__int_type __i) noexcept + { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator+=(__int_type __i) volatile noexcept + { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator-=(__int_type __i) noexcept + { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator-=(__int_type __i) volatile noexcept + { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator&=(__int_type __i) noexcept + { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator&=(__int_type __i) volatile noexcept + { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator|=(__int_type __i) noexcept + { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator|=(__int_type __i) volatile noexcept + { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator^=(__int_type __i) noexcept + { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator^=(__int_type __i) volatile noexcept + { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + + bool + is_lock_free() const noexcept + { return __atomic_is_lock_free (sizeof (_M_i), &_M_i); } + + bool + is_lock_free() const volatile noexcept + { return __atomic_is_lock_free (sizeof (_M_i), &_M_i); } + + void + store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept + { + __glibcxx_assert(__m != memory_order_acquire); + __glibcxx_assert(__m != memory_order_acq_rel); + __glibcxx_assert(__m != memory_order_consume); + + __atomic_store_n(&_M_i, __i, __m); + } + + void + store(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + __glibcxx_assert(__m != memory_order_acquire); + __glibcxx_assert(__m != memory_order_acq_rel); + __glibcxx_assert(__m != memory_order_consume); + + __atomic_store_n(&_M_i, __i, __m); + } + + __int_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { + __glibcxx_assert(__m != memory_order_release); + __glibcxx_assert(__m != memory_order_acq_rel); + + return __atomic_load_n(&_M_i, __m); + } + + __int_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { + __glibcxx_assert(__m != memory_order_release); + __glibcxx_assert(__m != memory_order_acq_rel); + + return __atomic_load_n(&_M_i, __m); + } + + __int_type + exchange(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_exchange_n(&_M_i, __i, __m); + } + + + __int_type + exchange(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_exchange_n(&_M_i, __i, __m); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m1, memory_order __m2) noexcept + { + __glibcxx_assert(__m2 != memory_order_release); + __glibcxx_assert(__m2 != memory_order_acq_rel); + __glibcxx_assert(__m2 <= __m1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + __glibcxx_assert(__m2 != memory_order_release); + __glibcxx_assert(__m2 != memory_order_acq_rel); + __glibcxx_assert(__m2 <= __m1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_weak(__i1, __i2, __m, + __calculate_memory_order(__m)); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_weak(__i1, __i2, __m, + __calculate_memory_order(__m)); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m1, memory_order __m2) noexcept + { + __glibcxx_assert(__m2 != memory_order_release); + __glibcxx_assert(__m2 != memory_order_acq_rel); + __glibcxx_assert(__m2 <= __m1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + __glibcxx_assert(__m2 != memory_order_release); + __glibcxx_assert(__m2 != memory_order_acq_rel); + __glibcxx_assert(__m2 <= __m1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_strong(__i1, __i2, __m, + __calculate_memory_order(__m)); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_strong(__i1, __i2, __m, + __calculate_memory_order(__m)); + } + + __int_type + fetch_add(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_add(&_M_i, __i, __m); } + + __int_type + fetch_add(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_add(&_M_i, __i, __m); } + + __int_type + fetch_sub(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_sub(&_M_i, __i, __m); } + + __int_type + fetch_sub(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_sub(&_M_i, __i, __m); } + + __int_type + fetch_and(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_and(&_M_i, __i, __m); } + + __int_type + fetch_and(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_and(&_M_i, __i, __m); } + + __int_type + fetch_or(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_or(&_M_i, __i, __m); } + + __int_type + fetch_or(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_or(&_M_i, __i, __m); } + + __int_type + fetch_xor(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_xor(&_M_i, __i, __m); } + + __int_type + fetch_xor(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_xor(&_M_i, __i, __m); } + }; + + + /// Partial specialization for pointer types. + template + struct __atomic_base<_PTp*> + { + private: + typedef _PTp* __pointer_type; + + __pointer_type _M_p; + + public: + __atomic_base() noexcept = default; + ~__atomic_base() noexcept = default; + __atomic_base(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) volatile = delete; + + // Requires __pointer_type convertible to _M_p. + constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } + + operator __pointer_type() const noexcept + { return load(); } + + operator __pointer_type() const volatile noexcept + { return load(); } + + __pointer_type + operator=(__pointer_type __p) noexcept + { + store(__p); + return __p; + } + + __pointer_type + operator=(__pointer_type __p) volatile noexcept + { + store(__p); + return __p; + } + + __pointer_type + operator++(int) noexcept + { return fetch_add(1); } + + __pointer_type + operator++(int) volatile noexcept + { return fetch_add(1); } + + __pointer_type + operator--(int) noexcept + { return fetch_sub(1); } + + __pointer_type + operator--(int) volatile noexcept + { return fetch_sub(1); } + + __pointer_type + operator++() noexcept + { return __atomic_add_fetch(&_M_p, 1, memory_order_seq_cst); } + + __pointer_type + operator++() volatile noexcept + { return __atomic_add_fetch(&_M_p, 1, memory_order_seq_cst); } + + __pointer_type + operator--() noexcept + { return __atomic_sub_fetch(&_M_p, 1, memory_order_seq_cst); } + + __pointer_type + operator--() volatile noexcept + { return __atomic_sub_fetch(&_M_p, 1, memory_order_seq_cst); } + + __pointer_type + operator+=(ptrdiff_t __d) noexcept + { return __atomic_add_fetch(&_M_p, __d, memory_order_seq_cst); } + + __pointer_type + operator+=(ptrdiff_t __d) volatile noexcept + { return __atomic_add_fetch(&_M_p, __d, memory_order_seq_cst); } + + __pointer_type + operator-=(ptrdiff_t __d) noexcept + { return __atomic_sub_fetch(&_M_p, __d, memory_order_seq_cst); } + + __pointer_type + operator-=(ptrdiff_t __d) volatile noexcept + { return __atomic_sub_fetch(&_M_p, __d, memory_order_seq_cst); } + + bool + is_lock_free() const noexcept + { return __atomic_is_lock_free (sizeof (_M_p), &_M_p); } + + bool + is_lock_free() const volatile noexcept + { return __atomic_is_lock_free (sizeof (_M_p), &_M_p); } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { + __glibcxx_assert(__m != memory_order_acquire); + __glibcxx_assert(__m != memory_order_acq_rel); + __glibcxx_assert(__m != memory_order_consume); + + __atomic_store_n(&_M_p, __p, __m); + } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + __glibcxx_assert(__m != memory_order_acquire); + __glibcxx_assert(__m != memory_order_acq_rel); + __glibcxx_assert(__m != memory_order_consume); + + __atomic_store_n(&_M_p, __p, __m); + } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { + __glibcxx_assert(__m != memory_order_release); + __glibcxx_assert(__m != memory_order_acq_rel); + + return __atomic_load_n(&_M_p, __m); + } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { + __glibcxx_assert(__m != memory_order_release); + __glibcxx_assert(__m != memory_order_acq_rel); + + return __atomic_load_n(&_M_p, __m); + } + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_exchange_n(&_M_p, __p, __m); + } + + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_exchange_n(&_M_p, __p, __m); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) noexcept + { + __glibcxx_assert(__m2 != memory_order_release); + __glibcxx_assert(__m2 != memory_order_acq_rel); + __glibcxx_assert(__m2 <= __m1); + + return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + __glibcxx_assert(__m2 != memory_order_release); + __glibcxx_assert(__m2 != memory_order_acq_rel); + __glibcxx_assert(__m2 <= __m1); + + return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); + } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_add(&_M_p, __d, __m); } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_add(&_M_p, __d, __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_sub(&_M_p, __d, __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_sub(&_M_p, __d, __m); } + }; + // @} group atomics _GLIBCXX_END_NAMESPACE_VERSION diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic index b3fa7d8120b..70f613f5c50 100644 --- a/libstdc++-v3/include/std/atomic +++ b/libstdc++-v3/include/std/atomic @@ -39,8 +39,6 @@ #endif #include -#include -#include namespace std _GLIBCXX_VISIBILITY(default) { @@ -167,69 +165,116 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr atomic(_Tp __i) noexcept : _M_i(__i) { } - operator _Tp() const noexcept; + operator _Tp() const noexcept + { return load(); } - operator _Tp() const volatile noexcept; + operator _Tp() const volatile noexcept + { return load(); } _Tp - operator=(_Tp __i) noexcept { store(__i); return __i; } + operator=(_Tp __i) noexcept + { store(__i); return __i; } _Tp - operator=(_Tp __i) volatile noexcept { store(__i); return __i; } + operator=(_Tp __i) volatile noexcept + { store(__i); return __i; } bool - is_lock_free() const noexcept; + is_lock_free() const noexcept + { return __atomic_is_lock_free(sizeof(_M_i), &_M_i); } bool - is_lock_free() const volatile noexcept; + is_lock_free() const volatile noexcept + { return __atomic_is_lock_free(sizeof(_M_i), &_M_i); } void - store(_Tp, memory_order = memory_order_seq_cst) noexcept; + store(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept + { __atomic_store(&_M_i, &__i, _m); } void - store(_Tp, memory_order = memory_order_seq_cst) volatile noexcept; + store(_Tp __i, memory_order _m = memory_order_seq_cst) volatile noexcept + { __atomic_store(&_M_i, &__i, _m); } _Tp - load(memory_order = memory_order_seq_cst) const noexcept; + load(memory_order _m = memory_order_seq_cst) const noexcept + { + _Tp tmp; + __atomic_load(&_M_i, &tmp, _m); + return tmp; + } _Tp - load(memory_order = memory_order_seq_cst) const volatile noexcept; + load(memory_order _m = memory_order_seq_cst) const volatile noexcept + { + _Tp tmp; + __atomic_load(&_M_i, &tmp, _m); + return tmp; + } _Tp - exchange(_Tp __i, memory_order = memory_order_seq_cst) noexcept; + exchange(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept + { + _Tp tmp; + __atomic_exchange(&_M_i, &__i, &tmp, _m); + return tmp; + } _Tp - exchange(_Tp __i, memory_order = memory_order_seq_cst) volatile noexcept; + exchange(_Tp __i, + memory_order _m = memory_order_seq_cst) volatile noexcept + { + _Tp tmp; + __atomic_exchange(&_M_i, &__i, &tmp, _m); + return tmp; + } bool - compare_exchange_weak(_Tp&, _Tp, memory_order, memory_order) noexcept; + compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); + } bool - compare_exchange_weak(_Tp&, _Tp, memory_order, - memory_order) volatile noexcept; + compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) volatile noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); + } bool - compare_exchange_weak(_Tp&, _Tp, - memory_order = memory_order_seq_cst) noexcept; + compare_exchange_weak(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) noexcept + { return compare_exchange_weak(__e, __i, __m, __m); } bool - compare_exchange_weak(_Tp&, _Tp, - memory_order = memory_order_seq_cst) volatile noexcept; + compare_exchange_weak(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return compare_exchange_weak(__e, __i, __m, __m); } bool - compare_exchange_strong(_Tp&, _Tp, memory_order, memory_order) noexcept; + compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); + } bool - compare_exchange_strong(_Tp&, _Tp, memory_order, - memory_order) volatile noexcept; + compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) volatile noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); + } bool - compare_exchange_strong(_Tp&, _Tp, - memory_order = memory_order_seq_cst) noexcept; + compare_exchange_strong(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) noexcept + { return compare_exchange_strong(__e, __i, __m, __m); } bool - compare_exchange_strong(_Tp&, _Tp, - memory_order = memory_order_seq_cst) volatile noexcept; + compare_exchange_strong(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return compare_exchange_strong(__e, __i, __m, __m); } }; diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 5a6cb970822..eefa6e269a0 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -190,13 +190,13 @@ endif # Sources present in the src directory, always present. sources = \ - atomic.cc \ bitmap_allocator.cc \ pool_allocator.cc \ mt_allocator.cc \ codecvt.cc \ compatibility.cc \ compatibility-c++0x.cc \ + compatibility-atomic-c++0x.cc \ compatibility-debug_list.cc \ compatibility-debug_list-2.cc \ compatibility-list.cc \ @@ -323,6 +323,11 @@ compatibility-c++0x.lo: compatibility-c++0x.cc compatibility-c++0x.o: compatibility-c++0x.cc $(CXXCOMPILE) -std=gnu++0x -c $< +compatibility-atomic-c++0x.lo: compatibility-atomic-c++0x.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +compatibility-atomic-c++0x.o: compatibility-atomic-c++0x.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + functional.lo: functional.cc $(LTCXXCOMPILE) -std=gnu++0x -c $< functional.o: functional.cc @@ -343,11 +348,6 @@ limits.lo: limits.cc limits.o: limits.cc $(CXXCOMPILE) -std=gnu++0x -c $< -atomic.lo: atomic.cc - $(LTCXXCOMPILE) -std=gnu++0x -c $< -atomic.o: atomic.cc - $(CXXCOMPILE) -std=gnu++0x -c $< - fstream-inst.lo: fstream-inst.cc $(LTCXXCOMPILE) -std=gnu++0x -c $< fstream-inst.o: fstream-inst.cc diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index c52e5c4df61..4b2646e4a05 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -105,9 +105,9 @@ am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \ @ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.lo am__objects_5 = basic_file.lo c++locale.lo $(am__objects_2) \ $(am__objects_3) $(am__objects_4) -am__objects_6 = atomic.lo bitmap_allocator.lo pool_allocator.lo \ - mt_allocator.lo codecvt.lo compatibility.lo \ - compatibility-c++0x.lo compatibility-debug_list.lo \ +am__objects_6 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \ + codecvt.lo compatibility.lo compatibility-c++0x.lo \ + compatibility-atomic-c++0x.lo compatibility-debug_list.lo \ compatibility-debug_list-2.lo compatibility-list.lo \ compatibility-list-2.lo complex_io.lo ctype.lo debug.lo \ functexcept.lo functional.lo globals_io.lo hash_c++0x.lo \ @@ -407,13 +407,13 @@ host_sources_extra = \ # Sources present in the src directory, always present. sources = \ - atomic.cc \ bitmap_allocator.cc \ pool_allocator.cc \ mt_allocator.cc \ codecvt.cc \ compatibility.cc \ compatibility-c++0x.cc \ + compatibility-atomic-c++0x.cc \ compatibility-debug_list.cc \ compatibility-debug_list-2.cc \ compatibility-list.cc \ @@ -917,6 +917,11 @@ compatibility-c++0x.lo: compatibility-c++0x.cc compatibility-c++0x.o: compatibility-c++0x.cc $(CXXCOMPILE) -std=gnu++0x -c $< +compatibility-atomic-c++0x.lo: compatibility-atomic-c++0x.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +compatibility-atomic-c++0x.o: compatibility-atomic-c++0x.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + functional.lo: functional.cc $(LTCXXCOMPILE) -std=gnu++0x -c $< functional.o: functional.cc @@ -937,11 +942,6 @@ limits.lo: limits.cc limits.o: limits.cc $(CXXCOMPILE) -std=gnu++0x -c $< -atomic.lo: atomic.cc - $(LTCXXCOMPILE) -std=gnu++0x -c $< -atomic.o: atomic.cc - $(CXXCOMPILE) -std=gnu++0x -c $< - fstream-inst.lo: fstream-inst.cc $(LTCXXCOMPILE) -std=gnu++0x -c $< fstream-inst.o: fstream-inst.cc diff --git a/libstdc++-v3/src/atomic.cc b/libstdc++-v3/src/atomic.cc deleted file mode 100644 index 5752d39feed..00000000000 --- a/libstdc++-v3/src/atomic.cc +++ /dev/null @@ -1,146 +0,0 @@ -// Support for atomic operations -*- C++ -*- - -// Copyright (C) 2008, 2009, 2010, 2011 -// 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. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -#include "gstdint.h" -#include -#include - -#define LOGSIZE 4 - -namespace -{ -#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) - std::mutex& - get_atomic_mutex() - { - static std::mutex atomic_mutex; - return atomic_mutex; - } -#endif - - std::__atomic_flag_base flag_table[ 1 << LOGSIZE ] = - { - ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, - ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, - ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, - ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, - }; -} // anonymous namespace - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - namespace __atomic0 - { - bool - atomic_flag::test_and_set(memory_order) noexcept - { -#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) - lock_guard __lock(get_atomic_mutex()); -#endif - bool result = _M_i; - _M_i = true; - return result; - } - - void - atomic_flag::clear(memory_order) noexcept - { -#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) - lock_guard __lock(get_atomic_mutex()); -#endif - _M_i = false; - } - - _GLIBCXX_BEGIN_EXTERN_C - - bool - atomic_flag_test_and_set_explicit(__atomic_flag_base* __a, - memory_order __m) _GLIBCXX_NOTHROW - { - atomic_flag* d = static_cast(__a); - return d->test_and_set(__m); - } - - void - atomic_flag_clear_explicit(__atomic_flag_base* __a, - memory_order __m) _GLIBCXX_NOTHROW - { - atomic_flag* d = static_cast(__a); - return d->clear(__m); - } - - void - __atomic_flag_wait_explicit(__atomic_flag_base* __a, - memory_order __x) _GLIBCXX_NOTHROW - { - while (atomic_flag_test_and_set_explicit(__a, __x)) - { }; - } - - _GLIBCXX_CONST __atomic_flag_base* - __atomic_flag_for_address(const volatile void* __z) _GLIBCXX_NOTHROW - { - uintptr_t __u = reinterpret_cast(__z); - __u += (__u >> 2) + (__u << 4); - __u += (__u >> 7) + (__u << 5); - __u += (__u >> 17) + (__u << 13); - if (sizeof(uintptr_t) > 4) - __u += (__u >> 31); - __u &= ~((~uintptr_t(0)) << LOGSIZE); - return flag_table + __u; - } - - _GLIBCXX_END_EXTERN_C - - } // namespace __atomic0 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - - -// XXX GLIBCXX_ABI Deprecated -// gcc-4.5.0 -// signature changes - -// The rename syntax for default exported names is -// asm (".symver name1,exportedname@GLIBCXX_3.4") -// asm (".symver name2,exportedname@@GLIBCXX_3.4.5") -// In the future, GLIBCXX_ABI > 6 should remove all uses of -// _GLIBCXX_*_SYMVER macros in this file. - -#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ - && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ - && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) - -#define _GLIBCXX_ASM_SYMVER(cur, old, version) \ - asm (".symver " #cur "," #old "@@" #version); - -_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag5clearESt12memory_order, _ZNVSt9__atomic011atomic_flag5clearESt12memory_order, GLIBCXX_3.4.11) - -_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order, _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order, GLIBCXX_3.4.11) - -#endif diff --git a/libstdc++-v3/src/compatibility-atomic-c++0x.cc b/libstdc++-v3/src/compatibility-atomic-c++0x.cc new file mode 100644 index 00000000000..1ee0d7e35a8 --- /dev/null +++ b/libstdc++-v3/src/compatibility-atomic-c++0x.cc @@ -0,0 +1,158 @@ +// compatibility -*- C++ -*- + +// Copyright (C) 2008, 2009, 2010, 2011 +// 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +#include "gstdint.h" +#include +#include + +// XXX GLIBCXX_ABI Deprecated +// gcc-4.7.0 + +#define LOGSIZE 4 + +namespace +{ +#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) + std::mutex& + get_atomic_mutex() + { + static std::mutex atomic_mutex; + return atomic_mutex; + } +#endif + + std::__atomic_flag_base flag_table[ 1 << LOGSIZE ] = + { + ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, + ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, + ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, + ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, + }; +} // anonymous namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + namespace __atomic0 + { + + struct atomic_flag : public __atomic_flag_base + { + bool + test_and_set(memory_order) noexcept; + + void + clear(memory_order) noexcept; + }; + + bool + atomic_flag::test_and_set(memory_order) noexcept + { +#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) + lock_guard __lock(get_atomic_mutex()); +#endif + bool result = _M_i; + _M_i = true; + return result; + } + + void + atomic_flag::clear(memory_order) noexcept + { +#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) + lock_guard __lock(get_atomic_mutex()); +#endif + _M_i = false; + } + } // namespace __atomic0 + + _GLIBCXX_BEGIN_EXTERN_C + + bool + atomic_flag_test_and_set_explicit(__atomic_flag_base* __a, + memory_order __m) _GLIBCXX_NOTHROW + { + atomic_flag* d = static_cast(__a); + return d->test_and_set(__m); + } + + void + atomic_flag_clear_explicit(__atomic_flag_base* __a, + memory_order __m) _GLIBCXX_NOTHROW + { + atomic_flag* d = static_cast(__a); + return d->clear(__m); + } + + void + __atomic_flag_wait_explicit(__atomic_flag_base* __a, + memory_order __x) _GLIBCXX_NOTHROW + { + while (atomic_flag_test_and_set_explicit(__a, __x)) + { }; + } + + _GLIBCXX_CONST __atomic_flag_base* + __atomic_flag_for_address(const volatile void* __z) _GLIBCXX_NOTHROW + { + uintptr_t __u = reinterpret_cast(__z); + __u += (__u >> 2) + (__u << 4); + __u += (__u >> 7) + (__u << 5); + __u += (__u >> 17) + (__u << 13); + if (sizeof(uintptr_t) > 4) + __u += (__u >> 31); + __u &= ~((~uintptr_t(0)) << LOGSIZE); + return flag_table + __u; + } + + _GLIBCXX_END_EXTERN_C + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + + +// XXX GLIBCXX_ABI Deprecated +// gcc-4.5.0 +// signature changes + +// The rename syntax for default exported names is +// asm (".symver name1,exportedname@GLIBCXX_3.4") +// asm (".symver name2,exportedname@@GLIBCXX_3.4.5") +// In the future, GLIBCXX_ABI > 6 should remove all uses of +// _GLIBCXX_*_SYMVER macros in this file. + +#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ + && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) + +#define _GLIBCXX_ASM_SYMVER(cur, old, version) \ + asm (".symver " #cur "," #old "@@" #version); + +_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag5clearESt12memory_order, _ZNVSt9__atomic011atomic_flag5clearESt12memory_order, GLIBCXX_3.4.11) + +_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order, _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order, GLIBCXX_3.4.11) + +#endif diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc b/libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc index 4ace9f0cd63..6053efca902 100644 --- a/libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc +++ b/libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc @@ -1,7 +1,7 @@ // { dg-options "-std=gnu++0x" } -// { dg-do link { xfail *-*-* } } +// { dg-do link } -// Copyright (C) 2009 Free Software Foundation, Inc. +// Copyright (C) 2009, 2011 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 @@ -29,7 +29,7 @@ struct dwordp void atomics() { std::atomic a; - bool b = a.is_lock_free(); // { dg-excess-errors "undefined reference to" } + bool b = a.is_lock_free(); } int main() diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc index 72bd5dd3a97..690f1215352 100644 --- a/libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc +++ b/libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc @@ -23,5 +23,5 @@ #include #include -template class std::atomic<__gnu_test::pod_char>; +template class std::atomic<__gnu_test::pod_state>; template class std::atomic<__gnu_test::pod_char*>; diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc index e2461a1113e..450fb6c2cc7 100644 --- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc +++ b/libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc @@ -20,78 +20,36 @@ #include -namespace gnu -{ #ifndef ATOMIC_CHAR_LOCK_FREE # error "ATOMIC_CHAR_LOCK_FREE must be a macro" -#else -# if ATOMIC_CHAR_LOCK_FREE != 0 \ - && ATOMIC_CHAR_LOCK_FREE != 1 && ATOMIC_CHAR_LOCK_FREE != 2 -# error "ATOMIC_CHAR_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_CHAR16_T_LOCK_FREE # error "ATOMIC_CHAR16_T_LOCK_FREE must be a macro" -#else -# if ATOMIC_CHAR16_T_LOCK_FREE != 0 \ - && ATOMIC_CHAR16_T_LOCK_FREE != 1 && ATOMIC_CHAR16_T_LOCK_FREE != 2 -# error "ATOMIC_CHAR16_T_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_CHAR32_T_LOCK_FREE # error "ATOMIC_CHAR32_T_LOCK_FREE must be a macro" -#else -# if ATOMIC_CHAR32_T_LOCK_FREE != 0 \ - && ATOMIC_CHAR32_T_LOCK_FREE != 1 && ATOMIC_CHAR32_T_LOCK_FREE != 2 -# error "ATOMIC_CHAR32_T_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_WCHAR_T_LOCK_FREE # error "ATOMIC_WCHAR_T_LOCK_FREE must be a macro" -#else -# if ATOMIC_WCHAR_T_LOCK_FREE != 0 \ - && ATOMIC_WCHAR_T_LOCK_FREE != 1 && ATOMIC_WCHAR_T_LOCK_FREE != 2 -# error "ATOMIC_WCHAR_T_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_SHORT_LOCK_FREE # error "ATOMIC_SHORT_LOCK_FREE must be a macro" -#else -# if ATOMIC_SHORT_LOCK_FREE != 0 \ - && ATOMIC_SHORT_LOCK_FREE != 1 && ATOMIC_SHORT_LOCK_FREE != 2 -# error "ATOMIC_SHORT_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_INT_LOCK_FREE # error "ATOMIC_INT_LOCK_FREE must be a macro" -#else -# if ATOMIC_INT_LOCK_FREE != 0 \ - && ATOMIC_INT_LOCK_FREE != 1 && ATOMIC_INT_LOCK_FREE != 2 -# error "ATOMIC_INT_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_LONG_LOCK_FREE # error "ATOMIC_LONG_LOCK_FREE must be a macro" -#else -# if ATOMIC_LONG_LOCK_FREE != 0 \ - && ATOMIC_LONG_LOCK_FREE != 1 && ATOMIC_LONG_LOCK_FREE != 2 -# error "ATOMIC_LONG_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_LLONG_LOCK_FREE # error "ATOMIC_LLONG_LOCK_FREE must be a macro" -#else -# if ATOMIC_LLONG_LOCK_FREE != 0 \ - && ATOMIC_LLONG_LOCK_FREE != 1 && ATOMIC_LLONG_LOCK_FREE != 2 -# error "ATOMIC_LLONG_LOCK_FREE must be 0, 1, or 2" -# endif #endif #ifndef ATOMIC_FLAG_INIT @@ -101,4 +59,41 @@ namespace gnu #ifndef ATOMIC_VAR_INIT #error "ATOMIC_VAR_INIT_must_be_a_macro" #endif + + +extern void abort(void); + +main () +{ + if (ATOMIC_CHAR_LOCK_FREE != 0 && ATOMIC_CHAR_LOCK_FREE != 1 + && ATOMIC_CHAR_LOCK_FREE != 2) + abort (); + + if (ATOMIC_CHAR16_T_LOCK_FREE != 0 && ATOMIC_CHAR16_T_LOCK_FREE != 1 + && ATOMIC_CHAR16_T_LOCK_FREE != 2) + abort (); + + if (ATOMIC_CHAR32_T_LOCK_FREE != 0 && ATOMIC_CHAR32_T_LOCK_FREE != 1 + && ATOMIC_CHAR32_T_LOCK_FREE != 2) + abort (); + + if (ATOMIC_WCHAR_T_LOCK_FREE != 0 && ATOMIC_WCHAR_T_LOCK_FREE != 1 + && ATOMIC_WCHAR_T_LOCK_FREE != 2) + abort (); + + if (ATOMIC_SHORT_LOCK_FREE != 0 && ATOMIC_SHORT_LOCK_FREE != 1 + && ATOMIC_SHORT_LOCK_FREE != 2) + abort (); + + if (ATOMIC_INT_LOCK_FREE != 0 && ATOMIC_INT_LOCK_FREE != 1 + && ATOMIC_INT_LOCK_FREE != 2) + abort (); + + if (ATOMIC_LONG_LOCK_FREE != 0 && ATOMIC_LONG_LOCK_FREE != 1 + && ATOMIC_LONG_LOCK_FREE != 2) + abort (); + + if (ATOMIC_LLONG_LOCK_FREE != 0 && ATOMIC_LLONG_LOCK_FREE != 1 + && ATOMIC_LLONG_LOCK_FREE != 2) + abort (); } -- cgit v1.2.1 From 471b86e908967fb2bb5c7a7296930af5345e6786 Mon Sep 17 00:00:00 2001 From: fdumont Date: Sun, 6 Nov 2011 17:16:00 +0000 Subject: =?UTF-8?q?2011-11-06=20=20Fran=C3=A7ois=20Dumont=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * testsuite/performance/23_containers/insert_erase/41975.cc: Add tests to check performance with or without cache of hash code and with string type that has a costlier hash functor than int type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181037 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 6 + .../23_containers/insert_erase/41975.cc | 175 +++++++++++++++++---- 2 files changed, 149 insertions(+), 32 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index dd1bd56d979..b04f1a9c1ac 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2011-11-06 François Dumont + + * testsuite/performance/23_containers/insert_erase/41975.cc: Add + tests to check performance with or without cache of hash code and with + string type that has a costlier hash functor than int type. + 2011-11-06 Benjamin Kosnik Andrew MacLeod diff --git a/libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc b/libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc index 30fc105c272..a5dae41dc60 100644 --- a/libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc +++ b/libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc @@ -17,56 +17,167 @@ // with this library; see the file COPYING3. If not see // . -#include +#include #include #include -int main() +namespace { - using namespace __gnu_test; + // Bench using an unordered_set. Hash functor for int is quite + // predictable so it helps bench very specific use cases. + template + void bench() + { + using namespace __gnu_test; + std::ostringstream ostr; + ostr << "unordered_set " << (use_cache ? "with" : "without") + << " cache"; + const std::string desc = ostr.str(); + + time_counter time; + resource_counter resource; + + const int nb = 200000; + start_counters(time, resource); + + std::__unordered_set, std::equal_to, + std::allocator, use_cache> us; + for (int i = 0; i != nb; ++i) + us.insert(i); + + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": first insert"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); + + start_counters(time, resource); + + // Here is the worst erase use case when hashtable implementation was + // something like vector>. Erasing from the end was very + // costly because we need to return the iterator following the erased + // one, as the hashtable is getting emptier at each step there are + // more and more empty bucket to loop through to reach the end of the + // container and find out that it was in fact the last element. + for (int j = nb - 1; j >= 0; --j) + { + auto it = us.find(j); + if (it != us.end()) + us.erase(it); + } - time_counter time; - resource_counter resource; + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": erase from iterator"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); - start_counters(time, resource); + start_counters(time, resource); - std::unordered_set us; - for (int i = 0; i != 5000000; ++i) - us.insert(i); + // This is a worst insertion use case for the current implementation as + // we insert an element at the begining of the hashtable and then we + // insert starting at the end so that each time we need to seek up to the + // first bucket to find the first non-empty one. + us.insert(0); + for (int i = nb - 1; i >= 0; --i) + us.insert(i); - stop_counters(time, resource); - report_performance(__FILE__, "Container generation", time, resource); + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": second insert"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); - start_counters(time, resource); + start_counters(time, resource); - for (int j = 100; j != 0; --j) + for (int j = nb - 1; j >= 0; --j) + us.erase(j); + + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": erase from key"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); + } + + // Bench using unordered_set that show how important it is to cache + // hash code as computing string hash code is quite expensive compared to + // computing it for int. + template + void bench_str() { - auto it = us.begin(); - while (it != us.end()) + using namespace __gnu_test; + std::ostringstream ostr; + ostr << "unordered_set " << (use_cache ? "with" : "without") + << " cache"; + const std::string desc = ostr.str(); + + time_counter time; + resource_counter resource; + + const int nb = 200000; + // First generate once strings that are going to be used throughout the + // bench: + std::vector strs; + strs.reserve(nb); + for (int i = 0; i != nb; ++i) + { + ostr.str(""); + ostr << "string #" << i; + strs.push_back(ostr.str()); + } + + start_counters(time, resource); + + std::__unordered_set, + std::equal_to, + std::allocator, use_cache> us; + for (int i = 0; i != nb; ++i) + us.insert(strs[i]); + + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": first insert"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); + + start_counters(time, resource); + + for (int j = nb - 1; j >= 0; --j) { - if ((*it % j) == 0) - it = us.erase(it); - else - ++it; + auto it = us.find(strs[j]); + if (it != us.end()) + us.erase(it); } - } - stop_counters(time, resource); - report_performance(__FILE__, "Container erase", time, resource); + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": erase from iterator"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); - start_counters(time, resource); + start_counters(time, resource); - us.insert(0); + us.insert(strs[0]); + for (int i = nb - 1; i >= 0; --i) + us.insert(strs[i]); - for (int i = 0; i != 500; ++i) - { - auto it = us.begin(); - ++it; - assert( it == us.end() ); - } + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": second insert"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); + + start_counters(time, resource); + + for (int j = nb - 1; j >= 0; --j) + us.erase(strs[j]); - stop_counters(time, resource); - report_performance(__FILE__, "Container iteration", time, resource); + stop_counters(time, resource); + ostr.str(""); + ostr << desc << ": erase from key"; + report_performance(__FILE__, ostr.str().c_str(), time, resource); + } +} +int main() +{ + bench(); + bench(); + bench_str(); + bench_str(); return 0; } -- cgit v1.2.1 From dd586d8540bc9193c07e68fa21f1781ef3cbaf4f Mon Sep 17 00:00:00 2001 From: redi Date: Sun, 6 Nov 2011 20:15:53 +0000 Subject: * doc/xml/faq.xml: Replace references to C++0x with C++11. * doc/xml/manual/intro.xml: Likewise. * doc/xml/manual/backwards_compatibility.xml: Likewise. * doc/xml/manual/shared_ptr.xml: Likewise. * doc/xml/manual/configure.xml: Likewise. * doc/xml/manual/evolution.xml: Likewise. * doc/xml/manual/using.xml: Likewise. * doc/xml/manual/strings.xml: Likewise. * doc/xml/manual/debug_mode.xml: Likewise. * doc/xml/manual/policy_data_structures.xml: Likewise. * doc/xml/manual/extensions.xml: Likewise. * doc/xml/manual/diagnostics.xml: Likewise. * doc/xml/manual/test.xml: Likewise. * doc/xml/manual/status_cxx200x.xml: Likewise, and rename to... * doc/xml/manual/status_cxx2011.xml: Here. * doc/Makefile.am: Rename status_cxx200x.xml. * doc/Makefile.in: Regenerate. * doc/html/*: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181041 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 21 + libstdc++-v3/doc/Makefile.am | 2 +- libstdc++-v3/doc/Makefile.in | 2 +- libstdc++-v3/doc/html/api.html | 2 +- libstdc++-v3/doc/html/faq.html | 4 +- libstdc++-v3/doc/html/index.html | 26 +- libstdc++-v3/doc/html/manual/abi.html | 16 +- libstdc++-v3/doc/html/manual/algorithms.html | 2 +- libstdc++-v3/doc/html/manual/api.html | 6 +- .../doc/html/manual/appendix_contributing.html | 2 +- libstdc++-v3/doc/html/manual/appendix_free.html | 2 +- libstdc++-v3/doc/html/manual/appendix_gpl.html | 4 +- libstdc++-v3/doc/html/manual/appendix_porting.html | 24 +- libstdc++-v3/doc/html/manual/atomics.html | 2 +- libstdc++-v3/doc/html/manual/backwards.html | 132 +- libstdc++-v3/doc/html/manual/bk01pt02.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03pr01.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt04.html | 20 +- libstdc++-v3/doc/html/manual/bugs.html | 14 +- libstdc++-v3/doc/html/manual/concurrency.html | 2 +- libstdc++-v3/doc/html/manual/configure.html | 2 +- libstdc++-v3/doc/html/manual/containers.html | 2 +- libstdc++-v3/doc/html/manual/diagnostics.html | 2 +- .../doc/html/manual/documentation_hacking.html | 8 +- libstdc++-v3/doc/html/manual/extensions.html | 2 +- libstdc++-v3/doc/html/manual/facets.html | 54 +- libstdc++-v3/doc/html/manual/index.html | 42 +- libstdc++-v3/doc/html/manual/intro.html | 4 +- libstdc++-v3/doc/html/manual/io.html | 2 +- libstdc++-v3/doc/html/manual/iterators.html | 2 +- libstdc++-v3/doc/html/manual/localization.html | 18 +- libstdc++-v3/doc/html/manual/memory.html | 70 +- libstdc++-v3/doc/html/manual/numerics.html | 2 +- libstdc++-v3/doc/html/manual/parallel_mode.html | 4 +- .../doc/html/manual/policy_data_structures.html | 12 +- .../html/manual/policy_data_structures_design.html | 66 +- .../html/manual/policy_data_structures_using.html | 4 +- libstdc++-v3/doc/html/manual/profile_mode.html | 2 +- libstdc++-v3/doc/html/manual/status.html | 20 +- libstdc++-v3/doc/html/manual/strings.html | 4 +- libstdc++-v3/doc/html/manual/support.html | 2 +- libstdc++-v3/doc/html/manual/test.html | 12 +- libstdc++-v3/doc/html/manual/using.html | 4 +- .../doc/html/manual/using_dynamic_or_shared.html | 2 +- libstdc++-v3/doc/html/manual/using_exceptions.html | 16 +- libstdc++-v3/doc/html/manual/using_headers.html | 35 +- libstdc++-v3/doc/html/manual/using_macros.html | 2 +- libstdc++-v3/doc/html/manual/utilities.html | 4 +- libstdc++-v3/doc/xml/faq.xml | 2 +- .../doc/xml/manual/backwards_compatibility.xml | 94 +- libstdc++-v3/doc/xml/manual/configure.xml | 2 +- libstdc++-v3/doc/xml/manual/debug_mode.xml | 8 +- libstdc++-v3/doc/xml/manual/diagnostics.xml | 2 +- libstdc++-v3/doc/xml/manual/evolution.xml | 2 +- libstdc++-v3/doc/xml/manual/extensions.xml | 2 +- libstdc++-v3/doc/xml/manual/intro.xml | 18 +- .../doc/xml/manual/policy_data_structures.xml | 2 +- libstdc++-v3/doc/xml/manual/shared_ptr.xml | 32 +- libstdc++-v3/doc/xml/manual/status_cxx200x.xml | 2621 ------------------- libstdc++-v3/doc/xml/manual/status_cxx2011.xml | 2622 ++++++++++++++++++++ libstdc++-v3/doc/xml/manual/strings.xml | 2 +- libstdc++-v3/doc/xml/manual/test.xml | 4 +- libstdc++-v3/doc/xml/manual/using.xml | 41 +- 71 files changed, 3095 insertions(+), 3067 deletions(-) delete mode 100644 libstdc++-v3/doc/xml/manual/status_cxx200x.xml create mode 100644 libstdc++-v3/doc/xml/manual/status_cxx2011.xml (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b04f1a9c1ac..47eeb3f03ac 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,24 @@ +2011-11-06 Jonathan Wakely + + * doc/xml/faq.xml: Replace references to C++0x with C++11. + * doc/xml/manual/intro.xml: Likewise. + * doc/xml/manual/backwards_compatibility.xml: Likewise. + * doc/xml/manual/shared_ptr.xml: Likewise. + * doc/xml/manual/configure.xml: Likewise. + * doc/xml/manual/evolution.xml: Likewise. + * doc/xml/manual/using.xml: Likewise. + * doc/xml/manual/strings.xml: Likewise. + * doc/xml/manual/debug_mode.xml: Likewise. + * doc/xml/manual/policy_data_structures.xml: Likewise. + * doc/xml/manual/extensions.xml: Likewise. + * doc/xml/manual/diagnostics.xml: Likewise. + * doc/xml/manual/test.xml: Likewise. + * doc/xml/manual/status_cxx200x.xml: Likewise, and rename to... + * doc/xml/manual/status_cxx2011.xml: Here. + * doc/Makefile.am: Rename status_cxx200x.xml. + * doc/Makefile.in: Regenerate. + * doc/html/*: Regenerate. + 2011-11-06 François Dumont * testsuite/performance/23_containers/insert_erase/41975.cc: Add diff --git a/libstdc++-v3/doc/Makefile.am b/libstdc++-v3/doc/Makefile.am index 81c05b9ea27..3cb6dce23b3 100644 --- a/libstdc++-v3/doc/Makefile.am +++ b/libstdc++-v3/doc/Makefile.am @@ -337,7 +337,7 @@ xml_sources_manual = \ ${xml_dir}/manual/shared_ptr.xml \ ${xml_dir}/manual/spine.xml \ ${xml_dir}/manual/status_cxx1998.xml \ - ${xml_dir}/manual/status_cxx200x.xml \ + ${xml_dir}/manual/status_cxx2011.xml \ ${xml_dir}/manual/status_cxxtr1.xml \ ${xml_dir}/manual/status_cxxtr24733.xml \ ${xml_dir}/manual/strings.xml \ diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in index 8c38839bff7..472ed5466c2 100644 --- a/libstdc++-v3/doc/Makefile.in +++ b/libstdc++-v3/doc/Makefile.in @@ -390,7 +390,7 @@ xml_sources_manual = \ ${xml_dir}/manual/shared_ptr.xml \ ${xml_dir}/manual/spine.xml \ ${xml_dir}/manual/status_cxx1998.xml \ - ${xml_dir}/manual/status_cxx200x.xml \ + ${xml_dir}/manual/status_cxx2011.xml \ ${xml_dir}/manual/status_cxxtr1.xml \ ${xml_dir}/manual/status_cxxtr24733.xml \ ${xml_dir}/manual/strings.xml \ diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index a3c3f6b3ab8..fd7ea48c9b1 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -7,7 +7,7 @@ FSF -


diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 6be4f5d37ea..439eb3a09b1 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -4,7 +4,7 @@ 2008, 2010 FSF -



5.2.

Bugs in the ISO C++ language or library specification

diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index fdae06326a6..7637225a50c 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -24,7 +24,7 @@


Table of Contents

The GNU C++ Library Manual
I. Introduction -
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 200x
C++ TR1
C++ TR 24733
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. +
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
C++ TR1
C++ TR 24733
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. Standard Contents
4. Support @@ -35,13 +35,13 @@
Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities -
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++0x and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. +
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Dual C++11 and TR1 Implementation
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization -
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. +
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Interacting with C
Containers vs. Arrays
10. @@ -144,21 +144,21 @@
Overview
Existing tests
-C++0x Requirements Test Sequence Descriptions -
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro -
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
+C++11 Requirements Test Sequence Descriptions +
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in ostream.h, no cin in istream.h
Second
Namespace std:: not supported
Illegal iterator usage
isspace from cctype is a macro +
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
Removal of ostream::form and istream::scan extensions -
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. -
+
No basic_stringbuf, basic_stringstream
Little or no wide character support
No templatized iostreams
Thread safety issues
Third
Pre-ISO headers moved to backwards or removed
Extension headers hash_map, hash_set moved to ext or backwards
No ios::nocreate/ios::noreplace. +
No stream::attach(int fd) -
+
Support for C++98 dialect. -
+
Support for C++TR1 dialect. -
-Support for C++0x dialect. -
+
+Support for C++11 dialect. +
Container::iterator_type is not necessarily Container::value_type*
C. Free Software Needs Free Documentation diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index 7e81927b736..cafbc18ab67 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -490,39 +490,39 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. C++ ABI Summary - .

Dynamic Shared Objects: Survey and Issues . ISO C++ J16/06-0046 - . Benjamin Kosnik.

Versioning With Namespaces . ISO C++ J16/06-0083 - . Benjamin Kosnik.

 Next

The neatest accomplishment of the algorithms sect1 is that all the work is done via iterators, not containers directly. This means two diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index d2990892e0f..8997efa77ea 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -75,11 +75,11 @@ _Alloc_traits have been removed. __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. -


Releases after gcc-3.4 have continued to add to the collection +


Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. -


+


Debug mode first appears.

Precompiled header support PCH support. @@ -134,7 +134,7 @@ Backward include edit. tree.h vector.h

  • Added

    hash_map and hash_set -

  • Added in C++0x

    +

  • Added in C++11

    auto_ptr.h and binders.h

  • Header dependency streamlining. diff --git a/libstdc++-v3/doc/html/manual/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html index 5e12f000f03..f72ea4b4137 100644 --- a/libstdc++-v3/doc/html/manual/appendix_contributing.html +++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html @@ -7,7 +7,7 @@ Appendices

     Next

    The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index 467f9d9617b..ec5ede38506 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -7,7 +7,7 @@ Appendices

     Next

     Next

    Table of Contents

    Configure and Build Hacking
    Prerequisites
    Overview: What Comes from Where
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Writing and Generating Documentation
    Introduction
    Generating Documentation
    Doxygen
    Prerequisites
    Generating the Doxygen Files
    Markup
    Docbook
    Prerequisites
    Generating the DocBook Files
    Editing and Validation
    File Organization and Basics
    Markup By Example
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    Test
    Organization
    Directory Layout
    Naming Conventions
    Running the Testsuite
    Basic
    Variations
    Permutations
    Writing a new test case
    Test Harness and Utilities
    Dejagnu Harness Details
    Utilities
    Special Topics
    Qualifying Exception Safety Guarantees
    Overview
    Existing tests
    -C++0x Requirements Test Sequence Descriptions -
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in ostream.h, no cin in istream.h
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from cctype is a macro -
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    +C++11 Requirements Test Sequence Descriptions +
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in ostream.h, no cin in istream.h
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from cctype is a macro +
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    Removal of ostream::form and istream::scan extensions -
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. -
    +
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. +
    No stream::attach(int fd) -
    +
    Support for C++98 dialect. -
    +
    Support for C++TR1 dialect. -
    -Support for C++0x dialect. -
    +
    +Support for C++11 dialect. +
    Container::iterator_type is not necessarily Container::value_type*
     Next

    Facilities for atomic operations.

    diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index ab90f3bf84a..fef479d6b33 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -17,8 +17,8 @@ ISO Standard (e.g., statistical analysis). While there are a lot of really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those “obvious†classes didn't get included. -

    Known Issues include many of the limitations of its immediate ancestor.

    Portability notes and known implementation limitations are as follows.

    +

    Known Issues include many of the limitations of its immediate ancestor.

    Portability notes and known implementation limitations are as follows.

    In earlier versions of the standard, fstream.h, ostream.h @@ -44,7 +44,7 @@ considered replaced and rewritten. archived. The code is considered replaced and rewritten.

    Portability notes and known implementation limitations are as follows. -

    +

    Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler @@ -364,7 +364,7 @@ libstdc++-v3. of the SGI STL (version 3.3), with extensive changes.

    A more formal description of the V3 goals can be found in the official design document. -

    Portability notes and known implementation limitations are as follows.

    The pre-ISO C++ headers +

    Portability notes and known implementation limitations are as follows.

    Check for baseline language coverage in the compiler for the C++11 standard.

    -# AC_COMPILE_STDCXX_OX
    -AC_DEFUN([AC_COMPILE_STDCXX_0X], [
    -  AC_CACHE_CHECK(if g++ supports C++0x features without additional flags,
    -  ac_cv_cxx_compile_cxx0x_native,
    +# AC_COMPILE_STDCXX_11
    +AC_DEFUN([AC_COMPILE_STDCXX_11], [
    +  AC_CACHE_CHECK(if g++ supports C++11 features without additional flags,
    +  ac_cv_cxx_compile_cxx11_native,
       [AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
       AC_TRY_COMPILE([
    @@ -712,16 +714,16 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
         typedef check<int> check_type;
         check_type c;
         check_type&& cr = c;],,
    -  ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no)
    +  ac_cv_cxx_compile_cxx11_native=yes, ac_cv_cxx_compile_cxx11_native=no)
       AC_LANG_RESTORE
       ])
     
    -  AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x,
    -  ac_cv_cxx_compile_cxx0x_cxx,
    +  AC_CACHE_CHECK(if g++ supports C++11 features with -std=c++11,
    +  ac_cv_cxx_compile_cxx11_cxx,
       [AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
       ac_save_CXXFLAGS="$CXXFLAGS"
    -  CXXFLAGS="$CXXFLAGS -std=c++0x"
    +  CXXFLAGS="$CXXFLAGS -std=c++11"
       AC_TRY_COMPILE([
       template <typename T>
         struct check
    @@ -737,17 +739,17 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
         typedef check<int> check_type;
         check_type c;
         check_type&& cr = c;],,
    -  ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no)
    +  ac_cv_cxx_compile_cxx11_cxx=yes, ac_cv_cxx_compile_cxx11_cxx=no)
       CXXFLAGS="$ac_save_CXXFLAGS"
       AC_LANG_RESTORE
       ])
     
    -  AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x,
    -  ac_cv_cxx_compile_cxx0x_gxx,
    +  AC_CACHE_CHECK(if g++ supports C++11 features with -std=gnu++11,
    +  ac_cv_cxx_compile_cxx11_gxx,
       [AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
       ac_save_CXXFLAGS="$CXXFLAGS"
    -  CXXFLAGS="$CXXFLAGS -std=gnu++0x"
    +  CXXFLAGS="$CXXFLAGS -std=gnu++11"
       AC_TRY_COMPILE([
       template <typename T>
         struct check
    @@ -763,28 +765,28 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
         typedef check<int> check_type;
         check_type c;
         check_type&& cr = c;],,
    -  ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no)
    +  ac_cv_cxx_compile_cxx11_gxx=yes, ac_cv_cxx_compile_cxx11_gxx=no)
       CXXFLAGS="$ac_save_CXXFLAGS"
       AC_LANG_RESTORE
       ])
     
    -  if test "$ac_cv_cxx_compile_cxx0x_native" = yes ||
    -     test "$ac_cv_cxx_compile_cxx0x_cxx" = yes ||
    -     test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then
    -    AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
    +  if test "$ac_cv_cxx_compile_cxx11_native" = yes ||
    +     test "$ac_cv_cxx_compile_cxx11_cxx" = yes ||
    +     test "$ac_cv_cxx_compile_cxx11_gxx" = yes; then
    +    AC_DEFINE(HAVE_STDCXX_11,,[Define if g++ supports C++11 features. ])
       fi
     ])
    -

    Check for library coverage of the C++0xstandard. +

    Check for library coverage of the C++2011 standard.

    -# AC_HEADER_STDCXX_0X
    -AC_DEFUN([AC_HEADER_STDCXX_0X], [
    -  AC_CACHE_CHECK(for ISO C++ 0x include files,
    -  ac_cv_cxx_stdcxx_0x,
    -  [AC_REQUIRE([AC_COMPILE_STDCXX_0X])
    +# AC_HEADER_STDCXX_11
    +AC_DEFUN([AC_HEADER_STDCXX_11], [
    +  AC_CACHE_CHECK(for ISO C++11 include files,
    +  ac_cv_cxx_stdcxx_11,
    +  [AC_REQUIRE([AC_COMPILE_STDCXX_11])
       AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
       ac_save_CXXFLAGS="$CXXFLAGS"
    -  CXXFLAGS="$CXXFLAGS -std=gnu++0x"
    +  CXXFLAGS="$CXXFLAGS -std=gnu++11"
     
       AC_TRY_COMPILE([
         #include <cassert>
    @@ -852,12 +854,12 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [
         #include <valarray>
         #include <vector>
       ],,
    -  ac_cv_cxx_stdcxx_0x=yes, ac_cv_cxx_stdcxx_0x=no)
    +  ac_cv_cxx_stdcxx_11=yes, ac_cv_cxx_stdcxx_11=no)
       AC_LANG_RESTORE
       CXXFLAGS="$ac_save_CXXFLAGS"
       ])
    -  if test "$ac_cv_cxx_stdcxx_0x" = yes; then
    -    AC_DEFINE(STDCXX_0X_HEADERS,,[Define if ISO C++ 0x header files are present. ])
    +  if test "$ac_cv_cxx_stdcxx_11" = yes; then
    +    AC_DEFINE(STDCXX_11_HEADERS,,[Define if ISO C++11 header files are present. ])
       fi
     ])
     

    As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For <unordered_map> @@ -866,11 +868,11 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [ AC_CACHE_CHECK(for unordered_map, ac_cv_cxx_unordered_map, - [AC_REQUIRE([AC_COMPILE_STDCXX_0X]) + [AC_REQUIRE([AC_COMPILE_STDCXX_11]) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([#include <unordered_map>], [using std::unordered_map;], ac_cv_cxx_unordered_map=yes, ac_cv_cxx_unordered_map=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -885,11 +887,11 @@ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ AC_CACHE_CHECK(for unordered_set, ac_cv_cxx_unordered_set, - [AC_REQUIRE([AC_COMPILE_STDCXX_0X]) + [AC_REQUIRE([AC_COMPILE_STDCXX_11]) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([#include <unordered_set>], [using std::unordered_set;], ac_cv_cxx_unordered_set=yes, ac_cv_cxx_unordered_set=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -899,21 +901,29 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ]) fi ]) -

    Migration guide for GCC-3.2 diff --git a/libstdc++-v3/doc/html/manual/bk01pt02.html b/libstdc++-v3/doc/html/manual/bk01pt02.html index 05ae37aed78..5a56534768a 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02.html @@ -13,13 +13,13 @@

    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++0x and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html b/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html index 74c468d8800..e12ca2f310c 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html @@ -36,7 +36,7 @@ -D_GLIBCXX_CONCEPT_CHECKS.

    Please note that the checks are based on the requirements in the original - C++ standard, some of which have changed in the upcoming C++0x revision. + C++ standard, some of which have changed in the new C++11 revision. Additionally, some correct code might be rejected by the concept checks, for example template argument types may need to be complete when used in a template definition, rather than at the point of instantiation. diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html index 79161360ff5..e343a514c9d 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html @@ -19,6 +19,6 @@ mode or with debug mode. The following table provides the names and headers of the debugging containers: -


    In addition, when compiling in C++0x mode, these additional +


    In addition, when compiling in C++11 mode, these additional containers have additional debug capability. -


    +


    diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html index a0a85b76dc1..1aa9f30a246 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html @@ -193,7 +193,7 @@ template<typename _Tp, typename _Allocator = allocator<_Tp> and making the debug mode easier to incorporate into development environments by minimizing dependencies.

    Achieving link- and run-time coexistence is not a trivial implementation task. To achieve this goal we required a small - extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as + extension to the GNU C++ compiler (since incorporated into the C++11 language specification, described in the GCC Manual for the C++ language as namespace association), and a complex organization of debug- and release-modes. The end result is that we have achieved per-use @@ -224,7 +224,7 @@ namespace std defined in the namespace __cxx1998) and also the debug-mode container. The debug-mode container is defined within the namespace __debug, which is associated with namespace -std via the C++0x namespace association language feature. This +std via the C++11 namespace association language feature. This method allows the debug and release versions of the same component to coexist at compile-time and link-time without causing an unreasonable maintenance burden, while minimizing confusion. Again, this boils down diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html index c33d260ae0e..e81434e5e44 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html @@ -63,4 +63,4 @@ Then compile this code with the prerequisite compiler flags flags for atomic operations.)

    The following table provides the names and headers of all the parallel algorithms that can be used in a similar manner: -

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    +

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html index eada010800c..5b923c070d0 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html @@ -1,7 +1,7 @@ Design

    -

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are +


    diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html index cfa6aaa982c..780504cbbc5 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html @@ -18,7 +18,7 @@ A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. -

    Table 19.2. Profile Diagnostics

    GroupFlagBenefitCostFreq.Implemented 
    +

    Table 19.2. Profile Diagnostics

    GroupFlagBenefitCostFreq.Implemented 
    CONTAINERS HASHTABLE_TOO_SMALL101 10yes
      HASHTABLE_TOO_LARGE51 10yes
      diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html index 3b3267340ac..5a0abcd4944 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html @@ -76,7 +76,7 @@ else return false.

    Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). -


    +


    The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html index 29d9f5d1db6..f1771e99c9e 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html @@ -4,7 +4,7 @@ The SGI hashing classes hash_set and hash_set have been deprecated by the unordered_set, unordered_multiset, unordered_map, - unordered_multimap containers in TR1 and the upcoming C++0x, and + unordered_multimap containers in TR1 and C++11, and may be removed in future releases.

    The SGI headers

          <hash_map>
    diff --git a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html
    index 255a182469f..79e7f97c00e 100644
    --- a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html
    +++ b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html
    @@ -3,7 +3,7 @@
     <meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content="
          ISO C++
        , 
          library
        "/><meta name="keywords" content="
          ISO C++
        , 
          runtime
        , 
          library
        "/><link rel="home" href="../index.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III.  Extensions"/><link rel="prev" href="extensions.html" title="Part III.  Extensions"/><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III. 
       Extensions
       
    -</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id484429"/></h1></div></div></div><p>
    +</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id464675"/></h1></div></div></div><p>
       Here we will make an attempt at describing the non-Standard
       extensions to the library.  Some of these are from older versions of
       standard library components, namely SGI's STL, and some of these are
    diff --git a/libstdc++-v3/doc/html/manual/bk01pt04.html b/libstdc++-v3/doc/html/manual/bk01pt04.html
    index 7ac1c32cc4c..427cdabb0ad 100644
    --- a/libstdc++-v3/doc/html/manual/bk01pt04.html
    +++ b/libstdc++-v3/doc/html/manual/bk01pt04.html
    @@ -16,21 +16,21 @@
     </a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.exception.safety.overview">Overview</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.status">
         Existing tests
     </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
    -C++0x Requirements Test Sequence Descriptions
    -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540654">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id540687">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540790">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id540916">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id540977"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
    -  </a></span></dt><dt><span class="section"><a href="backwards.html#id541073">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541112">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541130">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541176">
    +C++11 Requirements Test Sequence Descriptions
    +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id520901">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id520933">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521036">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id521162">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id521224"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
    +  </a></span></dt><dt><span class="section"><a href="backwards.html#id521319">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521358">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521376">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521422">
       Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
       extensions
    -</a></span></dt><dt><span class="section"><a href="backwards.html#id541195">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541351">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id541369">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id541388">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id541513">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id541598">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id541701">No <code class="code">ios::nocreate/ios::noreplace</code>.
    -</a></span></dt><dt><span class="section"><a href="backwards.html#id541749">
    +</a></span></dt><dt><span class="section"><a href="backwards.html#id521441">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521597">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id521616">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id521634">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521759">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id521844">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id521961">No <code class="code">ios::nocreate/ios::noreplace</code>.
    +</a></span></dt><dt><span class="section"><a href="backwards.html#id522009">
     No <code class="code">stream::attach(int fd)</code>
    -</a></span></dt><dt><span class="section"><a href="backwards.html#id541817">
    +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx98">
     Support for C++98 dialect.
    -</a></span></dt><dt><span class="section"><a href="backwards.html#id541844">
    +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_tr1">
     Support for C++TR1 dialect.
    -</a></span></dt><dt><span class="section"><a href="backwards.html#id541888">
    -Support for C++0x dialect.
    -</a></span></dt><dt><span class="section"><a href="backwards.html#id541966">
    +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx11">
    +Support for C++11 dialect.
    +</a></span></dt><dt><span class="section"><a href="backwards.html#id522258">
       Container::iterator_type is not necessarily Container::value_type*
     </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C. 
       Free Software Needs Free Documentation
    diff --git a/libstdc++-v3/doc/html/manual/bugs.html b/libstdc++-v3/doc/html/manual/bugs.html
    index a3dcaaf94cf..91a4574b106 100644
    --- a/libstdc++-v3/doc/html/manual/bugs.html
    +++ b/libstdc++-v3/doc/html/manual/bugs.html
    @@ -226,7 +226,7 @@
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#387">387</a>:
     	<span class="emphasis"><em>std::complex over-encapsulated</em></span>
         </span></dt><dd><p>Add the <code class="code">real(T)</code> and <code class="code">imag(T)</code>
    -		    members;  in C++0x mode, also adjust the existing
    +		    members;  in C++11 mode, also adjust the existing
     		    <code class="code">real()</code> and <code class="code">imag()</code> members and
     		    free functions.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#389">389</a>:
    @@ -298,7 +298,7 @@
         </span></dt><dd><p>Follow the straightforward proposed resolution.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#550">550</a>:
     	<span class="emphasis"><em>What should the return type of pow(float,int) be?</em></span>
    -    </span></dt><dd><p>In C++0x mode, remove the pow(float,int), etc., signatures.
    +    </span></dt><dd><p>In C++11 mode, remove the pow(float,int), etc., signatures.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#586">586</a>:
     	<span class="emphasis"><em>string inserter not a formatted function</em></span>
         </span></dt><dd><p>Change it to be a formatted output function (i.e. catch exceptions).
    @@ -313,7 +313,7 @@
         </span></dt><dd><p>Add the missing operations.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#691">691</a>:
     	<span class="emphasis"><em>const_local_iterator cbegin, cend missing from TR1</em></span>
    -    </span></dt><dd><p>In C++0x mode add cbegin(size_type) and cend(size_type)
    +    </span></dt><dd><p>In C++11 mode add cbegin(size_type) and cend(size_type)
     		    to the unordered containers.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#693">693</a>:
     	<span class="emphasis"><em>std::bitset::all() missing</em></span>
    @@ -326,22 +326,22 @@
         </span></dt><dd><p>Implement the straightforward resolution.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#761">761</a>:
     	<span class="emphasis"><em>unordered_map needs an at() member function</em></span>
    -    </span></dt><dd><p>In C++0x mode, add at() and at() const.
    +    </span></dt><dd><p>In C++11 mode, add at() and at() const.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#775">775</a>:
     	<span class="emphasis"><em>Tuple indexing should be unsigned?</em></span>
         </span></dt><dd><p>Implement the int -> size_t replacements.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#776">776</a>:
     	<span class="emphasis"><em>Undescribed assign function of std::array</em></span>
    -    </span></dt><dd><p>In C++0x mode, remove assign, add fill.
    +    </span></dt><dd><p>In C++11 mode, remove assign, add fill.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#781">781</a>:
     	<span class="emphasis"><em>std::complex should add missing C99 functions</em></span>
    -    </span></dt><dd><p>In C++0x mode, add std::proj.
    +    </span></dt><dd><p>In C++11 mode, add std::proj.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#809">809</a>:
     	<span class="emphasis"><em>std::swap should be overloaded for array types</em></span>
         </span></dt><dd><p>Add the overload.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#844">844</a>:
     	<span class="emphasis"><em>complex pow return type is ambiguous</em></span>
    -    </span></dt><dd><p>In C++0x mode, remove the pow(complex<T>, int) signature.
    +    </span></dt><dd><p>In C++11 mode, remove the pow(complex<T>, int) signature.
         </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#853">853</a>:
     	<span class="emphasis"><em>to_string needs updating with zero and one</em></span>
         </span></dt><dd><p>Update / add the signatures.
    diff --git a/libstdc++-v3/doc/html/manual/concurrency.html b/libstdc++-v3/doc/html/manual/concurrency.html
    index 98fdae64911..35efc060239 100644
    --- a/libstdc++-v3/doc/html/manual/concurrency.html
    +++ b/libstdc++-v3/doc/html/manual/concurrency.html
    @@ -7,7 +7,7 @@
         Standard Contents
       </th><td align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 15.  Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"/>Chapter 15. 
       Concurrency
    -  <a id="id484245" class="indexterm"/>
    +  <a id="id464491" class="indexterm"/>
     </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p>
       Facilities for concurrent operation, and control thereof.
     </p><div class="section" title="API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency.api"/>API Reference</h2></div></div></div><p>
    diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html
    index 92809aa09e9..c2cf8d4c13a 100644
    --- a/libstdc++-v3/doc/html/manual/configure.html
    +++ b/libstdc++-v3/doc/html/manual/configure.html
    @@ -88,7 +88,7 @@
          </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time=OPTION</code></span></dt><dd><p>Enables link-type checks for the availability of the
     	clock_gettime clocks, used in the implementation of [time.clock],
     	and of the nanosleep and sched_yield functions, used in the
    -	implementation of [thread.thread.this] of the current C++0x draft.
    +	implementation of [thread.thread.this] of the 2011 ISO C++ standard.
     	The choice OPTION=yes checks for the availability of the facilities
     	in libc and libposix4.  In case of need the latter is also linked
     	to libstdc++ as part of the build process.  OPTION=rt also searches
    diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html
    index 554bc1c1d90..05c5b0e88af 100644
    --- a/libstdc++-v3/doc/html/manual/containers.html
    +++ b/libstdc++-v3/doc/html/manual/containers.html
    @@ -7,7 +7,7 @@
         Standard Contents
       </th><td align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 9.  Containers"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"/>Chapter 9. 
       Containers
    -  <a id="id481292" class="indexterm"/>
    +  <a id="id461537" class="indexterm"/>
     </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section" title="Sequences"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.sequences"/>Sequences</h2></div></div></div><div class="section" title="list"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"/>list</h3></div></div></div><div class="section" title="list::size() is O(n)"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"/>list::size() is O(n)</h4></div></div></div><p>
          Yes it is, and that's okay.  This is a decision that we preserved
          when we imported SGI's STL implementation.  The following is
    diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html
    index 001e026caeb..f6de96d6ee5 100644
    --- a/libstdc++-v3/doc/html/manual/diagnostics.html
    +++ b/libstdc++-v3/doc/html/manual/diagnostics.html
    @@ -7,7 +7,7 @@
         Standard Contents
       </th><td align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 5.  Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"/>Chapter 5. 
       Diagnostics
    -  <a id="id462728" class="indexterm"/>
    +  <a id="id442982" class="indexterm"/>
     </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics.exceptions"/>Exceptions</h2></div></div></div><div class="section" title="API Reference"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"/>API Reference</h3></div></div></div><p>
           All exception objects are defined in one of the standard header
           files: <code class="filename">exception</code>,
    diff --git a/libstdc++-v3/doc/html/manual/documentation_hacking.html b/libstdc++-v3/doc/html/manual/documentation_hacking.html
    index 11bc93ef4c0..798ea57f18f 100644
    --- a/libstdc++-v3/doc/html/manual/documentation_hacking.html
    +++ b/libstdc++-v3/doc/html/manual/documentation_hacking.html
    @@ -117,7 +117,7 @@
           supported, and are always aliased to dummy rules. These
           unsupported formats are: <span class="emphasis"><em>info</em></span>,
           <span class="emphasis"><em>ps</em></span>, and <span class="emphasis"><em>dvi</em></span>.
    -    </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id531887"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p>
    +    </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id512133"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p>
     	Prerequisite tools are Bash 2.0 or later,
     	<a class="link" href="http://www.doxygen.org/">Doxygen</a>, and
     	the <a class="link" href="http://www.gnu.org/software/coreutils/">GNU
    @@ -263,7 +263,7 @@
     	writing Doxygen comments. Single and double quotes, and
     	separators in filenames are two common trouble spots. When in
     	doubt, consult the following table.
    -      </p><div class="table"><a id="id532390"/><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id532552"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p>
    +      </p><div class="table"><a id="id512636"/><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id512798"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p>
     	Editing the DocBook sources requires an XML editor. Many
     	exist: some notable options
     	include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>,
    @@ -419,11 +419,11 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal
     	<a class="link" href="http://www.docbook.org/tdg/en/html/part2.html">online</a>.
     	An incomplete reference for HTML to Docbook conversion is
     	detailed in the table below.
    -      </p><div class="table"><a id="id533030"/><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>,
    +      </p><div class="table"><a id="id513276"/><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>,
     	<literallayout></td></tr><tr><td style="text-align: left"><ul></td><td style="text-align: left"><itemizedlist></td></tr><tr><td style="text-align: left"><ol></td><td style="text-align: left"><orderedlist></td></tr><tr><td style="text-align: left"><il></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><dl></td><td style="text-align: left"><variablelist></td></tr><tr><td style="text-align: left"><dt></td><td style="text-align: left"><term></td></tr><tr><td style="text-align: left"><dd></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><a href=""></td><td style="text-align: left"><ulink url=""></td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left"><literal>, <programlisting></td></tr><tr><td style="text-align: left"><strong></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left">"</td><td style="text-align: left"><quote></td></tr></tbody></table></div></div><br class="table-break"/><p>
       And examples of detailed markup for which there are no real HTML
       equivalents are listed in the table below.
    -</p><div class="table"><a id="id533231"/><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left">
    +</p><div class="table"><a id="id513477"/><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left">
     	<p><function>clear()</function></p>
     	<p><function>fs.clear()</function></p>
           </td></tr><tr><td style="text-align: left"><type></td><td style="text-align: left"><type>long long</type></td></tr><tr><td style="text-align: left"><varname></td><td style="text-align: left"><varname>fs</varname></td></tr><tr><td style="text-align: left"><literal></td><td style="text-align: left">
    diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html
    index ef3d6abcfb5..bd0d864e11c 100644
    --- a/libstdc++-v3/doc/html/manual/extensions.html
    +++ b/libstdc++-v3/doc/html/manual/extensions.html
    @@ -5,7 +5,7 @@
       
     </th></tr><tr><td align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr></table><hr/></div><div class="part" title="Part III.  Extensions"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"/>Part III. 
       Extensions
    -  <a id="id484410" class="indexterm"/>
    +  <a id="id464656" class="indexterm"/>
     </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="preface"><a href="bk01pt03pr01.html"/></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.link">Link- and run-time coexistence of release- and
         debug-mode components</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.alt">Alternatives for Coexistence</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="mt_allocator.html">20. The mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s02.html">Design Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch20s02.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch20s03.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.init">Initialization</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch20s04.html">Single Thread Example</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s05.html">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="chapter"><a href="bitmap_allocator.html">21. The bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.allocate"><code class="function">allocate</code></a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.deallocate"><code class="function">deallocate</code></a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.1">1</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.2">2</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.locality">Locality</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="policy_data_structures.html">22. Policy-Based Data Structures</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.configuring">
     	    Configuring via Template Parameters
    diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html
    index c394c39e30a..8b588b252ab 100644
    --- a/libstdc++-v3/doc/html/manual/facets.html
    +++ b/libstdc++-v3/doc/html/manual/facets.html
    @@ -3,7 +3,7 @@
     <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Facets
     Next


    Table of Contents

    I. Introduction -
    1. Status
    Implementation Status
    C++ 1998/2003
    Implementation Status
    Implementation Specific Behavior
    C++ 200x
    C++ TR1
    C++ TR 24733
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    3. Using
    Command Options
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Macros
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Linking
    Almost Nothing
    Finding Dynamic or Shared Libraries
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Structure
    Defaults
    Future
    Alternatives
    Containers
    Exceptions
    Exception Safety
    Exception Neutrality
    Doing without
    Compatibility
    With C
    With POSIX thread cancellation
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Data Race Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    Profile-based Performance Analysis
    II. +
    1. Status
    Implementation Status
    C++ 1998/2003
    Implementation Status
    Implementation Specific Behavior
    C++ 2011
    C++ TR1
    C++ TR 24733
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    3. Using
    Command Options
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Macros
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Linking
    Almost Nothing
    Finding Dynamic or Shared Libraries
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Structure
    Defaults
    Future
    Alternatives
    Containers
    Exceptions
    Exception Safety
    Exception Neutrality
    Doing without
    Compatibility
    With C
    With POSIX thread cancellation
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Data Race Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    Profile-based Performance Analysis
    II. Standard Contents
    4. Support @@ -16,13 +16,13 @@
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++0x and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. @@ -125,40 +125,40 @@
    Overview
    Existing tests
    -C++0x Requirements Test Sequence Descriptions -
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in ostream.h, no cin in istream.h
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from cctype is a macro -
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    +C++11 Requirements Test Sequence Descriptions +
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in ostream.h, no cin in istream.h
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from cctype is a macro +
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    Removal of ostream::form and istream::scan extensions -
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. -
    +
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. +
    No stream::attach(int fd) -
    +
    Support for C++98 dialect. -
    +
    Support for C++TR1 dialect. -
    -Support for C++0x dialect. -
    +
    +Support for C++11 dialect. +
    Container::iterator_type is not necessarily Container::value_type*
    C. Free Software Needs Free Documentation
    D. GNU General Public License version 3 -
    E. GNU Free Documentation License
    + + diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html index 578c8131a13..e424c2dc28a 100644 --- a/libstdc++-v3/doc/html/manual/io.html +++ b/libstdc++-v3/doc/html/manual/io.html @@ -7,7 +7,7 @@ Standard Contents
     Next

     Next

    The following FAQ entry points out that diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html index 4fad79f1fec..978537d6df3 100644 --- a/libstdc++-v3/doc/html/manual/localization.html +++ b/libstdc++-v3/doc/html/manual/localization.html @@ -7,8 +7,8 @@ Standard Contents

     Next

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    Boost C++ Libraries documentation, shared_ptr diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html index d0197db70b1..b872779fc53 100644 --- a/libstdc++-v3/doc/html/manual/numerics.html +++ b/libstdc++-v3/doc/html/manual/numerics.html @@ -7,7 +7,7 @@ Standard Contents  Next


    Using complex<> becomes even more comple- er, sorry, diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index cf37b7d163a..6af13679837 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode.html @@ -13,11 +13,11 @@ explicit source declaration or by compiling existing sources with a specific compiler flag.

    The standard C++ library contains associative containers based on red-black trees and collision-chaining hash tables. These are very useful, but they are not ideal for all types of @@ -259,7 +259,7 @@

    The figure below shows the different underlying data structures currently supported in this library. -


    +


    A shows a collision-chaining hash-table, B shows a probing hash-table, C shows a red-black tree, D shows a splay tree, E shows a tree based on an ordered vector(implicit in the order of the @@ -378,7 +378,7 @@ no guarantee that the elements traversed will coincide with the logical elements between 1 and 5, as in label B. -


    +


    In our opinion, this problem is not caused just because red-black trees are order preserving while collision-chaining hash tables are (generally) not - it @@ -429,7 +429,7 @@ list, as in the graphic below, label B. Here the iterators are as light as can be, but the hash-table's operations are more complicated. -


    +


    It should be noted that containers based on collision-chaining hash-tables are not the only ones with this type of behavior; many other self-organizing data structures display it as well. @@ -445,7 +445,7 @@ container. The graphic below shows three cases: A1 and A2 show a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 show a collision-chaining hash table. -


    1. +


      1. Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can be de-referenced and incremented. The sequence of iterators changed, but in a way that is well-defined by the interface. @@ -681,7 +681,7 @@ typically less structured than an associative container's tree; the third simply uses an associative container. These are shown in the figure below with labels A1 and A2, B, and C. -


        +


        No single implementation can completely replace any of the others. Some have better push and pop amortized performance, some have diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html index 777dda3528a..f1fca3e706c 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html @@ -171,7 +171,7 @@ naturally; collision-chaining hash tables (label B) store equivalent-key values in the same bucket, the bucket can be arranged so that equivalent-key values are consecutive. -


        +


        Put differently, the standards' non-unique mapping associative-containers are associative containers that map primary keys to linked lists that are embedded into the @@ -253,7 +253,7 @@ first graphic above. Labels A and B, respectively. Each shaded box represents some size-type or secondary associative-container. -


        +


        In the first example above, then, one would use an associative container mapping each user to an associative container which maps each application id to a start time (see @@ -306,7 +306,7 @@ shows invariants for order-preserving containers: point-type iterators are synonymous with range-type iterators. Orthogonally, Cshows invariants for "set" - containers: iterators are synonymous with const iterators.


        Note that point-type iterators in self-organizing containers + containers: iterators are synonymous with const iterators.


        Note that point-type iterators in self-organizing containers (hash-based associative containers) lack movement operators, such as operator++ - in fact, this is the reason why this library differentiates from the standard C++ librarys @@ -345,7 +345,7 @@ to the question of whether point-type iterators and range-type iterators are valid. The graphic below shows tags corresponding to different types of invalidation guarantees. -


      The graphic below shows the relationships. -


    Hash-tables, as opposed to trees, do not naturally grow or shrink. It is necessary to specify policies to determine how and when a hash table should change its size. Usually, resize policies can be decomposed into orthogonal policies:

    1. A size policy indicating how a hash table @@ -668,10 +668,10 @@ and some load factor be denoted by Α. We would like to calculate the minimal length of k, such that if there were Α m elements in the hash table, a probe sequence of length k would - be found with probability at most 1/m.


      Denote the probability that a probe sequence of length + be found with probability at most 1/m.


      Denote the probability that a probe sequence of length k appears in bin i by pi, the length of the probe sequence of bin i by - li, and assume uniform distribution. Then

      Equation 22.7.  + li, and assume uniform distribution. Then

      Equation 22.7.  Probability of Probe Sequence of Length k

      p1 = @@ -685,7 +685,7 @@ li are negatively-dependent ([biblio.dubhashi98neg]) . Let - I(.) denote the indicator function. Then

      Equation 22.8.  + I(.) denote the indicator function. Then

      Equation 22.8.  Probability Probe Sequence in Some Bin

      P( existsi li ≥ k ) = @@ -724,7 +724,7 @@ a resize is needed, and if so, what is the new size (points D to G); following the resize, it notifies the policy that a resize has completed (point H); finally, the element is - inserted, and the policy notified (point I).


      In practice, a resize policy can be usually orthogonally + inserted, and the policy notified (point I).


      In practice, a resize policy can be usually orthogonally decomposed to a size policy and a trigger policy. Consequently, the library contains a single class for instantiating a resize policy: hash_standard_resize_policy @@ -733,8 +733,8 @@ both, and acts as a standard delegate ([biblio.gof]) to these policies.

      The two graphics immediately below show sequence diagrams illustrating the interaction between the standard resize policy - and its trigger and size policies, respectively.


      The library includes the following instantiations of size and trigger policies:


      These problems are solved by a combination of two means: node iterators, and template-template node updater parameters.

      Each tree-based container defines two additional iterator types, const_node_iterator @@ -920,7 +920,7 @@ node_update class, and publicly subclasses node_update. The graphic below shows this scheme, as well as some predefined policies (which are explained - below).


      node_update (an instantiation of + below).


      node_update (an instantiation of Node_Update) must define metadata_type as the type of metadata it requires. For order statistics, e.g., metadata_type might be size_t. @@ -939,7 +939,7 @@ nd_it. For example, say node x in the graphic below label A has an invalid invariant, but its' children, y and z have valid invariants. After the invocation, all three - nodes should have valid invariants, as in label B.


      When a tree operation might invalidate some node invariant, + nodes should have valid invariants, as in label B.


      When a tree operation might invalidate some node invariant, it invokes this method in its node_update base to restore the invariant. For example, the graphic below shows an insert operation (point A); the tree performs some @@ -947,7 +947,7 @@ C, and D). (It is well known that any insert, erase, split or join, can restore all node invariants by a small number of node invariant updates ([biblio.clrs2001]) - .


      To complete the description of the scheme, three questions + .


      To complete the description of the scheme, three questions need to be answered:

      1. How can a tree which supports order statistics define a method such as find_by_order?

      2. How can the node updater base access methods of the tree?

      3. How can the following cyclic dependency be resolved? @@ -989,7 +989,7 @@ node's metadata (this is halting reducible). In the graphic below, assume the shaded node is inserted. The tree would have to traverse the useless path shown to the root, applying - redundant updates all the way.


      A null policy class, null_node_update + redundant updates all the way.


    A null policy class, null_node_update solves both these problems. The tree detects that node invariants are irrelevant, and defines all accordingly.

    Trie-based containers support node invariants, as do tree-based containers. There are two minor differences, though, which, unfortunately, thwart sharing them sharing the same node-updating policies:

    The graphic below shows the scheme, as well as some predefined - policies (which are explained below).


    This library offers the following pre-defined trie node + policies (which are explained below).


    This library offers the following pre-defined trie node updating policies:

    this library allows instantiating lists with policies implementing any algorithm moving nodes to the front of the list (policies implementing algorithms interchanging nodes are unsupported).

    Associative containers based on lists are parametrized by a @@ -1311,7 +1311,7 @@ sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are - shown in the graphic below, in labels A1 and A2, label B, and label C.


    Roughly speaking, any value that is both pushed and popped + shown in the graphic below, in labels A1 and A2, label B, and label C.


    Roughly speaking, any value that is both pushed and popped from a priority queue must incur a logarithmic expense (in the amortized sense). Any priority queue implementation that would avoid this, would violate known bounds on comparison-based @@ -1391,7 +1391,7 @@ container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category; this is one of the possible tags shown in the graphic below. -


    Additionally, a traits mechanism can be used to query a +


    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then

    __gnu_pbds::container_traits<Cntnr>

    is a traits class identifying the properties of the diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html index ec58b190dd7..28942eb9bf6 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html @@ -62,7 +62,7 @@ In addition, there are the following diagnostics classes, used to report errors specific to this library's data structures. -


    Perflint: A Context Sensitive Performance Advisor for C++ Programs . Lixia Liu. Silvius Rus. Copyright © 2009 . Proceedings of the 2009 International Symposium on Code Generation diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index d72a0c20de2..eeefda61cea 100644 --- a/libstdc++-v3/doc/html/manual/status.html +++ b/libstdc++-v3/doc/html/manual/status.html @@ -3,12 +3,12 @@ Chapter 1. Status

    This status table is based on the table of contents of ISO/IEC 14882:2003.

    This page describes the C++ support in mainline GCC SVN, not in any particular release. -

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    18 Language support @@ -142,22 +142,22 @@ particular release. in this chapter.

    [27.8.1.4]/16 Calling fstream::sync when a get area exists will... whatever fflush() does, I think. -

    This table is based on the table of contents of ISO/IEC JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11 Final Draft International Standard, Standard for Programming Language C++

    -In this implementation -std=gnu++0x or --std=c++0x flags must be used to enable language +In this implementation -std=gnu++11 or +-std=c++11 flags must be used to enable language and library features. See dialect options. The pre-defined symbol __GXX_EXPERIMENTAL_CXX0X__ is used to check for the presence of the required flag.

    -This page describes the C++0x support in mainline GCC SVN, not in any +This page describes the C++11 support in mainline GCC SVN, not in any particular release. -

    Table 1.2. C++ 200x Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.2. C++ 2011 Implementation Status

    SectionDescriptionStatusComments
    18 Language support @@ -196,7 +196,7 @@ particular release. 23 Containers -
    23.1General  
    23.2Container requirements  
    23.2.1General container requirementsY 
    23.2.2Container data racesY 
    23.2.3Sequence containersY 
    23.2.4Associative containersY 
    23.2.5Unordered associative containersY 
    23.3Sequence containers  
    23.3.2Class template arrayY 
    23.3.3Class template dequeY 
    23.3.4Class template forward_listY 
    23.3.5Class template listY 
    23.3.6Class template vectorY 
    23.3.7Class vector<bool>Y 
    23.4Associative containers  
    23.4.4Class template mapY 
    23.4.5Class template multimapY 
    23.4.6Class template setY 
    23.4.7Class template multisetY 
    23.5Unordered associative containers  
    23.5.4Class template unordered_mapY 
    23.5.5Class template unordered_multimapY 
    23.5.6Class template unordered_setY 
    23.5.7Class template unordered_multisetY 
    23.6Container adaptors  
    23.6.1Class template queueY 
    23.6.2Class template priority_queueY 
    23.6.3Class template stackY 
    +
    23.1General  
    23.2Container requirements  
    23.2.1General container requirementsY 
    23.2.2Container data racesY 
    23.2.3Sequence containersY 
    23.2.4Associative containersPartialMissing emplace members
    23.2.5Unordered associative containersPartialMissing emplace members
    23.3Sequence containers  
    23.3.2Class template arrayY 
    23.3.3Class template dequeY 
    23.3.4Class template forward_listY 
    23.3.5Class template listY 
    23.3.6Class template vectorY 
    23.3.7Class vector<bool>Y 
    23.4Associative containers  
    23.4.4Class template mapY 
    23.4.5Class template multimapY 
    23.4.6Class template setY 
    23.4.7Class template multisetY 
    23.5Unordered associative containers  
    23.5.4Class template unordered_mapY 
    23.5.5Class template unordered_multimapY 
    23.5.6Class template unordered_setY 
    23.5.7Class template unordered_multisetY 
    23.6Container adaptors  
    23.6.1Class template queueY 
    23.6.2Class template priority_queueY 
    23.6.3Class template stackY 
    24 Iterators @@ -245,7 +245,7 @@ In this implementation the header names are prefixed by

    This page describes the TR1 support in mainline GCC SVN, not in any particular release. -

    Table 1.3. C++ TR1 Implementation Status

    SectionDescriptionStatusComments
    2General Utilities
    2.1Reference wrappers  
    2.1.1Additions to header <functional> synopsisY 
    2.1.2Class template reference_wrapper  
    2.1.2.1reference_wrapper construct/copy/destroyY 
    2.1.2.2reference_wrapper assignmentY 
    2.1.2.3reference_wrapper accessY 
    2.1.2.4reference_wrapper invocationY 
    2.1.2.5reference_wrapper helper functionsY 
    2.2Smart pointers  
    2.2.1Additions to header <memory> synopsisY 
    2.2.2Class bad_weak_ptrY 
    2.2.3Class template shared_ptr  +

    Table 1.3. C++ TR1 Implementation Status

    SectionDescriptionStatusComments
    2General Utilities
    2.1Reference wrappers  
    2.1.1Additions to header <functional> synopsisY 
    2.1.2Class template reference_wrapper  
    2.1.2.1reference_wrapper construct/copy/destroyY 
    2.1.2.2reference_wrapper assignmentY 
    2.1.2.3reference_wrapper accessY 
    2.1.2.4reference_wrapper invocationY 
    2.1.2.5reference_wrapper helper functionsY 
    2.2Smart pointers  
    2.2.1Additions to header <memory> synopsisY 
    2.2.2Class bad_weak_ptrY 
    2.2.3Class template shared_ptr 

    Uses code from boost::shared_ptr. @@ -258,7 +258,7 @@ decimal floating-point arithmetic

    This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. -

    Table 1.4. C++ TR 24733 Implementation Status

    This part deals with the functions called and objects created automatically during the course of a program's existence. diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html index 9153c93c18a..c4f26a77010 100644 --- a/libstdc++-v3/doc/html/manual/test.html +++ b/libstdc++-v3/doc/html/manual/test.html @@ -392,10 +392,10 @@ Example 1: Testing compilation only // { dg-do compile } Example 2: Testing for expected warnings on line 36, which all targets fail -// { dg-warning "string literals" "" { xfail *-*-* } 36 +// { dg-warning "string literals" "" { xfail *-*-* } 36 } Example 3: Testing for expected warnings on line 36 -// { dg-warning "string literals" "" { target *-*-* } 36 +// { dg-warning "string literals" "" { target *-*-* } 36 } Example 4: Testing for compilation errors on line 41 // { dg-do compile } @@ -493,7 +493,7 @@ only default variables. reporting functions including:

    • time_counter

    • resource_counter

    • report_performance

     Next

    The set of features available in the GNU C++ library is shaped by - several GCC + several GCC Command Options. Options that impact libstdc++ are enumerated and detailed in the table below.

    By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. -

    Table 3.1. C++ Command Options

    Option FlagsDescription
    -std=c++98Use the 1998 ISO C++ standard plus amendments.
    -std=gnu++98As directly above, with GNU extensions.
    -std=c++0xUse the working draft of the upcoming ISO C++0x standard.
    -std=gnu++0xAs directly above, with GNU extensions.
    -fexceptionsSee exception-free dialect
    -frttiAs above, but RTTI-free dialect.
    -pthread or -pthreadsFor ISO C++0x <thread>, <future>, +


    diff --git a/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html b/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html index 9796e4e8a60..4d1d6745b73 100644 --- a/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html +++ b/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html @@ -26,7 +26,7 @@ cxxabi.h.

    In the - C++0x dialect add + C++11 dialect add

    • initializer_list

    • diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html index 1a8e9bd0c70..a46b55b9ba3 100644 --- a/libstdc++-v3/doc/html/manual/using_exceptions.html +++ b/libstdc++-v3/doc/html/manual/using_exceptions.html @@ -266,7 +266,7 @@ is called. } catch(...) { this->_M_setstate(ios_base::badbit); } -

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) @@ -275,39 +275,39 @@ is called. . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    Error and Exception Handling . David Abrahams . Boost - .

    Standard Library Exception Policy . Matt Austern. WG21 N1077 - .

    ia64 c++ abi exception handling . Richard Henderson. GNU - .

    GCC Bug 25191: exception_defines.h #defines try/catch diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html index db60e432187..99ecff25efa 100644 --- a/libstdc++-v3/doc/html/manual/using_headers.html +++ b/libstdc++-v3/doc/html/manual/using_headers.html @@ -16,45 +16,44 @@ Headers), and all others (TR1, C++ ABI, and Extensions).

    Two dialects of standard headers are supported, corresponding to - the 1998 standard as updated for 2003, and the draft of the - upcoming 200x standard. + the 1998 standard as updated for 2003, and the current 2011 standard.

    C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. -



    -C++0x include files. These are only available in C++0x compilation -mode, i.e. -std=c++0x or -std=gnu++0x. -



    +



    +C++11 include files. These are only available in C++11 compilation +mode, i.e. -std=c++11 or -std=gnu++11. +



    In addition, TR1 includes as: -



    Decimal floating-point arithmetic is available if the C++ +



    Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). -


    +


    Also included are files for the C++ ABI interface: -


    +


    And a large variety of extensions. -





    A few simple rules.

    First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like

     #include <array>
     #include <functional>
    -

    Implies C++0x mode. To use the entities in <array>, the C++0x -compilation mode must be used, which implies the C++0x functionality +

    Implies C++11 mode. To use the entities in <array>, the C++11 +compilation mode must be used, which implies the C++11 functionality (and deprecations) in <functional> will be present.

    Second, the other headers can be included with either dialect of -the standard headers, although features and types specific to C++0x -are still only enabled when in C++0x compilation mode. So, to use +the standard headers, although features and types specific to C++11 +are still only enabled when in C++11 compilation mode. So, to use rvalue references with __gnu_cxx::vstring, or to use the debug-mode versions of std::unordered_map, one must use -the std=gnu++0x compiler flag. (Or std=c++0x, of course.) -

    A special case of the second rule is the mixing of TR1 and C++0x +the std=gnu++11 compiler flag. (Or std=c++11, of course.) +

    A special case of the second rule is the mixing of TR1 and C++11 facilities. It is possible (although not especially prudent) to -include both the TR1 version and the C++0x version of header in the +include both the TR1 version and the C++11 version of header in the same translation unit:

     #include <tr1/type_traits>
     #include <type_traits>
    -

    Several parts of C++0x diverge quite substantially from TR1 predecessors. +

    Several parts of C++11 diverge quite substantially from TR1 predecessors.

     Next

    If you don't know what functors are, you're not alone. Many people get slightly the wrong idea. In the interest of not reinventing the wheel, we will refer you to the introduction to the functor concept written by SGI as chapter of their STL, in diff --git a/libstdc++-v3/doc/xml/faq.xml b/libstdc++-v3/doc/xml/faq.xml index 4be79df6762..af9b6da82fe 100644 --- a/libstdc++-v3/doc/xml/faq.xml +++ b/libstdc++-v3/doc/xml/faq.xml @@ -694,7 +694,7 @@ Long answer: See the implementation status pages for C++98, TR1, and - C++0x. + C++11. diff --git a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml index 41193bb549d..74a451f0867 100644 --- a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml +++ b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml @@ -693,14 +693,15 @@ other usage is correct. At this time most of the features of the SGI STL extension have been replaced by standardized libraries. - In particular, the unordered_map and unordered_set containers of TR1 - are suitable replacement for the non-standard hash_map and hash_set - containers in the SGI STL. + In particular, the unordered_map and + unordered_set containers of TR1 and C++ 2011 are suitable + replacements for the non-standard hash_map and + hash_set containers in the SGI STL. Header files hash_map and hash_set moved to ext/hash_map and ext/hash_set, respectively. At the same time, all types in these files are enclosed -in namespace __gnu_cxx. Later versions move deprecate +in namespace __gnu_cxx. Later versions deprecate these files, and suggest using TR1's unordered_map and unordered_set instead. @@ -832,7 +833,7 @@ No stream::attach(int fd) -

    +<section xml:id="backwards.support_cxx98"><info><title> Support for C++98 dialect. @@ -908,7 +909,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
    -
    +<section xml:id="backwards.support_tr1"><info><title> Support for C++TR1 dialect. @@ -1000,19 +1001,19 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
    -
    -Support for C++0x dialect. +<section xml:id="backwards.support_cxx11"><info><title> +Support for C++11 dialect. -Check for baseline language coverage in the compiler for the C++0xstandard. +Check for baseline language coverage in the compiler for the C++11 standard. -# AC_COMPILE_STDCXX_OX -AC_DEFUN([AC_COMPILE_STDCXX_0X], [ - AC_CACHE_CHECK(if g++ supports C++0x features without additional flags, - ac_cv_cxx_compile_cxx0x_native, +# AC_COMPILE_STDCXX_11 +AC_DEFUN([AC_COMPILE_STDCXX_11], [ + AC_CACHE_CHECK(if g++ supports C++11 features without additional flags, + ac_cv_cxx_compile_cxx11_native, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ @@ -1030,16 +1031,16 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [ typedef check<int> check_type; check_type c; check_type&& cr = c;],, - ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no) + ac_cv_cxx_compile_cxx11_native=yes, ac_cv_cxx_compile_cxx11_native=no) AC_LANG_RESTORE ]) - AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x, - ac_cv_cxx_compile_cxx0x_cxx, + AC_CACHE_CHECK(if g++ supports C++11 features with -std=c++11, + ac_cv_cxx_compile_cxx11_cxx, [AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=c++0x" + CXXFLAGS="$CXXFLAGS -std=c++11" AC_TRY_COMPILE([ template <typename T> struct check @@ -1055,17 +1056,17 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [ typedef check<int> check_type; check_type c; check_type&& cr = c;],, - ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no) + ac_cv_cxx_compile_cxx11_cxx=yes, ac_cv_cxx_compile_cxx11_cxx=no) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) - AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x, - ac_cv_cxx_compile_cxx0x_gxx, + AC_CACHE_CHECK(if g++ supports C++11 features with -std=gnu++11, + ac_cv_cxx_compile_cxx11_gxx, [AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([ template <typename T> struct check @@ -1081,33 +1082,33 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [ typedef check<int> check_type; check_type c; check_type&& cr = c;],, - ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no) + ac_cv_cxx_compile_cxx11_gxx=yes, ac_cv_cxx_compile_cxx11_gxx=no) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) - if test "$ac_cv_cxx_compile_cxx0x_native" = yes || - test "$ac_cv_cxx_compile_cxx0x_cxx" = yes || - test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then - AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ]) + if test "$ac_cv_cxx_compile_cxx11_native" = yes || + test "$ac_cv_cxx_compile_cxx11_cxx" = yes || + test "$ac_cv_cxx_compile_cxx11_gxx" = yes; then + AC_DEFINE(HAVE_STDCXX_11,,[Define if g++ supports C++11 features. ]) fi ]) -Check for library coverage of the C++0xstandard. +Check for library coverage of the C++2011 standard. -# AC_HEADER_STDCXX_0X -AC_DEFUN([AC_HEADER_STDCXX_0X], [ - AC_CACHE_CHECK(for ISO C++ 0x include files, - ac_cv_cxx_stdcxx_0x, - [AC_REQUIRE([AC_COMPILE_STDCXX_0X]) +# AC_HEADER_STDCXX_11 +AC_DEFUN([AC_HEADER_STDCXX_11], [ + AC_CACHE_CHECK(for ISO C++11 include files, + ac_cv_cxx_stdcxx_11, + [AC_REQUIRE([AC_COMPILE_STDCXX_11]) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([ #include <cassert> @@ -1175,12 +1176,12 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [ #include <valarray> #include <vector> ],, - ac_cv_cxx_stdcxx_0x=yes, ac_cv_cxx_stdcxx_0x=no) + ac_cv_cxx_stdcxx_11=yes, ac_cv_cxx_stdcxx_11=no) AC_LANG_RESTORE CXXFLAGS="$ac_save_CXXFLAGS" ]) - if test "$ac_cv_cxx_stdcxx_0x" = yes; then - AC_DEFINE(STDCXX_0X_HEADERS,,[Define if ISO C++ 0x header files are present. ]) + if test "$ac_cv_cxx_stdcxx_11" = yes; then + AC_DEFINE(STDCXX_11_HEADERS,,[Define if ISO C++11 header files are present. ]) fi ]) @@ -1193,11 +1194,11 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [ AC_CACHE_CHECK(for unordered_map, ac_cv_cxx_unordered_map, - [AC_REQUIRE([AC_COMPILE_STDCXX_0X]) + [AC_REQUIRE([AC_COMPILE_STDCXX_11]) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([#include <unordered_map>], [using std::unordered_map;], ac_cv_cxx_unordered_map=yes, ac_cv_cxx_unordered_map=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -1214,11 +1215,11 @@ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ AC_CACHE_CHECK(for unordered_set, ac_cv_cxx_unordered_set, - [AC_REQUIRE([AC_COMPILE_STDCXX_0X]) + [AC_REQUIRE([AC_COMPILE_STDCXX_11]) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([#include <unordered_set>], [using std::unordered_set;], ac_cv_cxx_unordered_set=yes, ac_cv_cxx_unordered_set=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -1229,6 +1230,17 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ fi ]) + + + Some C++11 features first appeared in GCC 4.3 and could be enabled by + and for GCC + releases which pre-date the 2011 standard. Those C++11 features and GCC's + support for them were still changing until the 2011 standard was finished, + but the autoconf checks above could be extended to test for incomplete + C++11 support with and + . + +
    @@ -1237,7 +1249,7 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ <para> - This is a change in behavior from the previous version. Now, most + This is a change in behavior from older versions. Now, most <type>iterator_type</type> typedefs in container classes are POD objects, not <type>value_type</type> pointers. </para> diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml index 6b1efa8006e..5d893d7a1be 100644 --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -172,7 +172,7 @@ <listitem><para>Enables link-type checks for the availability of the clock_gettime clocks, used in the implementation of [time.clock], and of the nanosleep and sched_yield functions, used in the - implementation of [thread.thread.this] of the current C++0x draft. + implementation of [thread.thread.this] of the 2011 ISO C++ standard. The choice OPTION=yes checks for the availability of the facilities in libc and libposix4. In case of need the latter is also linked to libstdc++ as part of the build process. OPTION=rt also searches diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml index c58bde34065..89b2c31b811 100644 --- a/libstdc++-v3/doc/xml/manual/debug_mode.xml +++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml @@ -267,12 +267,12 @@ which always works correctly. </tgroup> </table> -<para>In addition, when compiling in C++0x mode, these additional +<para>In addition, when compiling in C++11 mode, these additional containers have additional debug capability. </para> <table frame="all"> -<title>Debugging Containers C++0x +Debugging Containers C++11 @@ -588,7 +588,7 @@ template<typename _Tp, typename _Allocator = allocator<_Tp> Achieving link- and run-time coexistence is not a trivial implementation task. To achieve this goal we required a small - extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as + extension to the GNU C++ compiler (since incorporated into the C++11 language specification, described in the GCC Manual for the C++ language as namespace association), and a complex organization of debug- and release-modes. The end result is that we have achieved per-use @@ -630,7 +630,7 @@ namespace std defined in the namespace __cxx1998) and also the debug-mode container. The debug-mode container is defined within the namespace __debug, which is associated with namespace -std via the C++0x namespace association language feature. This +std via the C++11 namespace association language feature. This method allows the debug and release versions of the same component to coexist at compile-time and link-time without causing an unreasonable maintenance burden, while minimizing confusion. Again, this boils down diff --git a/libstdc++-v3/doc/xml/manual/diagnostics.xml b/libstdc++-v3/doc/xml/manual/diagnostics.xml index 1a6a3f17dc2..fd21442b992 100644 --- a/libstdc++-v3/doc/xml/manual/diagnostics.xml +++ b/libstdc++-v3/doc/xml/manual/diagnostics.xml @@ -117,7 +117,7 @@ Please note that the checks are based on the requirements in the original - C++ standard, some of which have changed in the upcoming C++0x revision. + C++ standard, some of which have changed in the new C++11 revision. Additionally, some correct code might be rejected by the concept checks, for example template argument types may need to be complete when used in a template definition, rather than at the point of instantiation. diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml index 08876deb18a..145c11f28cc 100644 --- a/libstdc++-v3/doc/xml/manual/evolution.xml +++ b/libstdc++-v3/doc/xml/manual/evolution.xml @@ -399,7 +399,7 @@ Backward include edit. - Added in C++0x + Added in C++11 auto_ptr.h and binders.h diff --git a/libstdc++-v3/doc/xml/manual/extensions.xml b/libstdc++-v3/doc/xml/manual/extensions.xml index fb2f5ca83e8..9932a020dd9 100644 --- a/libstdc++-v3/doc/xml/manual/extensions.xml +++ b/libstdc++-v3/doc/xml/manual/extensions.xml @@ -201,7 +201,7 @@ extensions, be aware of two things: The SGI hashing classes hash_set and hash_set have been deprecated by the unordered_set, unordered_multiset, unordered_map, - unordered_multimap containers in TR1 and the upcoming C++0x, and + unordered_multimap containers in TR1 and C++11, and may be removed in future releases. diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml index 36e07b4370f..7621de9c2b1 100644 --- a/libstdc++-v3/doc/xml/manual/intro.xml +++ b/libstdc++-v3/doc/xml/manual/intro.xml @@ -29,8 +29,8 @@ - - + + @@ -577,7 +577,7 @@ requirements of the license of GCC. std::complex over-encapsulated Add the real(T) and imag(T) - members; in C++0x mode, also adjust the existing + members; in C++11 mode, also adjust the existing real() and imag() members and free functions. @@ -709,7 +709,7 @@ requirements of the license of GCC. 550: What should the return type of pow(float,int) be? - In C++0x mode, remove the pow(float,int), etc., signatures. + In C++11 mode, remove the pow(float,int), etc., signatures. 586: @@ -739,7 +739,7 @@ requirements of the license of GCC. 691: const_local_iterator cbegin, cend missing from TR1 - In C++0x mode add cbegin(size_type) and cend(size_type) + In C++11 mode add cbegin(size_type) and cend(size_type) to the unordered containers. @@ -764,7 +764,7 @@ requirements of the license of GCC. 761: unordered_map needs an at() member function - In C++0x mode, add at() and at() const. + In C++11 mode, add at() and at() const. 775: @@ -776,13 +776,13 @@ requirements of the license of GCC. 776: Undescribed assign function of std::array - In C++0x mode, remove assign, add fill. + In C++11 mode, remove assign, add fill. 781: std::complex should add missing C99 functions - In C++0x mode, add std::proj. + In C++11 mode, add std::proj. 809: @@ -794,7 +794,7 @@ requirements of the license of GCC. 844: complex pow return type is ambiguous - In C++0x mode, remove the pow(complex<T>, int) signature. + In C++11 mode, remove the pow(complex<T>, int) signature. 853: diff --git a/libstdc++-v3/doc/xml/manual/policy_data_structures.xml b/libstdc++-v3/doc/xml/manual/policy_data_structures.xml index 4ecb933a0e5..11fad5e018d 100644 --- a/libstdc++-v3/doc/xml/manual/policy_data_structures.xml +++ b/libstdc++-v3/doc/xml/manual/policy_data_structures.xml @@ -1365,7 +1365,7 @@ __gnu_pbds::cc_hash_table instead of std::unordered_map, since unordered map does not necessarily mean a hash-based map as implied by - the C++ library (C++0x or TR1). For example, list-based associative + the C++ library (C++11 or TR1). For example, list-based associative containers, which are very useful for the construction of "multimaps," are also unordered. diff --git a/libstdc++-v3/doc/xml/manual/shared_ptr.xml b/libstdc++-v3/doc/xml/manual/shared_ptr.xml index 78cc8c4ba83..6e3392f88ee 100644 --- a/libstdc++-v3/doc/xml/manual/shared_ptr.xml +++ b/libstdc++-v3/doc/xml/manual/shared_ptr.xml @@ -32,14 +32,6 @@ and implements shared ownership semantics. circular-linked-list. - - At the time of writing the C++0x working paper doesn't mention how - threads affect shared_ptr, but it is likely to follow the existing - practice set by boost::shared_ptr. The - shared_ptr in libstdc++ is derived from Boost's, so the same rules - apply. - -
    @@ -163,10 +155,10 @@ that simplifies the implementation slightly. -C++0x-only features are: rvalue-ref/move support, allocator support, +C++11-only features are: rvalue-ref/move support, allocator support, aliasing constructor, make_shared & allocate_shared. Additionally, the constructors taking auto_ptr parameters are -deprecated in C++0x mode. +deprecated in C++11 mode. @@ -293,20 +285,20 @@ used when libstdc++ is built without --enable-threads. -
    Dual C++0x and TR1 Implementation +
    Dual C++11 and TR1 Implementation -The interface of tr1::shared_ptr was extended for C++0x +The interface of tr1::shared_ptr was extended for C++11 with support for rvalue-references and the other features from N2351. The _Sp_counted_base base class is implemented in tr1/boost_sp_shared_count.h and is common to the TR1 -and C++0x versions of shared_ptr. +and C++11 versions of shared_ptr. The classes derived from _Sp_counted_base (see Class Hierarchy -above) and __shared_count are implemented separately for C++0x +above) and __shared_count are implemented separately for C++11 and TR1, in bits/shared_ptr.h and tr1/shared_ptr.h respectively. @@ -314,9 +306,9 @@ and TR1, in bits/shared_ptr.h and The TR1 implementation is considered relatively stable, so is unlikely to change unless bug fixes require it. If the code that is common to both -C++0x and TR1 modes needs to diverge further then it might be necessary to +C++11 and TR1 versions needs to diverge further then it might be necessary to duplicate _Sp_counted_base and only make changes to -the C++0x version. +the C++11 version.
    @@ -332,9 +324,9 @@ the C++0x version. As noted in N2351, these functions can be implemented non-intrusively using the alias constructor. However the aliasing constructor is only available -in C++0x mode, so in TR1 mode these casts rely on three non-standard +in C++11 mode, so in TR1 mode these casts rely on three non-standard constructors in shared_ptr and __shared_ptr. -In C++0x mode these constructors and the related tag types are not needed. +In C++11 mode these constructors and the related tag types are not needed. @@ -431,7 +423,7 @@ the following types, depending on how the shared_ptr is constructed. The shared_ptr atomic access - clause in the C++0x working draft is not implemented in GCC. + clause in the C++11 standard is not implemented in GCC. @@ -445,7 +437,7 @@ the following types, depending on how the shared_ptr is constructed. Unlike Boost, this implementation does not use separate classes for the pointer+deleter and pointer+deleter+allocator cases in - C++0x mode, combining both into _Sp_counted_deleter and using + C++11 mode, combining both into _Sp_counted_deleter and using allocator when the user doesn't specify an allocator. If it was found to be beneficial an additional class could easily be added. With the current implementation, diff --git a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml deleted file mode 100644 index db4ecb69019..00000000000 --- a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml +++ /dev/null @@ -1,2621 +0,0 @@ -
    - - -C++ 200x - - - ISO C++ - - - 200x - - - - - -This table is based on the table of contents of ISO/IEC -JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11 -Final Draft International Standard, Standard for Programming Language C++ - - - -In this implementation -std=gnu++0x or --std=c++0x flags must be used to enable language -and library -features. See dialect -options. The pre-defined symbol -__GXX_EXPERIMENTAL_CXX0X__ is used to check for the -presence of the required flag. - - - -This page describes the C++0x support in mainline GCC SVN, not in any -particular release. - - - - - -C++ 200x Implementation Status - - - - - - - - - Section - Description - Status - Comments - - - - - - - - 18 - - - Language support - - - - - 18.1 - General - Y - - - - - 18.2 - Types - Partial - Missing offsetof, max_align_t - - - 18.3 - Implementation properties - - - - - - 18.3.2 - Numeric Limits - - - - - 18.3.2.3 - Class template numeric_limits - Y - - - - 18.3.2.4 - numeric_limits members - Y - - - - - 18.3.2.5 - float_round_style - N - - - - - 18.3.2.6 - float_denorm_style - N - - - - 18.3.2.7 - numeric_limits specializations - Y - - - - - 18.3.3 - C Library - Y - - - - - 18.4 - Integer types - - - - - 18.4.1 - Header <cstdint> synopsis - Y - - - - - 18.5 - Start and termination - Partial - C library dependency for quick_exit, at_quick_exit - - - 18.6 - Dynamic memory management - Y - - - - 18.7 - Type identification - - - - - 18.7.1 - Class type_info - Y - - - - 18.7.2 - Class bad_cast - Y - - - - 18.7.3 - Class bad_typeid - Y - - - - 18.8 - Exception handling - - - - - 18.8.1 - Class exception - Y - - - - 18.8.2 - Class bad_exception - Y - - - - 18.8.3 - Abnormal termination - Y - - - - 18.8.4 - uncaught_exception - Y - - - - 18.8.5 - Exception Propagation - Y - - - - 18.8.6 - nested_exception - Y - - - - 18.9 - Initializer lists - - - - - 18.9.1 - Initializer list constructors - Y - - - - 18.9.2 - Initializer list access - Y - - - - 18.9.3 - Initializer list range access - Y - - - - 18.10 - Other runtime support - Y - - - - - 19 - - - Diagnostics - - - - 19.1 - General - Y - - - - 19.2 - Exception classes - Y - - - - 19.3 - Assertions - Y - - - - 19.4 - Error numbers - Y - - - - 19.5 - System error support - - - - - 19.5.1 - Class error_category - Y - - - - 19.5.2 - Class error_code - Y - - - - 19.5.3 - Class error_condition - Y - - - - 19.5.4 - Comparison operators - Y - - - - 19.5.5 - Class system_error - Y - - - - - 20 - - - General utilities - - - - 20.1 - General - - - - - 20.2 - Utility components - - - - - 20.2.1 - Operators - Y - - - - 20.2.2 - Swap - Y - - - - 20.2.3 - forward and move helpers - Y - - - - 20.2.4 - Function template declval - Y - - - - 20.3 - Pairs - - - - - 20.3.1 - In general - - - - - 20.3.2 - Class template pair - Y - - - - 20.3.3 - Specialized algorithms - Y - - - - 20.3.4 - Tuple-like access to pair - Y - - - - 20.3.5 - Piecewise construction - Y - - - - 20.4 - Tuples - - - - - 20.4.1 - In general - - - - - 20.4.2 - Class template tuple - - - - - 20.4.2.1 - Construction - Y - - - - 20.4.2.2 - Assignment - Y - - - - 20.4.2.3 - Swap - Y - - - - 20.4.2.4 - Tuple creation functions - Y - - - - 20.4.2.5 - Tuple helper classes - Y - - - - 20.4.2.6 - Element access - Y - - - - 20.4.2.7 - Relational operators - Y - - - - 20.4.2.8 - Tuple traits - Y - - - - 20.4.2.9 - Tuple specialized algorithms - Y - - - - 20.5 - Class template bitset - Y - - - - 20.5.1 - bitset constructors - Y - - - - 20.5.2 - bitset members - Y - - - - 20.5.3 - bitset hash support - Y - - - - 20.5.4 - bitset operators - Y - - - - 20.6 - Memory - - - - - 20.6.1 - In general - - - - - 20.6.2 - Header <memory> synopsis - - - - - - 20.6.3 - Pointer traits - Partial - Missing rebind - - - - 20.6.4 - Pointer safety - Partial - - - - - 20.6.5 - Align - N - - - - 20.6.6 - Allocator argument tag - Y - - - - 20.6.7 - uses_allocator - Y - - - - - 20.6.8 - Allocator traits - Partial - Missing rebind_alloc and rebind_traits - - - 20.6.9 - The default allocator - Y - - - - 20.6.10 - Raw storage iterator - Y - - - - 20.6.11 - Temporary buffers - Y - - - - 20.6.12 - Specialized algorithms - - - - - 20.6.12.1 - addressof - Y - - - - 20.6.12.2 - uninitialized_copy - Y - - - - 20.6.12.3 - uninitialized_fill - Y - - - - 20.6.12.4 - uninitialized_fill_n - Y - - - - 20.6.13 - C library - Y - - - - 20.7 - Smart pointers - - - - - 20.7.1 - Class template unique_ptr - Y - - - - 20.7.2 - Shared-ownership pointers - Y - - - - 20.7.2.1 - Class bad_weak_ptr - Y - - - - 20.7.2.2 - Class template shared_ptr - Y - - - Uses code from - boost::shared_ptr. - - - - - 20.7.2.3 - Class template weak_ptr - Y - - - - 20.7.2.4 - Class template emable_shared_from_this - Y - - - - - 20.7.2.5 - shared_ptr atomic access - Partial - - - - 20.7.2.6 - Smart pointer hash support - Y - - - - 20.8 - Function objects - - - - - 20.8.1 - Definitions - - - - - 20.8.2 - Requirements - - - - - 20.8.3 - Class template reference_wrapper - Y - - - - 20.8.4 - Arithmetic operation - Y - - - - 20.8.5 - Comparisons - Y - - - - 20.8.6 - Logical operations - Y - - - - 20.8.7 - Bitwise operations - Y - - - - 20.8.8 - Negators - Y - - - - 20.8.9 - Function template bind - Y - - - - - 20.8.10 - Function template mem_fn - Partial - Missing overloads for reference-qualified member functions - - - 20.8.11 - Polymorphic function wrappers - - - - - 20.8.11.1 - Class bad_function_call - Y - - - - - 20.8.11.2 - Class template function - Partial - Missing allocator support - - - 20.8.12 - Class template hash - Y - - - - 20.9 - Metaprogramming and type traits - - - - - 20.9.1 - Requirements - Y - - - - 20.9.2 - Header <type_traits> synopsis - - - - - 20.9.3 - Helper classes - Y - - - - 20.9.4 - Unary Type Traits - Y - - - - 20.9.4.1 - Primary type categories - Y - - - - 20.9.4.2 - Composite type traits - Y - - - - - 20.9.4.3 - Type properties - Partial - Missing is_trivially_copyable, - is_assignable, is_copy_assignable, is_move_assignable, - is_trivially_constructible, is_trivially_default_constructible, - is_trivially_copy_constructible, is_trivially_move_constructible, - is_trivially_assignable, is_trivially_default_assignable, - is_trivially_copy_assignable, is_trivially_move_assignable, - is_trivially_destructible, - is_nothrow_assignable, - is_nothrow_copy_assignable, is_nothrow_move_assignable, - is_nothrow_destructible - - - - 20.9.5 - Type property queries - Y - - - - 20.9.6 - Relationships between types - Y - - - - 20.9.7 - Transformations between types - - - - - 20.9.7.1 - Const-volatile modifications - Y - - - - 20.9.7.2 - Reference modifications - Y - - - - 20.9.7.3 - Sign modifications - Y - - - - 20.9.7.4 - Array modifications - Y - - - - 20.9.7.5 - Pointer modifications - Y - - - - 20.9.7.6 - Other transformations - Y - - - - 20.10 - Compile-time rational arithmetic - - - - - 20.10.1 - In general - - - - - 20.10.2 - Header <ratio> synopsis - - - - - 20.10.3 - Class template ratio - Y - - - - 20.10.4 - Arithmetic on ratios - Y - - - - 20.10.5 - Comparison of ratios - Y - - - - 20.10.6 - SI types for ratio - Y - - - - 20.11 - Time utilities - - - - - 20.11.3 - Clock requirements - Y - - - - 20.11.4 - Time-related traits - - - - - 20.11.4.1 - treat_as_floating_point - Y - - - - 20.11.4.2 - duration_values - Y - - - - 20.11.4.3 - Specializations of common_type - Y - - - - - 20.11.5 - Class template duration - Partial - Missing constexpr for non-member arithmetic operations - - - 20.11.6 - Class template time_point - Y - - - - 20.11.7 - Clocks - - - - - 20.11.7.1 - Class system_clock - Y - - - - - 20.11.7.2 - Class steady_clock - N - Support old monotonic_clock spec instead - - - 20.11.7.3 - Class high_resolution_clock - Y - - - - 20.11.8 - Date and time functions - Y - - - - - 20.12 - Scoped allocator adaptor - Partial - - - - 20.12.1 - Header <scoped_allocator> synopsis - - - - - 20.12.2 - Scoped allocator adaptor member types - Y - - - - 20.12.3 - Scoped allocator adaptor constructors - Y - - - - - 20.12.4 - Scoped allocator adaptor members - Partial - - - - 20.12.5 - Scoped allocator operators - Y - - - - 20.13 - Class type_index - Y - - - - - 21 - - - Strings - - - - 21.1 - General - Y - - - - 21.2 - Character traits - - - - - 21.2.1 - Character traits requirements - Y - - - - 21.2.2 - traits typedefs - Y - - - - 21.2.3 - char_traits specializations - - - - - - 21.2.3.1 - struct char_traits<char> - Partial - Missing constexpr - - - - 21.2.3.2 - struct char_traits<char16_t> - Partial - Missing constexpr - - - 21.2.3.3 - struct char_traits<char32_t> - Y - - - - 21.2.3.4 - struct char_traits<wchar_t> - Y - - - - 21.3 - String classes - Y - - - - 21.4 - Class template basic_string - Y - - - - 21.5 - Numeric Conversions - Y - - - - 21.6 - Hash support - Y - - - - 21.7 - Null-terminated sequence utilities - Y - C library dependency - - - - 22 - - - Localization - - - - 22.1 - General - Y - - - - 22.2 - Header <locale> synopsis - Y - - - - 22.3 - Locales - - - - - 22.3.1 - Class locale - Y - - - - 22.3.2 - locale globals - Y - - - - 22.3.3 - Convenience interfaces - - - - - 22.3.3.1 - Character classification - Y - - - - 22.3.3.2 - Conversions - - - - - 22.3.3.2.1 - Character conversions - Y - - - - - 22.3.3.2.2 - string conversions - N - - - - - 22.3.3.2.3 - Buffer conversions - N - - - - 22.4 - Standard locale categories - - - - - 22.4.1 - The ctype category - Y - - - - 22.4.2 - The numeric category - - - - - 22.4.2.1 - num_get - Y - - - - 22.4.2.2 - num_put - Y - - - - 22.4.3 - The numeric punctuation facet - Y - - - - 22.4.4 - The collate category - Y - - - - 22.4.5 - The time category - - - - - 22.4.5.1 - Class template time_get - Y - - - - 22.4.5.2 - Class template time_get_byname - Y - - - - 22.4.5.3 - Class template time_put - Y - - - - 22.4.5.3 - Class template time_put_byname - Y - - - - 22.4.6 - The monetary category - - - - - 22.4.6.1 - Class template money_get - Y - - - - 22.4.6.2 - Class template money_put - Y - - - - 22.4.6.3 - Class template money_punct - Y - - - - 22.4.6.4 - Class template money_punct_byname - Y - - - - 22.4.7 - The message retrieval category - Y - - - - 22.4.8 - Program-defined facets - Y - - - - - 22.5 - Standard code conversion facets - N - - - - 22.6 - C Library Locales - Y - - - - - 23 - - - Containers - - - - 23.1 - General - - - - - 23.2 - Container requirements - - - - - 23.2.1 - General container requirements - Y - - - - 23.2.2 - Container data races - Y - - - - 23.2.3 - Sequence containers - Y - - - - - 23.2.4 - Associative containers - Partial - Missing emplace members - - - - 23.2.5 - Unordered associative containers - Partial - Missing emplace members - - - 23.3 - Sequence containers - - - - - 23.3.2 - Class template array - Y - - - - 23.3.3 - Class template deque - Y - - - - 23.3.4 - Class template forward_list - Y - - - - 23.3.5 - Class template list - Y - - - - 23.3.6 - Class template vector - Y - - - - 23.3.7 - Class vector<bool> - Y - - - - 23.4 - Associative containers - - - - - 23.4.4 - Class template map - Y - - - - 23.4.5 - Class template multimap - Y - - - - 23.4.6 - Class template set - Y - - - - 23.4.7 - Class template multiset - Y - - - - 23.5 - Unordered associative containers - - - - - 23.5.4 - Class template unordered_map - Y - - - - 23.5.5 - Class template unordered_multimap - Y - - - - 23.5.6 - Class template unordered_set - Y - - - - 23.5.7 - Class template unordered_multiset - Y - - - - 23.6 - Container adaptors - - - - - 23.6.1 - Class template queue - Y - - - - 23.6.2 - Class template priority_queue - Y - - - - 23.6.3 - Class template stack - Y - - - - - 24 - - - Iterators - - - - 24.1 - General - Y - - - - 24.2 - Iterator requirements - Y - - - - 24.3 - Header <iterator> synopsis - Y - - - - 24.4 - Iterator primitives - Y - - - - 24.5 - Iterator adaptors - - - - - 24.5.1 - Reverse iterators - Y - - - - 24.5.2 - Insert iterators - Y - - - - 24.5.3 - Move iterators - Y - - - - 24.6 - Stream iterators - - - - - 24.6.1 - Class template istream_iterator - Y - - - - 24.6.2 - Class template ostream_iterator - Y - - - - 24.6.3 - Class template istreambuf_iterator - Y - - - - 24.6.4 - Class template ostreambuf_iterator - Y - - - - 24.6.5 - range access - Y - - - - - 25 - - - Algorithms - - - - 25.1 - General - - - - - 25.2 - Non-modifying sequence operations - Y - - - - 25.3 - Mutating sequence operations - Y - - - - 25.4 - Sorting and related operations - Y - - - - 25.5 - C library algorithms - Y - - - - - 26 - - - Numerics - - - - 26.1 - General - Y - - - - 26.2 - Numeric type requirements - Y - - - - 26.3 - The floating-point environment - Y - - - - 26.4 - Complex numbers - Partial - Missing constexpr - - - 26.5 - Random number generation - - - - - 26.5.1 - Requirements - - - - - 26.5.2 - Header <random> synopsis - - - - - 26.5.3 - Random number engine class templates - - - - - 26.5.3.1 - Class template linear_congruential_engine - Y - Missing constexpr - - - 26.5.3.2 - Class template mersenne_twister_engine - Y - Missing constexpr - - - 26.5.3.3 - Class template subtract_with_carry_engine - Y - Missing constexpr - - - 26.5.4 - Random number engine adaptor class templates - - - - - 26.5.4.2 - Class template discard_block_engine - Y - Missing constexpr - - - 26.5.4.3 - Class template independent_bits_engine - Y - Missing constexpr - - - 26.5.4.4 - Class template shuffle_order_engine - Y - Missing constexpr - - - 26.5.5 - Engines and engine adaptors with predefined parameters - Y - - - - 26.5.6 - Class random_device - Y - Missing constexpr - - - 26.5.7 - Utilities - - - - - 26.5.7.1 - Class seed_seq - Y - - - - 26.5.7.2 - Function template generate_canonical - Y - - - - 26.5.8 - Random number distribution class templates - - - - - 26.5.8.2 - Uniform distributions - - - - - 26.5.8.2.1 - Class template uniform_int_distribution - Y - - - - 26.5.8.2.2 - Class template uniform_real_distribution - Y - - - - 26.5.8.3 - Bernoulli distributions - - - - - 26.5.8.3.1 - Class bernoulli_distribution - Y - - - - 26.5.8.3.2 - Class template binomial_distribution - Y - - - - 26.5.8.3.3 - Class template geometric_distribution - Y - - - - 26.5.8.3.4 - Class template negative_binomial_distribution - Y - - - - 26.5.8.4 - Poisson distributions - - - - - 26.5.8.4.1 - Class template poisson_distribution - Y - - - - 26.5.8.4.2 - Class template exponential_distribution - Y - - - - 26.5.8.4.3 - Class template gamma_distribution - Y - - - - 26.5.8.4.4 - Class template weibull_distribution - Y - - - - 26.5.8.4.5 - Class template extreme_value_distribution - Y - - - - 26.5.8.5 - Normal distributions - - - - - 26.5.8.5.1 - Class template normal_distribution - Y - - - - 26.5.8.5.2 - Class template lognormal_distribution - Y - - - - 26.5.8.5.3 - Class template chi_squared_distribution - Y - - - - 26.5.8.5.4 - Class template cauchy_distribution - Y - - - - 26.5.8.5.5 - Class template fisher_f_distribution - Y - - - - 26.5.8.5.6 - Class template student_t_distribution - Y - - - - 26.5.8.6 - Sampling distributions - - - - - 26.5.8.6.1 - Class template discrete_distribution - Y - - - - 26.5.8.6.2 - Class template piecewise_constant_distribution - Y - - - - 26.5.8.6.3 - Class template piecewise_linear_distribution - Y - - - - 26.6 - Numeric arrays - - - - - 26.6.1 - Header <valarray> synopsis - Y - - - - 26.6.2 - Class template valarray - Y - - - - 26.6.3 - valarray non-member operations - Y - - - - 26.6.4 - Class slice - Y - - - - 26.6.5 - Class template slice_array - Y - - - - 26.6.6 - The gslice class - Y - - - - 26.6.7 - Class template gslice_array - Y - - - - 26.6.8 - Class template mask_array - Y - - - - 26.6.9 - Class template indirect_array - Y - - - - 26.6.10 - valarray range access - Y - - - - 26.7 - Generalized numeric operations - - - - - 26.7.1 - Header <numeric> synopsis - Y - - - - 26.7.2 - accumulate - Y - - - - 26.7.3 - inner_product - Y - - - - 26.7.4 - partial_sum - Y - - - - 26.7.5 - adjacent_difference - Y - - - - 26.7.6 - iota - Y - - - - 26.8 - C Library - Y - - - - - 27 - - - Input/output library - - - - 27.1 - General - Y - - - - 27.2 - Iostreams requirements - Y - - - - 27.2.1 - Imbue Limitations - Y - - - - 27.2.2 - Positioning Type Limitations - Y - - - - - 27.2.3 - Thread safety - Partial - - - - 27.3 - Forward declarations - Y - - - - 27.4 - Standard iostream objects - Y - - - - 27.4.1 - Overview - Y - - - - 27.4.2 - Narrow stream objects - Y - - - - 27.4.3 - Wide stream objects - Y - - - - - 27.5 - Iostreams base classes - Partial - - Missing move and swap operations on basic_ios. Missing - make_error_code and make_error_condition. - - - - 27.6 - Stream buffers - Y - - - - - 27.7 - Formatting and manipulators - Partial - Missing move and swap operations - - - - 27.8 - String-based streams - Partial - Missing move and swap operations - - - - 27.9 - File-based streams - Partial - Missing move and swap operations - - - - 28 - - - Regular expressions - - - - - 28.1 - General - N - - - - - 28.2 - Definitions - N - - - - - 28.3 - Requirements - N - - - - - 28.4 - Header <regex> synopsis - N - - - - 28.5 - Namespace std::regex_constants - Y - - - - 28.6 - Class regex_error - Y - - - - - 28.7 - Class template regex_traits - Partial - - - - - 28.8 - Class template basic_regex - Partial - - - - - 28.9 - Class template sub_match - Partial - - - - - 28.10 - Class template match_results - Partial - - - - - 28.11 - Regular expression algorithms - N - - - - - 28.12 - Regular expression Iterators - N - - - - - 28.13 - Modified ECMAScript regular expression grammar - N - - - - - 29 - - - Atomic operations - - - - 29.1 - General - Y - - - - 29.2 - Header <atomic> synopsis - Y - - - - - 29.3 - Order and consistency - N - - - - - 29.4 - Lock-free property - Partial - Missing ATOMIC_BOOL_LOCK_FREE and - ATOMIC_POINTER_LOCK_FREE. - Based on _GLIBCXX_ATOMIC_PROPERTY - - - - - 29.5 - Atomic types - Partial - Missing constexpr - - - 29.6 - Operations on atomic types - Y - - - - 29.7 - Flag Type and operations - Y - - - - - 29.8 - Fences - N - - - - - 30 - - - Thread support - - - - 30.1 - General - Y - - - - 30.2 - Requirements - Y - - - - 30.3 - Threads - - - - - - 30.3.1 - Class thread - Partial - thread::id comparisons not well-defined - - - 30.3.2 - Namespace this_thread - Y - - - - 30.4 - Mutual exclusion - - - - - 30.4.1 - Mutex requirements - - - - - 30.4.1.1 - In general - - - - - 30.4.1.2 - Mutex types - - - - - 30.4.1.2.1 - Class mutex - Y - - - - 30.4.1.2.2 - Class recursive_mutex - Y - - - - 30.4.1.3 - Timed mutex types - - - - - 30.4.1.3.1 - Class timed_mutex - Y - - - - 30.4.1.3.2 - Class recursive_timed_mutex - Y - - - - 30.4.2 - Locks - - - - - 30.4.2.1 - Class template lock_guard - Y - - - - 30.4.2.2 - Class template unique_lock - Y - - - - 30.4.3 - Generic locking algorithms - Y - - - - 30.4.4 - Call once - - - - - 30.4.4.1 - Struct once_flag - Y - - - - 30.4.4.2 - Function call_once - Y - - - - - 30.5 - Condition variables - Partial - Missing notify_all_at_thread_exit - - - 30.5.1 - Class condition_variable - Y - - - - 30.5.2 - Class condition_variable_any - Y - - - - 30.6 - Futures - - - - - 30.6.1 - Overview - - - - - 30.6.2 - Error handling - Y - - - - 30.6.3 - Class future_error - Y - - - - 30.6.4 - Shared state - Y - - - - - 30.6.5 - Class template promise - Partial - Missing set_*_at_thread_exit - - - - 30.6.6 - Class template future - Partial - Timed waiting functions do not return future_status - - - - 30.6.7 - Class template shared_future - Partial - Timed waiting functions do not return future_status - - - 30.6.8 - Function template async - Y - - - - - 30.6.9 - Class template packaged_task - Partial - Missing make_ready_at_thread_exit - - - - Appendix D - - - Compatibility features - - - - D.1 - Increment operator with bool operand - - - - - D.2 - register keyword - - - - - D.3 - Implicit declaration of copy functions - - - - - D.4 - Dynamic exception specifications - - - - - D.5 - C standard library headers - - - - - D.6 - Old iostreams members - - - - - D.7 - char* streams - - - - - D.8 - Function objects - - - - - D.9 - Binders - - - - - D.10 - auto_ptr - - - - - D.11 - Violating exception-specifications - - - - - - -
    - - -
    diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml new file mode 100644 index 00000000000..2502b07bd7c --- /dev/null +++ b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml @@ -0,0 +1,2622 @@ +
    + + +C++ 2011 + + + ISO C++ + + + 2011 + + + + + +This table is based on the table of contents of ISO/IEC +JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11 +Final Draft International Standard, Standard for Programming Language C++ + + + +In this implementation -std=gnu++11 or +-std=c++11 flags must be used to enable language +and library +features. See dialect +options. The pre-defined symbol +__GXX_EXPERIMENTAL_CXX0X__ is used to check for the +presence of the required flag. + + + +This page describes the C++11 support in mainline GCC SVN, not in any +particular release. + + + + + +C++ 2011 Implementation Status + + + + + + + + + Section + Description + Status + Comments + + + + + + + + 18 + + + Language support + + + + + 18.1 + General + Y + + + + + 18.2 + Types + Partial + Missing offsetof, max_align_t + + + 18.3 + Implementation properties + + + + + + 18.3.2 + Numeric Limits + + + + + 18.3.2.3 + Class template numeric_limits + Y + + + + 18.3.2.4 + numeric_limits members + Y + + + + + 18.3.2.5 + float_round_style + N + + + + + 18.3.2.6 + float_denorm_style + N + + + + 18.3.2.7 + numeric_limits specializations + Y + + + + + 18.3.3 + C Library + Y + + + + + 18.4 + Integer types + + + + + 18.4.1 + Header <cstdint> synopsis + Y + + + + + 18.5 + Start and termination + Partial + C library dependency for quick_exit, at_quick_exit + + + 18.6 + Dynamic memory management + Y + + + + 18.7 + Type identification + + + + + 18.7.1 + Class type_info + Y + + + + 18.7.2 + Class bad_cast + Y + + + + 18.7.3 + Class bad_typeid + Y + + + + 18.8 + Exception handling + + + + + 18.8.1 + Class exception + Y + + + + 18.8.2 + Class bad_exception + Y + + + + 18.8.3 + Abnormal termination + Y + + + + 18.8.4 + uncaught_exception + Y + + + + 18.8.5 + Exception Propagation + Y + + + + 18.8.6 + nested_exception + Y + + + + 18.9 + Initializer lists + + + + + 18.9.1 + Initializer list constructors + Y + + + + 18.9.2 + Initializer list access + Y + + + + 18.9.3 + Initializer list range access + Y + + + + 18.10 + Other runtime support + Y + + + + + 19 + + + Diagnostics + + + + 19.1 + General + Y + + + + 19.2 + Exception classes + Y + + + + 19.3 + Assertions + Y + + + + 19.4 + Error numbers + Y + + + + 19.5 + System error support + + + + + 19.5.1 + Class error_category + Y + + + + 19.5.2 + Class error_code + Y + + + + 19.5.3 + Class error_condition + Y + + + + 19.5.4 + Comparison operators + Y + + + + 19.5.5 + Class system_error + Y + + + + + 20 + + + General utilities + + + + 20.1 + General + + + + + 20.2 + Utility components + + + + + 20.2.1 + Operators + Y + + + + 20.2.2 + Swap + Y + + + + 20.2.3 + forward and move helpers + Y + + + + 20.2.4 + Function template declval + Y + + + + 20.3 + Pairs + + + + + 20.3.1 + In general + + + + + 20.3.2 + Class template pair + Y + + + + 20.3.3 + Specialized algorithms + Y + + + + 20.3.4 + Tuple-like access to pair + Y + + + + 20.3.5 + Piecewise construction + Y + + + + 20.4 + Tuples + + + + + 20.4.1 + In general + + + + + 20.4.2 + Class template tuple + + + + + 20.4.2.1 + Construction + Y + + + + 20.4.2.2 + Assignment + Y + + + + 20.4.2.3 + Swap + Y + + + + 20.4.2.4 + Tuple creation functions + Y + + + + 20.4.2.5 + Tuple helper classes + Y + + + + 20.4.2.6 + Element access + Y + + + + 20.4.2.7 + Relational operators + Y + + + + 20.4.2.8 + Tuple traits + Y + + + + 20.4.2.9 + Tuple specialized algorithms + Y + + + + 20.5 + Class template bitset + Y + + + + 20.5.1 + bitset constructors + Y + + + + 20.5.2 + bitset members + Y + + + + 20.5.3 + bitset hash support + Y + + + + 20.5.4 + bitset operators + Y + + + + 20.6 + Memory + + + + + 20.6.1 + In general + + + + + 20.6.2 + Header <memory> synopsis + + + + + + 20.6.3 + Pointer traits + Partial + Missing rebind + + + + 20.6.4 + Pointer safety + Partial + + + + + 20.6.5 + Align + N + + + + 20.6.6 + Allocator argument tag + Y + + + + 20.6.7 + uses_allocator + Y + + + + + 20.6.8 + Allocator traits + Partial + Missing rebind_alloc and rebind_traits + + + 20.6.9 + The default allocator + Y + + + + 20.6.10 + Raw storage iterator + Y + + + + 20.6.11 + Temporary buffers + Y + + + + 20.6.12 + Specialized algorithms + + + + + 20.6.12.1 + addressof + Y + + + + 20.6.12.2 + uninitialized_copy + Y + + + + 20.6.12.3 + uninitialized_fill + Y + + + + 20.6.12.4 + uninitialized_fill_n + Y + + + + 20.6.13 + C library + Y + + + + 20.7 + Smart pointers + + + + + 20.7.1 + Class template unique_ptr + Y + + + + 20.7.2 + Shared-ownership pointers + Y + + + + 20.7.2.1 + Class bad_weak_ptr + Y + + + + 20.7.2.2 + Class template shared_ptr + Y + + + Uses code from + boost::shared_ptr. + + + + + 20.7.2.3 + Class template weak_ptr + Y + + + + 20.7.2.4 + Class template emable_shared_from_this + Y + + + + + 20.7.2.5 + shared_ptr atomic access + Partial + + + + 20.7.2.6 + Smart pointer hash support + Y + + + + 20.8 + Function objects + + + + + 20.8.1 + Definitions + + + + + 20.8.2 + Requirements + + + + + 20.8.3 + Class template reference_wrapper + Y + + + + 20.8.4 + Arithmetic operation + Y + + + + 20.8.5 + Comparisons + Y + + + + 20.8.6 + Logical operations + Y + + + + 20.8.7 + Bitwise operations + Y + + + + 20.8.8 + Negators + Y + + + + 20.8.9 + Function template bind + Y + + + + + 20.8.10 + Function template mem_fn + Partial + Missing overloads for reference-qualified member functions + + + 20.8.11 + Polymorphic function wrappers + + + + + 20.8.11.1 + Class bad_function_call + Y + + + + + 20.8.11.2 + Class template function + Partial + Missing allocator support + + + 20.8.12 + Class template hash + Y + + + + 20.9 + Metaprogramming and type traits + + + + + 20.9.1 + Requirements + Y + + + + 20.9.2 + Header <type_traits> synopsis + + + + + 20.9.3 + Helper classes + Y + + + + 20.9.4 + Unary Type Traits + Y + + + + 20.9.4.1 + Primary type categories + Y + + + + 20.9.4.2 + Composite type traits + Y + + + + + 20.9.4.3 + Type properties + Partial + Missing is_trivially_copyable, + is_assignable, is_copy_assignable, is_move_assignable, + is_trivially_constructible, is_trivially_default_constructible, + is_trivially_copy_constructible, is_trivially_move_constructible, + is_trivially_assignable, is_trivially_default_assignable, + is_trivially_copy_assignable, is_trivially_move_assignable, + is_trivially_destructible, + is_nothrow_assignable, + is_nothrow_copy_assignable, is_nothrow_move_assignable, + is_nothrow_destructible + + + + 20.9.5 + Type property queries + Y + + + + 20.9.6 + Relationships between types + Y + + + + 20.9.7 + Transformations between types + + + + + 20.9.7.1 + Const-volatile modifications + Y + + + + 20.9.7.2 + Reference modifications + Y + + + + 20.9.7.3 + Sign modifications + Y + + + + 20.9.7.4 + Array modifications + Y + + + + 20.9.7.5 + Pointer modifications + Y + + + + 20.9.7.6 + Other transformations + Y + + + + 20.10 + Compile-time rational arithmetic + + + + + 20.10.1 + In general + + + + + 20.10.2 + Header <ratio> synopsis + + + + + 20.10.3 + Class template ratio + Y + + + + 20.10.4 + Arithmetic on ratios + Y + + + + 20.10.5 + Comparison of ratios + Y + + + + 20.10.6 + SI types for ratio + Y + + + + 20.11 + Time utilities + + + + + 20.11.3 + Clock requirements + Y + + + + 20.11.4 + Time-related traits + + + + + 20.11.4.1 + treat_as_floating_point + Y + + + + 20.11.4.2 + duration_values + Y + + + + 20.11.4.3 + Specializations of common_type + Y + + + + + 20.11.5 + Class template duration + Partial + Missing constexpr for non-member arithmetic operations + + + 20.11.6 + Class template time_point + Y + + + + 20.11.7 + Clocks + + + + + 20.11.7.1 + Class system_clock + Y + + + + + 20.11.7.2 + Class steady_clock + N + Support old monotonic_clock spec instead + + + 20.11.7.3 + Class high_resolution_clock + Y + + + + 20.11.8 + Date and time functions + Y + + + + + 20.12 + Scoped allocator adaptor + Partial + + + + 20.12.1 + Header <scoped_allocator> synopsis + + + + + 20.12.2 + Scoped allocator adaptor member types + Y + + + + 20.12.3 + Scoped allocator adaptor constructors + Y + + + + + 20.12.4 + Scoped allocator adaptor members + Partial + + + + 20.12.5 + Scoped allocator operators + Y + + + + 20.13 + Class type_index + Y + + + + + 21 + + + Strings + + + + 21.1 + General + Y + + + + 21.2 + Character traits + + + + + 21.2.1 + Character traits requirements + Y + + + + 21.2.2 + traits typedefs + Y + + + + 21.2.3 + char_traits specializations + + + + + + 21.2.3.1 + struct char_traits<char> + Partial + Missing constexpr + + + + 21.2.3.2 + struct char_traits<char16_t> + Partial + Missing constexpr + + + 21.2.3.3 + struct char_traits<char32_t> + Y + + + + 21.2.3.4 + struct char_traits<wchar_t> + Y + + + + 21.3 + String classes + Y + + + + + 21.4 + Class template basic_string + Partial + Missing pop_back + + + 21.5 + Numeric Conversions + Y + + + + 21.6 + Hash support + Y + + + + 21.7 + Null-terminated sequence utilities + Y + C library dependency + + + + 22 + + + Localization + + + + 22.1 + General + Y + + + + 22.2 + Header <locale> synopsis + Y + + + + 22.3 + Locales + + + + + 22.3.1 + Class locale + Y + + + + 22.3.2 + locale globals + Y + + + + 22.3.3 + Convenience interfaces + + + + + 22.3.3.1 + Character classification + Y + + + + 22.3.3.2 + Conversions + + + + + 22.3.3.2.1 + Character conversions + Y + + + + + 22.3.3.2.2 + string conversions + N + + + + + 22.3.3.2.3 + Buffer conversions + N + + + + 22.4 + Standard locale categories + + + + + 22.4.1 + The ctype category + Y + + + + 22.4.2 + The numeric category + + + + + 22.4.2.1 + num_get + Y + + + + 22.4.2.2 + num_put + Y + + + + 22.4.3 + The numeric punctuation facet + Y + + + + 22.4.4 + The collate category + Y + + + + 22.4.5 + The time category + + + + + 22.4.5.1 + Class template time_get + Y + + + + 22.4.5.2 + Class template time_get_byname + Y + + + + 22.4.5.3 + Class template time_put + Y + + + + 22.4.5.3 + Class template time_put_byname + Y + + + + 22.4.6 + The monetary category + + + + + 22.4.6.1 + Class template money_get + Y + + + + 22.4.6.2 + Class template money_put + Y + + + + 22.4.6.3 + Class template money_punct + Y + + + + 22.4.6.4 + Class template money_punct_byname + Y + + + + 22.4.7 + The message retrieval category + Y + + + + 22.4.8 + Program-defined facets + Y + + + + + 22.5 + Standard code conversion facets + N + + + + 22.6 + C Library Locales + Y + + + + + 23 + + + Containers + + + + 23.1 + General + + + + + 23.2 + Container requirements + + + + + 23.2.1 + General container requirements + Y + + + + 23.2.2 + Container data races + Y + + + + 23.2.3 + Sequence containers + Y + + + + + 23.2.4 + Associative containers + Partial + Missing emplace members + + + + 23.2.5 + Unordered associative containers + Partial + Missing emplace members + + + 23.3 + Sequence containers + + + + + 23.3.2 + Class template array + Y + + + + 23.3.3 + Class template deque + Y + + + + 23.3.4 + Class template forward_list + Y + + + + 23.3.5 + Class template list + Y + + + + 23.3.6 + Class template vector + Y + + + + 23.3.7 + Class vector<bool> + Y + + + + 23.4 + Associative containers + + + + + 23.4.4 + Class template map + Y + + + + 23.4.5 + Class template multimap + Y + + + + 23.4.6 + Class template set + Y + + + + 23.4.7 + Class template multiset + Y + + + + 23.5 + Unordered associative containers + + + + + 23.5.4 + Class template unordered_map + Y + + + + 23.5.5 + Class template unordered_multimap + Y + + + + 23.5.6 + Class template unordered_set + Y + + + + 23.5.7 + Class template unordered_multiset + Y + + + + 23.6 + Container adaptors + + + + + 23.6.1 + Class template queue + Y + + + + 23.6.2 + Class template priority_queue + Y + + + + 23.6.3 + Class template stack + Y + + + + + 24 + + + Iterators + + + + 24.1 + General + Y + + + + 24.2 + Iterator requirements + Y + + + + 24.3 + Header <iterator> synopsis + Y + + + + 24.4 + Iterator primitives + Y + + + + 24.5 + Iterator adaptors + + + + + 24.5.1 + Reverse iterators + Y + + + + 24.5.2 + Insert iterators + Y + + + + 24.5.3 + Move iterators + Y + + + + 24.6 + Stream iterators + + + + + 24.6.1 + Class template istream_iterator + Y + + + + 24.6.2 + Class template ostream_iterator + Y + + + + 24.6.3 + Class template istreambuf_iterator + Y + + + + 24.6.4 + Class template ostreambuf_iterator + Y + + + + 24.6.5 + range access + Y + + + + + 25 + + + Algorithms + + + + 25.1 + General + + + + + 25.2 + Non-modifying sequence operations + Y + + + + 25.3 + Mutating sequence operations + Y + + + + 25.4 + Sorting and related operations + Y + + + + 25.5 + C library algorithms + Y + + + + + 26 + + + Numerics + + + + 26.1 + General + Y + + + + 26.2 + Numeric type requirements + Y + + + + 26.3 + The floating-point environment + Y + + + + 26.4 + Complex numbers + Partial + Missing constexpr + + + 26.5 + Random number generation + + + + + 26.5.1 + Requirements + + + + + 26.5.2 + Header <random> synopsis + + + + + 26.5.3 + Random number engine class templates + + + + + 26.5.3.1 + Class template linear_congruential_engine + Y + Missing constexpr + + + 26.5.3.2 + Class template mersenne_twister_engine + Y + Missing constexpr + + + 26.5.3.3 + Class template subtract_with_carry_engine + Y + Missing constexpr + + + 26.5.4 + Random number engine adaptor class templates + + + + + 26.5.4.2 + Class template discard_block_engine + Y + Missing constexpr + + + 26.5.4.3 + Class template independent_bits_engine + Y + Missing constexpr + + + 26.5.4.4 + Class template shuffle_order_engine + Y + Missing constexpr + + + 26.5.5 + Engines and engine adaptors with predefined parameters + Y + + + + 26.5.6 + Class random_device + Y + Missing constexpr + + + 26.5.7 + Utilities + + + + + 26.5.7.1 + Class seed_seq + Y + + + + 26.5.7.2 + Function template generate_canonical + Y + + + + 26.5.8 + Random number distribution class templates + + + + + 26.5.8.2 + Uniform distributions + + + + + 26.5.8.2.1 + Class template uniform_int_distribution + Y + + + + 26.5.8.2.2 + Class template uniform_real_distribution + Y + + + + 26.5.8.3 + Bernoulli distributions + + + + + 26.5.8.3.1 + Class bernoulli_distribution + Y + + + + 26.5.8.3.2 + Class template binomial_distribution + Y + + + + 26.5.8.3.3 + Class template geometric_distribution + Y + + + + 26.5.8.3.4 + Class template negative_binomial_distribution + Y + + + + 26.5.8.4 + Poisson distributions + + + + + 26.5.8.4.1 + Class template poisson_distribution + Y + + + + 26.5.8.4.2 + Class template exponential_distribution + Y + + + + 26.5.8.4.3 + Class template gamma_distribution + Y + + + + 26.5.8.4.4 + Class template weibull_distribution + Y + + + + 26.5.8.4.5 + Class template extreme_value_distribution + Y + + + + 26.5.8.5 + Normal distributions + + + + + 26.5.8.5.1 + Class template normal_distribution + Y + + + + 26.5.8.5.2 + Class template lognormal_distribution + Y + + + + 26.5.8.5.3 + Class template chi_squared_distribution + Y + + + + 26.5.8.5.4 + Class template cauchy_distribution + Y + + + + 26.5.8.5.5 + Class template fisher_f_distribution + Y + + + + 26.5.8.5.6 + Class template student_t_distribution + Y + + + + 26.5.8.6 + Sampling distributions + + + + + 26.5.8.6.1 + Class template discrete_distribution + Y + + + + 26.5.8.6.2 + Class template piecewise_constant_distribution + Y + + + + 26.5.8.6.3 + Class template piecewise_linear_distribution + Y + + + + 26.6 + Numeric arrays + + + + + 26.6.1 + Header <valarray> synopsis + Y + + + + 26.6.2 + Class template valarray + Y + + + + 26.6.3 + valarray non-member operations + Y + + + + 26.6.4 + Class slice + Y + + + + 26.6.5 + Class template slice_array + Y + + + + 26.6.6 + The gslice class + Y + + + + 26.6.7 + Class template gslice_array + Y + + + + 26.6.8 + Class template mask_array + Y + + + + 26.6.9 + Class template indirect_array + Y + + + + 26.6.10 + valarray range access + Y + + + + 26.7 + Generalized numeric operations + + + + + 26.7.1 + Header <numeric> synopsis + Y + + + + 26.7.2 + accumulate + Y + + + + 26.7.3 + inner_product + Y + + + + 26.7.4 + partial_sum + Y + + + + 26.7.5 + adjacent_difference + Y + + + + 26.7.6 + iota + Y + + + + 26.8 + C Library + Y + + + + + 27 + + + Input/output library + + + + 27.1 + General + Y + + + + 27.2 + Iostreams requirements + Y + + + + 27.2.1 + Imbue Limitations + Y + + + + 27.2.2 + Positioning Type Limitations + Y + + + + + 27.2.3 + Thread safety + Partial + + + + 27.3 + Forward declarations + Y + + + + 27.4 + Standard iostream objects + Y + + + + 27.4.1 + Overview + Y + + + + 27.4.2 + Narrow stream objects + Y + + + + 27.4.3 + Wide stream objects + Y + + + + + 27.5 + Iostreams base classes + Partial + + Missing move and swap operations on basic_ios. Missing + make_error_code and make_error_condition. + + + + 27.6 + Stream buffers + Y + + + + + 27.7 + Formatting and manipulators + Partial + Missing move and swap operations + + + + 27.8 + String-based streams + Partial + Missing move and swap operations + + + + 27.9 + File-based streams + Partial + Missing move and swap operations + + + + 28 + + + Regular expressions + + + + + 28.1 + General + N + + + + + 28.2 + Definitions + N + + + + + 28.3 + Requirements + N + + + + + 28.4 + Header <regex> synopsis + N + + + + 28.5 + Namespace std::regex_constants + Y + + + + 28.6 + Class regex_error + Y + + + + + 28.7 + Class template regex_traits + Partial + + + + + 28.8 + Class template basic_regex + Partial + + + + + 28.9 + Class template sub_match + Partial + + + + + 28.10 + Class template match_results + Partial + + + + + 28.11 + Regular expression algorithms + N + + + + + 28.12 + Regular expression Iterators + N + + + + + 28.13 + Modified ECMAScript regular expression grammar + N + + + + + 29 + + + Atomic operations + + + + 29.1 + General + Y + + + + 29.2 + Header <atomic> synopsis + Y + + + + + 29.3 + Order and consistency + N + + + + + 29.4 + Lock-free property + Partial + Missing ATOMIC_BOOL_LOCK_FREE and + ATOMIC_POINTER_LOCK_FREE. + Based on _GLIBCXX_ATOMIC_PROPERTY + + + + + 29.5 + Atomic types + Partial + Missing constexpr + + + 29.6 + Operations on atomic types + Y + + + + 29.7 + Flag Type and operations + Y + + + + + 29.8 + Fences + N + + + + + 30 + + + Thread support + + + + 30.1 + General + Y + + + + 30.2 + Requirements + Y + + + + 30.3 + Threads + + + + + + 30.3.1 + Class thread + Partial + thread::id comparisons not well-defined + + + 30.3.2 + Namespace this_thread + Y + + + + 30.4 + Mutual exclusion + + + + + 30.4.1 + Mutex requirements + + + + + 30.4.1.1 + In general + + + + + 30.4.1.2 + Mutex types + + + + + 30.4.1.2.1 + Class mutex + Y + + + + 30.4.1.2.2 + Class recursive_mutex + Y + + + + 30.4.1.3 + Timed mutex types + + + + + 30.4.1.3.1 + Class timed_mutex + Y + + + + 30.4.1.3.2 + Class recursive_timed_mutex + Y + + + + 30.4.2 + Locks + + + + + 30.4.2.1 + Class template lock_guard + Y + + + + 30.4.2.2 + Class template unique_lock + Y + + + + 30.4.3 + Generic locking algorithms + Y + + + + 30.4.4 + Call once + + + + + 30.4.4.1 + Struct once_flag + Y + + + + 30.4.4.2 + Function call_once + Y + + + + + 30.5 + Condition variables + Partial + Missing notify_all_at_thread_exit + + + 30.5.1 + Class condition_variable + Y + + + + 30.5.2 + Class condition_variable_any + Y + + + + 30.6 + Futures + + + + + 30.6.1 + Overview + + + + + 30.6.2 + Error handling + Y + + + + 30.6.3 + Class future_error + Y + + + + 30.6.4 + Shared state + Y + + + + + 30.6.5 + Class template promise + Partial + Missing set_*_at_thread_exit + + + + 30.6.6 + Class template future + Partial + Timed waiting functions do not return future_status + + + + 30.6.7 + Class template shared_future + Partial + Timed waiting functions do not return future_status + + + 30.6.8 + Function template async + Y + + + + + 30.6.9 + Class template packaged_task + Partial + Missing make_ready_at_thread_exit + + + + Appendix D + + + Compatibility features + + + + D.1 + Increment operator with bool operand + + + + + D.2 + register keyword + + + + + D.3 + Implicit declaration of copy functions + + + + + D.4 + Dynamic exception specifications + + + + + D.5 + C standard library headers + + + + + D.6 + Old iostreams members + + + + + D.7 + char* streams + + + + + D.8 + Function objects + + + + + D.9 + Binders + + + + + D.10 + auto_ptr + + + + + D.11 + Violating exception-specifications + + + + + + +
    + + +
    diff --git a/libstdc++-v3/doc/xml/manual/strings.xml b/libstdc++-v3/doc/xml/manual/strings.xml index 4d9fc64f766..1387189ece4 100644 --- a/libstdc++-v3/doc/xml/manual/strings.xml +++ b/libstdc++-v3/doc/xml/manual/strings.xml @@ -359,7 +359,7 @@ stringtok(Container &container, string const &in, entry) but the regular copy constructor cannot be used because libstdc++'s string is Copy-On-Write.
    - In C++0x mode you can call + In C++11 mode you can call s.shrink_to_fit() to achieve the same effect as s.reserve(s.size()). diff --git a/libstdc++-v3/doc/xml/manual/test.xml b/libstdc++-v3/doc/xml/manual/test.xml index 84664107db3..88bf14dffef 100644 --- a/libstdc++-v3/doc/xml/manual/test.xml +++ b/libstdc++-v3/doc/xml/manual/test.xml @@ -896,7 +896,7 @@ as the allocator type. - C++0x Container Requirements. + C++11 Container Requirements. @@ -924,7 +924,7 @@ as the allocator type.
    -C++0x Requirements Test Sequence Descriptions +C++11 Requirements Test Sequence Descriptions diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml index 49541165868..f081ed4bc44 100644 --- a/libstdc++-v3/doc/xml/manual/using.xml +++ b/libstdc++-v3/doc/xml/manual/using.xml @@ -8,7 +8,7 @@ The set of features available in the GNU C++ library is shaped by - several GCC + several GCC Command Options. Options that impact libstdc++ are enumerated and detailed in the table below. @@ -43,12 +43,12 @@ - -std=c++0x - Use the working draft of the upcoming ISO C++0x standard. + -std=c++11 + Use the 2011 ISO C++ standard. - -std=gnu++0x + -std=gnu++11 As directly above, with GNU extensions. @@ -64,7 +64,7 @@ -pthread or -pthreads - For ISO C++0x <thread>, <future>, + For ISO C++11 <thread>, <future>, <mutex>, or <condition_variable>. @@ -108,8 +108,7 @@ Two dialects of standard headers are supported, corresponding to - the 1998 standard as updated for 2003, and the draft of the - upcoming 200x standard. + the 1998 standard as updated for 2003, and the current 2011 standard. @@ -218,13 +217,13 @@
    -C++0x include files. These are only available in C++0x compilation -mode, i.e. -std=c++0x or -std=gnu++0x. +C++11 include files. These are only available in C++11 compilation +mode, i.e. -std=c++11 or -std=gnu++11. -C++ 200x Library Headers +C++ 2011 Library Headers @@ -310,7 +309,7 @@ mode, i.e. -std=c++0x or -std=gnu++0x.
    -C++ 200x Library Headers for C Library Facilities +C++ 2011 Library Headers for C Library Facilities @@ -632,22 +631,22 @@ possible. It's an all-or-nothing affair. Thus, code like #include <functional> -Implies C++0x mode. To use the entities in <array>, the C++0x -compilation mode must be used, which implies the C++0x functionality +Implies C++11 mode. To use the entities in <array>, the C++11 +compilation mode must be used, which implies the C++11 functionality (and deprecations) in <functional> will be present. Second, the other headers can be included with either dialect of -the standard headers, although features and types specific to C++0x -are still only enabled when in C++0x compilation mode. So, to use +the standard headers, although features and types specific to C++11 +are still only enabled when in C++11 compilation mode. So, to use rvalue references with __gnu_cxx::vstring, or to use the debug-mode versions of std::unordered_map, one must use -the std=gnu++0x compiler flag. (Or std=c++0x, of course.) +the std=gnu++11 compiler flag. (Or std=c++11, of course.) -A special case of the second rule is the mixing of TR1 and C++0x +A special case of the second rule is the mixing of TR1 and C++11 facilities. It is possible (although not especially prudent) to -include both the TR1 version and the C++0x version of header in the +include both the TR1 version and the C++11 version of header in the same translation unit: @@ -656,7 +655,7 @@ same translation unit: #include <type_traits> - Several parts of C++0x diverge quite substantially from TR1 predecessors. + Several parts of C++11 diverge quite substantially from TR1 predecessors. @@ -841,7 +840,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe removes older ARM-style iostreams code, and other anachronisms from the API. This macro is dependent on the version of the standard being tracked, and as a result may give different results for - -std=c++98 and -std=c++0x. This may + -std=c++98 and -std=c++11. This may be useful in updating old C++ code which no longer meet the requirements of the language, or for checking current code against new language standards. @@ -1093,7 +1092,7 @@ namespace gtk In the - C++0x dialect add + C++11 dialect add -- cgit v1.2.1 From c11c11bf8add34daae97c568a50308b1c08254fd Mon Sep 17 00:00:00 2001 From: redi Date: Sun, 6 Nov 2011 22:10:41 +0000 Subject: * doc/xml/manual/status_cxx2011.xml: Document and as missing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181045 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/doc/xml/manual/status_cxx2011.xml | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 47eeb3f03ac..05abfb3f142 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2011-11-06 Jonathan Wakely + + * doc/xml/manual/status_cxx2011.xml: Document and + as missing. + 2011-11-06 Jonathan Wakely * doc/xml/faq.xml: Replace references to C++0x with C++11. diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml index 2502b07bd7c..7f0625492b2 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml @@ -253,10 +253,11 @@ particular release. + 18.10 Other runtime support - Y - + Partial + Missing <cstdalign> @@ -1141,10 +1142,13 @@ particular release. + 21.7 Null-terminated sequence utilities - Y - C library dependency + Partial + C library dependency. + Missing <cuchar> + -- cgit v1.2.1 From 7cc301360be9e2df43673fe7e6c273f28496b31a Mon Sep 17 00:00:00 2001 From: redi Date: Sun, 6 Nov 2011 23:25:25 +0000 Subject: * doc/xml/manual/backwards_compatibility.xml: Fix autoconf tests for C++11 compiler features and library headers. Add stable id attributes. Use element for headers and surround in angle brackets. Use for classes. * doc/html/*: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181047 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 8 ++ libstdc++-v3/doc/html/api.html | 2 +- libstdc++-v3/doc/html/faq.html | 2 +- libstdc++-v3/doc/html/index.html | 22 ++-- libstdc++-v3/doc/html/manual/abi.html | 16 +-- libstdc++-v3/doc/html/manual/algorithms.html | 2 +- libstdc++-v3/doc/html/manual/api.html | 4 +- .../doc/html/manual/appendix_contributing.html | 2 +- libstdc++-v3/doc/html/manual/appendix_free.html | 2 +- libstdc++-v3/doc/html/manual/appendix_gpl.html | 4 +- libstdc++-v3/doc/html/manual/appendix_porting.html | 22 ++-- libstdc++-v3/doc/html/manual/atomics.html | 2 +- libstdc++-v3/doc/html/manual/backwards.html | 142 +++++++++++--------- libstdc++-v3/doc/html/manual/bk01pt02.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt03pr01.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt04.html | 18 +-- libstdc++-v3/doc/html/manual/concurrency.html | 2 +- libstdc++-v3/doc/html/manual/containers.html | 2 +- libstdc++-v3/doc/html/manual/diagnostics.html | 2 +- .../doc/html/manual/documentation_hacking.html | 8 +- libstdc++-v3/doc/html/manual/extensions.html | 2 +- libstdc++-v3/doc/html/manual/facets.html | 54 ++++---- libstdc++-v3/doc/html/manual/index.html | 38 +++--- libstdc++-v3/doc/html/manual/intro.html | 2 +- libstdc++-v3/doc/html/manual/io.html | 2 +- libstdc++-v3/doc/html/manual/iterators.html | 2 +- libstdc++-v3/doc/html/manual/localization.html | 18 +-- libstdc++-v3/doc/html/manual/memory.html | 42 +++--- libstdc++-v3/doc/html/manual/numerics.html | 2 +- libstdc++-v3/doc/html/manual/parallel_mode.html | 4 +- .../doc/html/manual/policy_data_structures.html | 12 +- .../html/manual/policy_data_structures_design.html | 66 +++++----- .../html/manual/policy_data_structures_using.html | 2 +- libstdc++-v3/doc/html/manual/profile_mode.html | 2 +- libstdc++-v3/doc/html/manual/status.html | 14 +- libstdc++-v3/doc/html/manual/strings.html | 2 +- libstdc++-v3/doc/html/manual/support.html | 2 +- libstdc++-v3/doc/html/manual/test.html | 2 +- libstdc++-v3/doc/html/manual/using.html | 2 +- libstdc++-v3/doc/html/manual/using_exceptions.html | 16 +-- libstdc++-v3/doc/html/manual/using_headers.html | 12 +- libstdc++-v3/doc/html/manual/utilities.html | 4 +- .../doc/xml/manual/backwards_compatibility.xml | 145 ++++++++++++--------- 48 files changed, 395 insertions(+), 332 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 05abfb3f142..1beefb131cc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2011-11-06 Jonathan Wakely + + * doc/xml/manual/backwards_compatibility.xml: Fix autoconf tests for + C++11 compiler features and library headers. Add stable id + attributes. Use element for headers and surround in angle + brackets. Use for classes. + * doc/html/*: Regenerate. + 2011-11-06 Jonathan Wakely * doc/xml/manual/status_cxx2011.xml: Document and diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index fd7ea48c9b1..06cfe2e8370 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -7,7 +7,7 @@ FSF -


    diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 439eb3a09b1..b87c9d92a59 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -4,7 +4,7 @@ 2008, 2010 FSF -



    1.1. What is libstdc++?
    1.2. Why should I use libstdc++? diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index 7637225a50c..deae95e566b 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -35,13 +35,13 @@
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. @@ -145,21 +145,21 @@ Existing tests
    C++11 Requirements Test Sequence Descriptions -
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in ostream.h, no cin in istream.h
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from cctype is a macro -
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    +
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro +
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    Removal of ostream::form and istream::scan extensions -
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. -
    +
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. +
    No stream::attach(int fd) -
    +
    Support for C++98 dialect. -
    +
    Support for C++TR1 dialect. -
    +
    Support for C++11 dialect. -
    - Container::iterator_type is not necessarily Container::value_type* +
    + Container::iterator_type is not necessarily Container::value_type*
    C. Free Software Needs Free Documentation diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index cafbc18ab67..b5b24d2a109 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -490,39 +490,39 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. C++ ABI Summary - .

    Dynamic Shared Objects: Survey and Issues . ISO C++ J16/06-0046 - . Benjamin Kosnik.

    Versioning With Namespaces . ISO C++ J16/06-0083 - . Benjamin Kosnik.

     Next

    The neatest accomplishment of the algorithms sect1 is that all the work is done via iterators, not containers directly. This means two diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 8997efa77ea..7ae8b270702 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -75,11 +75,11 @@ _Alloc_traits have been removed. __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. -


    Releases after gcc-3.4 have continued to add to the collection +


    Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. -


    +


    Debug mode first appears.

    Precompiled header support PCH support. diff --git a/libstdc++-v3/doc/html/manual/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html index f72ea4b4137..7be7e1a83c7 100644 --- a/libstdc++-v3/doc/html/manual/appendix_contributing.html +++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html @@ -7,7 +7,7 @@ Appendices

     Next

    The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index ec5ede38506..d8aba6b3f36 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -7,7 +7,7 @@ Appendices

     Next

     Next

    Table of Contents

    Configure and Build Hacking
    Prerequisites
    Overview: What Comes from Where
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Writing and Generating Documentation
    Introduction
    Generating Documentation
    Doxygen
    Prerequisites
    Generating the Doxygen Files
    Markup
    Docbook
    Prerequisites
    Generating the DocBook Files
    Editing and Validation
    File Organization and Basics
    Markup By Example
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    Test
    Organization
    Directory Layout
    Naming Conventions
    Running the Testsuite
    Basic
    Variations
    Permutations
    Writing a new test case
    Test Harness and Utilities
    Dejagnu Harness Details
    Utilities
    Special Topics
    Qualifying Exception Safety Guarantees @@ -15,21 +15,21 @@ Existing tests
    C++11 Requirements Test Sequence Descriptions -
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in ostream.h, no cin in istream.h
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from cctype is a macro -
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    +
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro +
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    Removal of ostream::form and istream::scan extensions -
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. -
    +
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. +
    No stream::attach(int fd) -
    +
    Support for C++98 dialect. -
    +
    Support for C++TR1 dialect. -
    +
    Support for C++11 dialect. -
    - Container::iterator_type is not necessarily Container::value_type* +
    + Container::iterator_type is not necessarily Container::value_type*
     Next

    Facilities for atomic operations.

    diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index fef479d6b33..48732f2ca46 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -17,15 +17,15 @@ ISO Standard (e.g., statistical analysis). While there are a lot of really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those “obvious†classes didn't get included. -

    Known Issues include many of the limitations of its immediate ancestor.

    Portability notes and known implementation limitations are as follows.

    +

    Known Issues include many of the limitations of its immediate ancestor.

    Portability notes and known implementation limitations are as follows.

    In earlier versions of the standard, - fstream.h, - ostream.h - and istream.h + <fstream.h>, + <ostream.h> + and <istream.h> used to define cout, cin and so on. ISO C++ specifies that one needs to include - iostream + <iostream> explicitly to get the required definitions.

    Some include adjustment may be required.

    This project is no longer maintained or supported, and the sources archived. For the desperate, @@ -44,7 +44,7 @@ considered replaced and rewritten. archived. The code is considered replaced and rewritten.

    Portability notes and known implementation limitations are as follows. -

    +

    Although the ISO standard i/ostringstream-classes are - provided, (sstream), for + provided, (<sstream>), for compatibility with older implementations the pre-ISO - i/ostrstream (strstream) interface is also provided, + i/ostrstream (<strstream>) interface is also provided, with these caveats:

    Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler @@ -364,8 +365,9 @@ libstdc++-v3. of the SGI STL (version 3.3), with extensive changes.

    A more formal description of the V3 goals can be found in the official design document. -

    Portability notes and known implementation limitations are as follows.

    The pre-ISO C++ headers - (iostream.h, defalloc.h etc.) are +

    Portability notes and known implementation limitations are as follows.

    Check for baseline language coverage in the compiler for the C++11 standard.

    @@ -701,9 +703,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [
       AC_LANG_CPLUSPLUS
       AC_TRY_COMPILE([
       template <typename T>
    -    struct check
    +    struct check final
         {
    -      static_assert(sizeof(int) <= sizeof(T), "not big enough");
    +      static constexpr T value{ __cplusplus };
         };
     
         typedef check<check<bool>> right_angle_brackets;
    @@ -712,8 +714,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [
         decltype(a) b;
     
         typedef check<int> check_type;
    -    check_type c;
    -    check_type&& cr = c;],,
    +    check_type c{};
    +    check_type&& cr = static_cast<check_type&&>(c);
    +
    +    static_assert(check_type::value == 201103L, "C++11 compiler");],,
       ac_cv_cxx_compile_cxx11_native=yes, ac_cv_cxx_compile_cxx11_native=no)
       AC_LANG_RESTORE
       ])
    @@ -726,9 +730,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [
       CXXFLAGS="$CXXFLAGS -std=c++11"
       AC_TRY_COMPILE([
       template <typename T>
    -    struct check
    +    struct check final
         {
    -      static_assert(sizeof(int) <= sizeof(T), "not big enough");
    +      static constexpr T value{ __cplusplus };
         };
     
         typedef check<check<bool>> right_angle_brackets;
    @@ -737,8 +741,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [
         decltype(a) b;
     
         typedef check<int> check_type;
    -    check_type c;
    -    check_type&& cr = c;],,
    +    check_type c{};
    +    check_type&& cr = static_cast<check_type&&>(c);
    +
    +    static_assert(check_type::value == 201103L, "C++11 compiler");],,
       ac_cv_cxx_compile_cxx11_cxx=yes, ac_cv_cxx_compile_cxx11_cxx=no)
       CXXFLAGS="$ac_save_CXXFLAGS"
       AC_LANG_RESTORE
    @@ -752,9 +758,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [
       CXXFLAGS="$CXXFLAGS -std=gnu++11"
       AC_TRY_COMPILE([
       template <typename T>
    -    struct check
    +    struct check final
         {
    -      static_assert(sizeof(int) <= sizeof(T), "not big enough");
    +      static constexpr T value{ __cplusplus };
         };
     
         typedef check<check<bool>> right_angle_brackets;
    @@ -763,8 +769,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [
         decltype(a) b;
     
         typedef check<int> check_type;
    -    check_type c;
    -    check_type&& cr = c;],,
    +    check_type c{};
    +    check_type&& cr = static_cast<check_type&&>(c);
    +
    +    static_assert(check_type::value == 201103L, "C++11 compiler");],,
       ac_cv_cxx_compile_cxx11_gxx=yes, ac_cv_cxx_compile_cxx11_gxx=no)
       CXXFLAGS="$ac_save_CXXFLAGS"
       AC_LANG_RESTORE
    @@ -777,6 +785,8 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [
       fi
     ])
     

    Check for library coverage of the C++2011 standard. + (Some library headers are commented out in this check, they are + not currently provided by libstdc++).

     # AC_HEADER_STDCXX_11
     AC_DEFUN([AC_HEADER_STDCXX_11], [
    @@ -802,6 +812,7 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [
         #include <cmath>
         #include <csetjmp>
         #include <csignal>
    +    // #include <cstdalign>
         #include <cstdarg>
         #include <cstdbool>
         #include <cstddef>
    @@ -811,21 +822,29 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [
         #include <cstring>
         #include <ctgmath>
         #include <ctime>
    +    // #include <cuchar>
         #include <cwchar>
         #include <cwctype>
     
         #include <algorithm>
         #include <array>
    +    #include <atomic>
         #include <bitset>
    +    #include <chrono>
    +    // #include <codecvt>
         #include <complex>
    +    #include <condition_variable>
         #include <deque>
         #include <exception>
    +    #include <forward_list>
         #include <fstream>
         #include <functional>
    +    #include <future>
         #include <iomanip>
         #include <ios>
         #include <iosfwd>
         #include <iostream>
    +    #include <initializer_list>
         #include <istream>
         #include <iterator>
         #include <limits>
    @@ -833,19 +852,25 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [
         #include <locale>
         #include <map>
         #include <memory>
    +    #include <mutex>
         #include <new>
         #include <numeric>
         #include <ostream>
         #include <queue>
         #include <random>
    +    #include <ratio>
         #include <regex>
    +    #include <scoped_allocator>
         #include <set>
         #include <sstream>
         #include <stack>
         #include <stdexcept>
         #include <streambuf>
         #include <string>
    +    #include <system_error>
    +    #include <thread>
         #include <tuple>
    +    #include <typeindex>
         #include <typeinfo>
         #include <type_traits>
         #include <unordered_map>
    @@ -862,7 +887,8 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [
         AC_DEFINE(STDCXX_11_HEADERS,,[Define if ISO C++11 header files are present. ])
       fi
     ])
    -

    As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For <unordered_map> +

    As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For +<unordered_map>

     # AC_HEADER_UNORDERED_MAP
     AC_DEFUN([AC_HEADER_UNORDERED_MAP], [
    @@ -909,21 +935,21 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
       but the autoconf checks above could be extended to test for incomplete
       C++11 support with -std=c++0x and
       -std=gnu++0x.
    -

    Migration guide for GCC-3.2 diff --git a/libstdc++-v3/doc/html/manual/bk01pt02.html b/libstdc++-v3/doc/html/manual/bk01pt02.html index 5a56534768a..bdd5c0e3f59 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02.html @@ -13,13 +13,13 @@

    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html index e343a514c9d..0518f10fd15 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html @@ -19,6 +19,6 @@ mode or with debug mode. The following table provides the names and headers of the debugging containers: -


    In addition, when compiling in C++11 mode, these additional +


    In addition, when compiling in C++11 mode, these additional containers have additional debug capability. -


    +


    diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html index e81434e5e44..5bd27806aa6 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html @@ -63,4 +63,4 @@ Then compile this code with the prerequisite compiler flags flags for atomic operations.)

    The following table provides the names and headers of all the parallel algorithms that can be used in a similar manner: -

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    +

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html index 5b923c070d0..a4d54e0b454 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html @@ -1,7 +1,7 @@ Design

    -

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are +


    diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html index 780504cbbc5..f2f6cb6e769 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html @@ -18,7 +18,7 @@ A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. -

    Table 19.2. Profile Diagnostics

    GroupFlagBenefitCostFreq.Implemented 
    +

    Table 19.2. Profile Diagnostics

    GroupFlagBenefitCostFreq.Implemented 
    CONTAINERS HASHTABLE_TOO_SMALL101 10yes
      HASHTABLE_TOO_LARGE51 10yes
      diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html index 5a0abcd4944..a60f57b1d1a 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html @@ -76,7 +76,7 @@ else return false.

    Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). -


    +


    The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the diff --git a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html index 79e7f97c00e..61dd4083a1e 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html @@ -3,7 +3,7 @@ <meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , runtime , library "/><link rel="home" href="../index.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III.  Extensions"/><link rel="prev" href="extensions.html" title="Part III.  Extensions"/><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III.  Extensions -</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id464675"/></h1></div></div></div><p> +</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id563399"/></h1></div></div></div><p> Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from older versions of standard library components, namely SGI's STL, and some of these are diff --git a/libstdc++-v3/doc/html/manual/bk01pt04.html b/libstdc++-v3/doc/html/manual/bk01pt04.html index 427cdabb0ad..df80167670a 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt04.html +++ b/libstdc++-v3/doc/html/manual/bk01pt04.html @@ -17,21 +17,21 @@ Existing tests </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers"> C++11 Requirements Test Sequence Descriptions -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id520901">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id520933">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521036">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id521162">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id521224"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro - </a></span></dt><dt><span class="section"><a href="backwards.html#id521319">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521358">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521376">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521422"> +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first.ios_base">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.first.cout_cin">No <code class="code">cout</code> in <code class="filename"><ostream.h></code>, no <code class="code">cin</code> in <code class="filename"><istream.h></code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.second.std">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iterators">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.isspace"><code class="code">isspace</code> from <code class="filename"><cctype></code> is a macro + </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.at">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.eof">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.stringclear">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.ostreamform_istreamscan"> Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code> extensions -</a></span></dt><dt><span class="section"><a href="backwards.html#id521441">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521597">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id521616">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id521634">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521759">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id521844">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id521961">No <code class="code">ios::nocreate/ios::noreplace</code>. -</a></span></dt><dt><span class="section"><a href="backwards.html#id522009"> +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.stringstreams">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.wchar">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iostream_templates">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.thread_safety">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach"> No <code class="code">stream::attach(int fd)</code> -</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx98"> +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98"> Support for C++98 dialect. -</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_tr1"> +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_tr1"> Support for C++TR1 dialect. -</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx11"> +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx11"> Support for C++11 dialect. -</a></span></dt><dt><span class="section"><a href="backwards.html#id522258"> - Container::iterator_type is not necessarily Container::value_type* +</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.iterator_type"> + <code class="code">Container::iterator_type</code> is not necessarily <code class="code">Container::value_type*</code> </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C. Free Software Needs Free Documentation diff --git a/libstdc++-v3/doc/html/manual/concurrency.html b/libstdc++-v3/doc/html/manual/concurrency.html index 35efc060239..945592cad0a 100644 --- a/libstdc++-v3/doc/html/manual/concurrency.html +++ b/libstdc++-v3/doc/html/manual/concurrency.html @@ -7,7 +7,7 @@ Standard Contents </th><td align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 15.  Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"/>Chapter 15.  Concurrency - <a id="id464491" class="indexterm"/> + <a id="id563216" class="indexterm"/> </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p> Facilities for concurrent operation, and control thereof. </p><div class="section" title="API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency.api"/>API Reference</h2></div></div></div><p> diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html index 05c5b0e88af..7b7e373464e 100644 --- a/libstdc++-v3/doc/html/manual/containers.html +++ b/libstdc++-v3/doc/html/manual/containers.html @@ -7,7 +7,7 @@ Standard Contents </th><td align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 9.  Containers"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"/>Chapter 9.  Containers - <a id="id461537" class="indexterm"/> + <a id="id560262" class="indexterm"/> </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section" title="Sequences"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.sequences"/>Sequences</h2></div></div></div><div class="section" title="list"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"/>list</h3></div></div></div><div class="section" title="list::size() is O(n)"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"/>list::size() is O(n)</h4></div></div></div><p> Yes it is, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html index f6de96d6ee5..5652a78c1c7 100644 --- a/libstdc++-v3/doc/html/manual/diagnostics.html +++ b/libstdc++-v3/doc/html/manual/diagnostics.html @@ -7,7 +7,7 @@ Standard Contents </th><td align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 5.  Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"/>Chapter 5.  Diagnostics - <a id="id442982" class="indexterm"/> + <a id="id541707" class="indexterm"/> </h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics.exceptions"/>Exceptions</h2></div></div></div><div class="section" title="API Reference"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"/>API Reference</h3></div></div></div><p> All exception objects are defined in one of the standard header files: <code class="filename">exception</code>, diff --git a/libstdc++-v3/doc/html/manual/documentation_hacking.html b/libstdc++-v3/doc/html/manual/documentation_hacking.html index 798ea57f18f..dfeface9583 100644 --- a/libstdc++-v3/doc/html/manual/documentation_hacking.html +++ b/libstdc++-v3/doc/html/manual/documentation_hacking.html @@ -117,7 +117,7 @@ supported, and are always aliased to dummy rules. These unsupported formats are: <span class="emphasis"><em>info</em></span>, <span class="emphasis"><em>ps</em></span>, and <span class="emphasis"><em>dvi</em></span>. - </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id512133"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p> + </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id610857"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p> Prerequisite tools are Bash 2.0 or later, <a class="link" href="http://www.doxygen.org/">Doxygen</a>, and the <a class="link" href="http://www.gnu.org/software/coreutils/">GNU @@ -263,7 +263,7 @@ writing Doxygen comments. Single and double quotes, and separators in filenames are two common trouble spots. When in doubt, consult the following table. - </p><div class="table"><a id="id512636"/><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id512798"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p> + </p><div class="table"><a id="id611360"/><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id611522"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p> Editing the DocBook sources requires an XML editor. Many exist: some notable options include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>, @@ -419,11 +419,11 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal <a class="link" href="http://www.docbook.org/tdg/en/html/part2.html">online</a>. An incomplete reference for HTML to Docbook conversion is detailed in the table below. - </p><div class="table"><a id="id513276"/><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>, + </p><div class="table"><a id="id612000"/><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>, <literallayout></td></tr><tr><td style="text-align: left"><ul></td><td style="text-align: left"><itemizedlist></td></tr><tr><td style="text-align: left"><ol></td><td style="text-align: left"><orderedlist></td></tr><tr><td style="text-align: left"><il></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><dl></td><td style="text-align: left"><variablelist></td></tr><tr><td style="text-align: left"><dt></td><td style="text-align: left"><term></td></tr><tr><td style="text-align: left"><dd></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><a href=""></td><td style="text-align: left"><ulink url=""></td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left"><literal>, <programlisting></td></tr><tr><td style="text-align: left"><strong></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left">"</td><td style="text-align: left"><quote></td></tr></tbody></table></div></div><br class="table-break"/><p> And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. -</p><div class="table"><a id="id513477"/><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left"> +</p><div class="table"><a id="id612201"/><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left"> <p><function>clear()</function></p> <p><function>fs.clear()</function></p> </td></tr><tr><td style="text-align: left"><type></td><td style="text-align: left"><type>long long</type></td></tr><tr><td style="text-align: left"><varname></td><td style="text-align: left"><varname>fs</varname></td></tr><tr><td style="text-align: left"><literal></td><td style="text-align: left"> diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html index bd0d864e11c..0d5474ac211 100644 --- a/libstdc++-v3/doc/html/manual/extensions.html +++ b/libstdc++-v3/doc/html/manual/extensions.html @@ -5,7 +5,7 @@ </th></tr><tr><td align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr></table><hr/></div><div class="part" title="Part III.  Extensions"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"/>Part III.  Extensions - <a id="id464656" class="indexterm"/> + <a id="id563381" class="indexterm"/> </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="preface"><a href="bk01pt03pr01.html"/></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.link">Link- and run-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#methods.coexistence.alt">Alternatives for Coexistence</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="mt_allocator.html">20. The mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s02.html">Design Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch20s02.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch20s03.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.init">Initialization</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s03.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch20s04.html">Single Thread Example</a></span></dt><dt><span class="section"><a href="bk01pt03ch20s05.html">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="chapter"><a href="bitmap_allocator.html">21. The bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.allocate"><code class="function">allocate</code></a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.deallocate"><code class="function">deallocate</code></a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.1">1</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.2">2</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.locality">Locality</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="policy_data_structures.html">22. Policy-Based Data Structures</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.configuring"> Configuring via Template Parameters diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html index 8b588b252ab..1da98823ffd 100644 --- a/libstdc++-v3/doc/html/manual/facets.html +++ b/libstdc++-v3/doc/html/manual/facets.html @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Facets

     Next

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    API Specifications, Java Platform . java.util.Properties, java.text.MessageFormat, java.util.Locale, java.util.ResourceBundle - .

    GNU gettext tools, version 0.10.38, Native Language Support Library and Tools. diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index 884552c8336..2a815bacc6e 100644 --- a/libstdc++-v3/doc/html/manual/index.html +++ b/libstdc++-v3/doc/html/manual/index.html @@ -16,13 +16,13 @@

    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Dual C++11 and TR1 Implementation
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. @@ -126,39 +126,39 @@ Existing tests
    C++11 Requirements Test Sequence Descriptions -
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in ostream.h, no cin in istream.h
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from cctype is a macro -
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    +
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro +
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    Removal of ostream::form and istream::scan extensions -
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. -
    +
    No basic_stringbuf, basic_stringstream
    Little or no wide character support
    No templatized iostreams
    Thread safety issues
    Third
    Pre-ISO headers moved to backwards or removed
    Extension headers hash_map, hash_set moved to ext or backwards
    No ios::nocreate/ios::noreplace. +
    No stream::attach(int fd) -
    +
    Support for C++98 dialect. -
    +
    Support for C++TR1 dialect. -
    +
    Support for C++11 dialect. -
    - Container::iterator_type is not necessarily Container::value_type* +
    + Container::iterator_type is not necessarily Container::value_type*
    C. Free Software Needs Free Documentation
    D. GNU General Public License version 3 -
    E. GNU Free Documentation License
    diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html index e424c2dc28a..658024a0ae1 100644 --- a/libstdc++-v3/doc/html/manual/io.html +++ b/libstdc++-v3/doc/html/manual/io.html @@ -7,7 +7,7 @@ Standard Contents
     Next

     Next

    The following FAQ entry points out that diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html index 978537d6df3..3572f10e842 100644 --- a/libstdc++-v3/doc/html/manual/localization.html +++ b/libstdc++-v3/doc/html/manual/localization.html @@ -7,8 +7,8 @@ Standard Contents  Next


    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    Boost C++ Libraries documentation, shared_ptr diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html index b872779fc53..93088e5d9ac 100644 --- a/libstdc++-v3/doc/html/manual/numerics.html +++ b/libstdc++-v3/doc/html/manual/numerics.html @@ -7,7 +7,7 @@ Standard Contents  Next


    Using complex<> becomes even more comple- er, sorry, diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index 6af13679837..3408e18e4fa 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode.html @@ -13,11 +13,11 @@ explicit source declaration or by compiling existing sources with a specific compiler flag.

    The standard C++ library contains associative containers based on red-black trees and collision-chaining hash tables. These are very useful, but they are not ideal for all types of @@ -259,7 +259,7 @@

    The figure below shows the different underlying data structures currently supported in this library. -


    +


    A shows a collision-chaining hash-table, B shows a probing hash-table, C shows a red-black tree, D shows a splay tree, E shows a tree based on an ordered vector(implicit in the order of the @@ -378,7 +378,7 @@ no guarantee that the elements traversed will coincide with the logical elements between 1 and 5, as in label B. -


    +


    In our opinion, this problem is not caused just because red-black trees are order preserving while collision-chaining hash tables are (generally) not - it @@ -429,7 +429,7 @@ list, as in the graphic below, label B. Here the iterators are as light as can be, but the hash-table's operations are more complicated. -


    +


    It should be noted that containers based on collision-chaining hash-tables are not the only ones with this type of behavior; many other self-organizing data structures display it as well. @@ -445,7 +445,7 @@ container. The graphic below shows three cases: A1 and A2 show a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 show a collision-chaining hash table. -


    1. +


      1. Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can be de-referenced and incremented. The sequence of iterators changed, but in a way that is well-defined by the interface. @@ -681,7 +681,7 @@ typically less structured than an associative container's tree; the third simply uses an associative container. These are shown in the figure below with labels A1 and A2, B, and C. -


        +


        No single implementation can completely replace any of the others. Some have better push and pop amortized performance, some have diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html index f1fca3e706c..25808634a06 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html @@ -171,7 +171,7 @@ naturally; collision-chaining hash tables (label B) store equivalent-key values in the same bucket, the bucket can be arranged so that equivalent-key values are consecutive. -


        +


        Put differently, the standards' non-unique mapping associative-containers are associative containers that map primary keys to linked lists that are embedded into the @@ -253,7 +253,7 @@ first graphic above. Labels A and B, respectively. Each shaded box represents some size-type or secondary associative-container. -


        +


        In the first example above, then, one would use an associative container mapping each user to an associative container which maps each application id to a start time (see @@ -306,7 +306,7 @@ shows invariants for order-preserving containers: point-type iterators are synonymous with range-type iterators. Orthogonally, Cshows invariants for "set" - containers: iterators are synonymous with const iterators.


        Note that point-type iterators in self-organizing containers + containers: iterators are synonymous with const iterators.


        Note that point-type iterators in self-organizing containers (hash-based associative containers) lack movement operators, such as operator++ - in fact, this is the reason why this library differentiates from the standard C++ librarys @@ -345,7 +345,7 @@ to the question of whether point-type iterators and range-type iterators are valid. The graphic below shows tags corresponding to different types of invalidation guarantees. -


      The graphic below shows the relationships. -


    Hash-tables, as opposed to trees, do not naturally grow or shrink. It is necessary to specify policies to determine how and when a hash table should change its size. Usually, resize policies can be decomposed into orthogonal policies:

    1. A size policy indicating how a hash table @@ -668,10 +668,10 @@ and some load factor be denoted by Α. We would like to calculate the minimal length of k, such that if there were Α m elements in the hash table, a probe sequence of length k would - be found with probability at most 1/m.


      Denote the probability that a probe sequence of length + be found with probability at most 1/m.


      Denote the probability that a probe sequence of length k appears in bin i by pi, the length of the probe sequence of bin i by - li, and assume uniform distribution. Then

      Equation 22.7.  + li, and assume uniform distribution. Then

      Equation 22.7.  Probability of Probe Sequence of Length k

      p1 = @@ -685,7 +685,7 @@ li are negatively-dependent ([biblio.dubhashi98neg]) . Let - I(.) denote the indicator function. Then

      Equation 22.8.  + I(.) denote the indicator function. Then

      Equation 22.8.  Probability Probe Sequence in Some Bin

      P( existsi li ≥ k ) = @@ -724,7 +724,7 @@ a resize is needed, and if so, what is the new size (points D to G); following the resize, it notifies the policy that a resize has completed (point H); finally, the element is - inserted, and the policy notified (point I).


      In practice, a resize policy can be usually orthogonally + inserted, and the policy notified (point I).


      In practice, a resize policy can be usually orthogonally decomposed to a size policy and a trigger policy. Consequently, the library contains a single class for instantiating a resize policy: hash_standard_resize_policy @@ -733,8 +733,8 @@ both, and acts as a standard delegate ([biblio.gof]) to these policies.

      The two graphics immediately below show sequence diagrams illustrating the interaction between the standard resize policy - and its trigger and size policies, respectively.


      The library includes the following instantiations of size and trigger policies:


      These problems are solved by a combination of two means: node iterators, and template-template node updater parameters.

      Each tree-based container defines two additional iterator types, const_node_iterator @@ -920,7 +920,7 @@ node_update class, and publicly subclasses node_update. The graphic below shows this scheme, as well as some predefined policies (which are explained - below).


      node_update (an instantiation of + below).


      node_update (an instantiation of Node_Update) must define metadata_type as the type of metadata it requires. For order statistics, e.g., metadata_type might be size_t. @@ -939,7 +939,7 @@ nd_it. For example, say node x in the graphic below label A has an invalid invariant, but its' children, y and z have valid invariants. After the invocation, all three - nodes should have valid invariants, as in label B.


      When a tree operation might invalidate some node invariant, + nodes should have valid invariants, as in label B.


      When a tree operation might invalidate some node invariant, it invokes this method in its node_update base to restore the invariant. For example, the graphic below shows an insert operation (point A); the tree performs some @@ -947,7 +947,7 @@ C, and D). (It is well known that any insert, erase, split or join, can restore all node invariants by a small number of node invariant updates ([biblio.clrs2001]) - .


      To complete the description of the scheme, three questions + .


      To complete the description of the scheme, three questions need to be answered:

      1. How can a tree which supports order statistics define a method such as find_by_order?

      2. How can the node updater base access methods of the tree?

      3. How can the following cyclic dependency be resolved? @@ -989,7 +989,7 @@ node's metadata (this is halting reducible). In the graphic below, assume the shaded node is inserted. The tree would have to traverse the useless path shown to the root, applying - redundant updates all the way.


      A null policy class, null_node_update + redundant updates all the way.


    A null policy class, null_node_update solves both these problems. The tree detects that node invariants are irrelevant, and defines all accordingly.

    Trie-based containers support node invariants, as do tree-based containers. There are two minor differences, though, which, unfortunately, thwart sharing them sharing the same node-updating policies:

    The graphic below shows the scheme, as well as some predefined - policies (which are explained below).


    This library offers the following pre-defined trie node + policies (which are explained below).


    This library offers the following pre-defined trie node updating policies:

    this library allows instantiating lists with policies implementing any algorithm moving nodes to the front of the list (policies implementing algorithms interchanging nodes are unsupported).

    Associative containers based on lists are parametrized by a @@ -1311,7 +1311,7 @@ sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are - shown in the graphic below, in labels A1 and A2, label B, and label C.


    Roughly speaking, any value that is both pushed and popped + shown in the graphic below, in labels A1 and A2, label B, and label C.


    Roughly speaking, any value that is both pushed and popped from a priority queue must incur a logarithmic expense (in the amortized sense). Any priority queue implementation that would avoid this, would violate known bounds on comparison-based @@ -1391,7 +1391,7 @@ container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category; this is one of the possible tags shown in the graphic below. -


    Additionally, a traits mechanism can be used to query a +


    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then

    __gnu_pbds::container_traits<Cntnr>

    is a traits class identifying the properties of the diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html index 28942eb9bf6..519973fabd7 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html @@ -62,7 +62,7 @@ In addition, there are the following diagnostics classes, used to report errors specific to this library's data structures. -


    Perflint: A Context Sensitive Performance Advisor for C++ Programs . Lixia Liu. Silvius Rus. Copyright © 2009 . Proceedings of the 2009 International Symposium on Code Generation diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index eeefda61cea..3ca20267fb6 100644 --- a/libstdc++-v3/doc/html/manual/status.html +++ b/libstdc++-v3/doc/html/manual/status.html @@ -8,7 +8,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2003.

    This page describes the C++ support in mainline GCC SVN, not in any particular release. -

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    18 Language support @@ -157,11 +157,11 @@ presence of the required flag.

    This page describes the C++11 support in mainline GCC SVN, not in any particular release. -

    Table 1.2. C++ 2011 Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.2. C++ 2011 Implementation Status

    SectionDescriptionStatusComments
    18 Language support -
    18.1GeneralY 
    18.2TypesPartialMissing offsetof, max_align_t
    18.3Implementation properties  
    18.3.2Numeric Limits  
    18.3.2.3Class template numeric_limitsY 
    18.3.2.4numeric_limits membersY 
    18.3.2.5float_round_styleN 
    18.3.2.6float_denorm_styleN 
    18.3.2.7numeric_limits specializationsY 
    18.3.3C LibraryY 
    18.4Integer types  
    18.4.1Header <cstdint> synopsisY 
    18.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
    18.6Dynamic memory managementY 
    18.7Type identification  
    18.7.1Class type_infoY 
    18.7.2Class bad_castY 
    18.7.3Class bad_typeidY 
    18.8Exception handling  
    18.8.1Class exceptionY 
    18.8.2Class bad_exceptionY 
    18.8.3Abnormal terminationY 
    18.8.4uncaught_exceptionY 
    18.8.5Exception PropagationY 
    18.8.6nested_exceptionY 
    18.9Initializer lists  
    18.9.1Initializer list constructorsY 
    18.9.2Initializer list accessY 
    18.9.3Initializer list range accessY 
    18.10Other runtime supportY 
    +
    18.1GeneralY 
    18.2TypesPartialMissing offsetof, max_align_t
    18.3Implementation properties  
    18.3.2Numeric Limits  
    18.3.2.3Class template numeric_limitsY 
    18.3.2.4numeric_limits membersY 
    18.3.2.5float_round_styleN 
    18.3.2.6float_denorm_styleN 
    18.3.2.7numeric_limits specializationsY 
    18.3.3C LibraryY 
    18.4Integer types  
    18.4.1Header <cstdint> synopsisY 
    18.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
    18.6Dynamic memory managementY 
    18.7Type identification  
    18.7.1Class type_infoY 
    18.7.2Class bad_castY 
    18.7.3Class bad_typeidY 
    18.8Exception handling  
    18.8.1Class exceptionY 
    18.8.2Class bad_exceptionY 
    18.8.3Abnormal terminationY 
    18.8.4uncaught_exceptionY 
    18.8.5Exception PropagationY 
    18.8.6nested_exceptionY 
    18.9Initializer lists  
    18.9.1Initializer list constructorsY 
    18.9.2Initializer list accessY 
    18.9.3Initializer list range accessY 
    18.10Other runtime supportPartialMissing <cstdalign>
    19 Diagnostics @@ -188,7 +188,9 @@ particular release. 21 Strings -
    21.1GeneralY 
    21.2Character traits  
    21.2.1Character traits requirementsY 
    21.2.2traits typedefsY 
    21.2.3char_traits specializations  
    21.2.3.1struct char_traits<char>PartialMissing constexpr
    21.2.3.2struct char_traits<char16_t>PartialMissing constexpr
    21.2.3.3struct char_traits<char32_t>Y 
    21.2.3.4struct char_traits<wchar_t>Y 
    21.3String classesY 
    21.4Class template basic_stringY 
    21.5Numeric ConversionsY 
    21.6Hash supportY 
    21.7Null-terminated sequence utilitiesYC library dependency
    +
    21.1GeneralY 
    21.2Character traits  
    21.2.1Character traits requirementsY 
    21.2.2traits typedefsY 
    21.2.3char_traits specializations  
    21.2.3.1struct char_traits<char>PartialMissing constexpr
    21.2.3.2struct char_traits<char16_t>PartialMissing constexpr
    21.2.3.3struct char_traits<char32_t>Y 
    21.2.3.4struct char_traits<wchar_t>Y 
    21.3String classesY 
    21.4Class template basic_stringPartialMissing pop_back
    21.5Numeric ConversionsY 
    21.6Hash supportY 
    21.7Null-terminated sequence utilitiesPartialC library dependency. + Missing <cuchar> +
    22 Localization @@ -245,7 +247,7 @@ In this implementation the header names are prefixed by

    This page describes the TR1 support in mainline GCC SVN, not in any particular release. -

    Table 1.3. C++ TR1 Implementation Status

    SectionDescriptionStatusComments
    2General Utilities
    2.1Reference wrappers  
    2.1.1Additions to header <functional> synopsisY 
    2.1.2Class template reference_wrapper  
    2.1.2.1reference_wrapper construct/copy/destroyY 
    2.1.2.2reference_wrapper assignmentY 
    2.1.2.3reference_wrapper accessY 
    2.1.2.4reference_wrapper invocationY 
    2.1.2.5reference_wrapper helper functionsY 
    2.2Smart pointers  
    2.2.1Additions to header <memory> synopsisY 
    2.2.2Class bad_weak_ptrY 
    2.2.3Class template shared_ptr  +

    Table 1.3. C++ TR1 Implementation Status

    SectionDescriptionStatusComments
    2General Utilities
    2.1Reference wrappers  
    2.1.1Additions to header <functional> synopsisY 
    2.1.2Class template reference_wrapper  
    2.1.2.1reference_wrapper construct/copy/destroyY 
    2.1.2.2reference_wrapper assignmentY 
    2.1.2.3reference_wrapper accessY 
    2.1.2.4reference_wrapper invocationY 
    2.1.2.5reference_wrapper helper functionsY 
    2.2Smart pointers  
    2.2.1Additions to header <memory> synopsisY 
    2.2.2Class bad_weak_ptrY 
    2.2.3Class template shared_ptr 

    Uses code from boost::shared_ptr. @@ -258,7 +260,7 @@ decimal floating-point arithmetic

    This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. -

    Table 1.4. C++ TR 24733 Implementation Status

    This part deals with the functions called and objects created automatically during the course of a program's existence. diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html index c4f26a77010..19c51d26ffb 100644 --- a/libstdc++-v3/doc/html/manual/test.html +++ b/libstdc++-v3/doc/html/manual/test.html @@ -493,7 +493,7 @@ only default variables. reporting functions including:

    • time_counter

    • resource_counter

    • report_performance

    Testing is composed of running a particular test sequence, and looking at what happens to the surrounding code when diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html index 27ee39b1034..29905cd7cc6 100644 --- a/libstdc++-v3/doc/html/manual/using.html +++ b/libstdc++-v3/doc/html/manual/using.html @@ -11,5 +11,5 @@ enumerated and detailed in the table below.

    By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. -

    Table 3.1. C++ Command Options

    Option FlagsDescription
    -std=c++98Use the 1998 ISO C++ standard plus amendments.
    -std=gnu++98As directly above, with GNU extensions.
    -std=c++11Use the 2011 ISO C++ standard.
    -std=gnu++11As directly above, with GNU extensions.
    -fexceptionsSee exception-free dialect
    -frttiAs above, but RTTI-free dialect.
    -pthread or -pthreadsFor ISO C++11 <thread>, <future>, +


    diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html index a46b55b9ba3..ad340b234d3 100644 --- a/libstdc++-v3/doc/html/manual/using_exceptions.html +++ b/libstdc++-v3/doc/html/manual/using_exceptions.html @@ -266,7 +266,7 @@ is called. } catch(...) { this->_M_setstate(ios_base::badbit); } -

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) @@ -275,39 +275,39 @@ is called. . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    Error and Exception Handling . David Abrahams . Boost - .

    Standard Library Exception Policy . Matt Austern. WG21 N1077 - .

    ia64 c++ abi exception handling . Richard Henderson. GNU - .

    GCC Bug 25191: exception_defines.h #defines try/catch diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html index 99ecff25efa..2b843bbef55 100644 --- a/libstdc++-v3/doc/html/manual/using_headers.html +++ b/libstdc++-v3/doc/html/manual/using_headers.html @@ -19,19 +19,19 @@ the 1998 standard as updated for 2003, and the current 2011 standard.

    C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. -



    +



    C++11 include files. These are only available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. -



    +



    In addition, TR1 includes as: -



    Decimal floating-point arithmetic is available if the C++ +



    Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). -


    +


    Also included are files for the C++ ABI interface: -


    +


    And a large variety of extensions. -





     Next

    If you don't know what functors are, you're not alone. Many people get slightly the wrong idea. In the interest of not reinventing the wheel, we will refer you to the introduction to the functor concept written by SGI as chapter of their STL, in diff --git a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml index 74a451f0867..b69ac4d12d2 100644 --- a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml +++ b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml @@ -42,24 +42,24 @@ Committee couldn't include everything, and so a lot of those Portability notes and known implementation limitations are as follows. -

    No <code>ios_base</code> +
    No <code>ios_base</code> At least some older implementations don't have std::ios_base, so you should use std::ios::badbit, std::ios::failbit and std::ios::eofbit and std::ios::goodbit.
    -
    No <code>cout</code> in <code>ostream.h</code>, no <code>cin</code> in <code>istream.h</code> +
    No <code>cout</code> in <filename class="headerfile"><ostream.h></filename>, no <code>cin</code> in <filename class="headerfile"><istream.h></filename> In earlier versions of the standard, - fstream.h, - ostream.h - and istream.h + <fstream.h>, + <ostream.h> + and <istream.h> used to define cout, cin and so on. ISO C++ specifies that one needs to include - iostream + <iostream> explicitly to get the required definitions. Some include adjustment may be required. @@ -96,7 +96,7 @@ considered replaced and rewritten. Portability notes and known implementation limitations are as follows. -
    Namespace <code>std::</code> not supported +
    Namespace <code>std::</code> not supported @@ -114,7 +114,7 @@ considered replaced and rewritten. First, see if the compiler has a flag for this. Namespace back-portability-issues are generally not a problem for g++ compilers that do not have libstdc++ in std::, as the - compilers use -fno-honor-std (ignore + compilers use (ignore std::, :: = std::) by default. That is, the responsibility for enabling or disabling std:: is on the user; the maintainer does not have to care about it. This @@ -182,7 +182,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
    -
    Illegal iterator usage +
    Illegal iterator usage The following illustrate implementation-allowed illegal iterator @@ -212,12 +212,12 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
    -
    <code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro +<section xml:id="backwards.second.isspace"><info><title><code>isspace</code> from <filename class="headerfile"><cctype></filename> is a macro - Glibc 2.0.x and 2.1.x define ctype.h functionality as macros + Glibc 2.0.x and 2.1.x define <ctype.h> functionality as macros (isspace, isalpha etc.). @@ -242,7 +242,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; A solution is to modify a header-file so that the compiler tells - ctype.h to define functions + <ctype.h> to define functions instead of macros: @@ -254,20 +254,21 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; - Then, include ctype.h + Then, include <ctype.h> Another problem arises if you put a using namespace - std; declaration at the top, and include ctype.h. This will result in - ambiguities between the definitions in the global namespace - (ctype.h) and the + std; declaration at the top, and include + <ctype.h>. This will + result in ambiguities between the definitions in the global namespace + (<ctype.h>) and the definitions in namespace std:: (<cctype>).
    -
    No <code>vector::at</code>, <code>deque::at</code>, <code>string::at</code> +
    No <code>vector::at</code>, <code>deque::at</code>, <code>string::at</code> @@ -304,7 +305,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
    -
    No <code>std::char_traits<char>::eof</code> +
    No <code>std::char_traits<char>::eof</code> @@ -321,7 +322,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
    -
    No <code>string::clear</code> +
    No <code>string::clear</code> @@ -351,7 +352,7 @@ erase(size_type __pos = 0, size_type __n = npos)
    -
    +<section xml:id="backwards.second.ostreamform_istreamscan"><info><title> Removal of <code>ostream::form</code> and <code>istream::scan</code> extensions @@ -362,14 +363,14 @@ erase(size_type __pos = 0, size_type __n = npos)
    -
    No <code>basic_stringbuf</code>, <code>basic_stringstream</code> +
    No <code>basic_stringbuf</code>, <code>basic_stringstream</code> Although the ISO standard i/ostringstream-classes are - provided, (sstream), for + provided, (<sstream>), for compatibility with older implementations the pre-ISO - i/ostrstream (strstream) interface is also provided, + i/ostrstream (<strstream>) interface is also provided, with these caveats: @@ -490,7 +491,7 @@ particular info iostream.
    -
    Little or no wide character support +
    Little or no wide character support Classes wstring and @@ -499,7 +500,7 @@ particular info iostream.
    -
    No templatized iostreams +
    No templatized iostreams Classes wfilebuf and @@ -507,7 +508,7 @@ particular info iostream.
    -
    Thread safety issues +
    Thread safety issues @@ -601,11 +602,12 @@ libstdc++-v3. Portability notes and known implementation limitations are as follows. -
    Pre-ISO headers moved to backwards or removed +
    Pre-ISO headers moved to backwards or removed The pre-ISO C++ headers - (iostream.h, defalloc.h etc.) are + (<iostream.h>, + <defalloc.h> etc.) are available, unlike previous libstdc++ versions, but inclusion generates a warning that you are using deprecated headers. @@ -681,29 +683,30 @@ AC_DEFUN([AC_HEADER_PRE_STDCXX], [ Porting between pre-ISO headers and ISO headers is simple: headers -like vector.h can be replaced with vector and a using +like <vector.h> can be replaced with <vector> and a using directive using namespace std; can be put at the global scope. This should be enough to get this code compiling, assuming the other usage is correct.
    -
    Extension headers hash_map, hash_set moved to ext or backwards +
    Extension headers hash_map, hash_set moved to ext or backwards At this time most of the features of the SGI STL extension have been replaced by standardized libraries. - In particular, the unordered_map and - unordered_set containers of TR1 and C++ 2011 are suitable - replacements for the non-standard hash_map and - hash_set containers in the SGI STL. + In particular, the unordered_map and + unordered_set containers of TR1 and C++ 2011 + are suitable replacements for the non-standard + hash_map and hash_set + containers in the SGI STL. - Header files hash_map and hash_set moved -to ext/hash_map and ext/hash_set, + Header files <hash_map> and <hash_set> moved +to <ext/hash_map> and <ext/hash_set>, respectively. At the same time, all types in these files are enclosed in namespace __gnu_cxx. Later versions deprecate -these files, and suggest using TR1's unordered_map -and unordered_set instead. +these files, and suggest using TR1's <unordered_map> +and <unordered_set> instead. The extensions are no longer in the global or std @@ -779,7 +782,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
    -
    No <code>ios::nocreate/ios::noreplace</code>. +<section xml:id="backwards.third.nocreate_noreplace"><info><title>No <code>ios::nocreate/ios::noreplace</code>. @@ -798,7 +801,7 @@ and trunc (except for app ?).
    -
    +<section xml:id="backwards.third.streamattach"><info><title> No <code>stream::attach(int fd)</code> @@ -820,7 +823,7 @@ No stream::attach(int fd) An extension is available that implements this. - ext/stdio_filebuf.h contains a derived class called + <ext/stdio_filebuf.h> contains a derived class called __gnu_cxx::stdio_filebuf. This class can be constructed from a C FILE* or a file descriptor, and provides the fd() function. @@ -833,7 +836,7 @@ No stream::attach(int fd)
    -
    +<section xml:id="backwards.third.support_cxx98"><info><title> Support for C++98 dialect. @@ -909,7 +912,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
    -
    +<section xml:id="backwards.third.support_tr1"><info><title> Support for C++TR1 dialect. @@ -1001,7 +1004,7 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
    -
    +<section xml:id="backwards.third.support_cxx11"><info><title> Support for C++11 dialect. @@ -1018,9 +1021,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ template <typename T> - struct check + struct check final { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); + static constexpr T value{ __cplusplus }; }; typedef check<check<bool>> right_angle_brackets; @@ -1029,8 +1032,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ decltype(a) b; typedef check<int> check_type; - check_type c; - check_type&& cr = c;],, + check_type c{}; + check_type&& cr = static_cast<check_type&&>(c); + + static_assert(check_type::value == 201103L, "C++11 compiler");],, ac_cv_cxx_compile_cxx11_native=yes, ac_cv_cxx_compile_cxx11_native=no) AC_LANG_RESTORE ]) @@ -1043,9 +1048,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ CXXFLAGS="$CXXFLAGS -std=c++11" AC_TRY_COMPILE([ template <typename T> - struct check + struct check final { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); + static constexpr T value{ __cplusplus }; }; typedef check<check<bool>> right_angle_brackets; @@ -1054,8 +1059,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ decltype(a) b; typedef check<int> check_type; - check_type c; - check_type&& cr = c;],, + check_type c{}; + check_type&& cr = static_cast<check_type&&>(c); + + static_assert(check_type::value == 201103L, "C++11 compiler");],, ac_cv_cxx_compile_cxx11_cxx=yes, ac_cv_cxx_compile_cxx11_cxx=no) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE @@ -1069,9 +1076,9 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_TRY_COMPILE([ template <typename T> - struct check + struct check final { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); + static constexpr T value{ __cplusplus }; }; typedef check<check<bool>> right_angle_brackets; @@ -1080,8 +1087,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ decltype(a) b; typedef check<int> check_type; - check_type c; - check_type&& cr = c;],, + check_type c{}; + check_type&& cr = static_cast<check_type&&>(c); + + static_assert(check_type::value == 201103L, "C++11 compiler");],, ac_cv_cxx_compile_cxx11_gxx=yes, ac_cv_cxx_compile_cxx11_gxx=no) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE @@ -1097,6 +1106,8 @@ AC_DEFUN([AC_COMPILE_STDCXX_11], [ Check for library coverage of the C++2011 standard. + (Some library headers are commented out in this check, they are + not currently provided by libstdc++). @@ -1124,6 +1135,7 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ #include <cmath> #include <csetjmp> #include <csignal> + // #include <cstdalign> #include <cstdarg> #include <cstdbool> #include <cstddef> @@ -1133,21 +1145,29 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ #include <cstring> #include <ctgmath> #include <ctime> + // #include <cuchar> #include <cwchar> #include <cwctype> #include <algorithm> #include <array> + #include <atomic> #include <bitset> + #include <chrono> + // #include <codecvt> #include <complex> + #include <condition_variable> #include <deque> #include <exception> + #include <forward_list> #include <fstream> #include <functional> + #include <future> #include <iomanip> #include <ios> #include <iosfwd> #include <iostream> + #include <initializer_list> #include <istream> #include <iterator> #include <limits> @@ -1155,19 +1175,25 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ #include <locale> #include <map> #include <memory> + #include <mutex> #include <new> #include <numeric> #include <ostream> #include <queue> #include <random> + #include <ratio> #include <regex> + #include <scoped_allocator> #include <set> #include <sstream> #include <stack> #include <stdexcept> #include <streambuf> #include <string> + #include <system_error> + #include <thread> #include <tuple> + #include <typeindex> #include <typeinfo> #include <type_traits> #include <unordered_map> @@ -1186,7 +1212,8 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ ]) -As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For <unordered_map> +As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For +<unordered_map> @@ -1243,8 +1270,8 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
    -
    - Container::iterator_type is not necessarily Container::value_type* +<section xml:id="backwards.third.iterator_type"><info><title> + <code>Container::iterator_type</code> is not necessarily <code>Container::value_type*</code> -- cgit v1.2.1 From 0f998edbcdec932d9782707703578da84713cc6c Mon Sep 17 00:00:00 2001 From: redi Date: Mon, 7 Nov 2011 00:06:23 +0000 Subject: * include/bits/basic_string.h (basic_string::at): Move adjacent to other overload. (basic_string::pop_back): Define. * include/debug/string (__gnu_debug::basic_string::pop_back): Likewise. * include/ext/vstring.h (__versa_string::pop_back): Likewise. * config/abi/pre/gnu.ver: Add new symbols. * testsuite/21_strings/basic_string/modifiers/char/pop_back.cc: New. * testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc: New. * testsuite/21_strings/basic_string/range_access.cc: Split to ... * testsuite/21_strings/basic_string/range_access/char/1.cc: Here and ... * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc: Here. * testsuite/ext/vstring/modifiers/char/pop_back.cc: New. * testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181049 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 16 +++++++ libstdc++-v3/config/abi/pre/gnu.ver | 11 ++++- libstdc++-v3/include/bits/basic_string.h | 51 +++++++++++++--------- libstdc++-v3/include/debug/string | 10 +++++ libstdc++-v3/include/ext/vstring.h | 11 +++++ .../basic_string/modifiers/char/pop_back.cc | 41 +++++++++++++++++ .../basic_string/modifiers/wchar_t/pop_back.cc | 41 +++++++++++++++++ .../21_strings/basic_string/range_access.cc | 37 ---------------- .../21_strings/basic_string/range_access/char/1.cc | 31 +++++++++++++ .../basic_string/range_access/wchar_t/1.cc | 33 ++++++++++++++ .../ext/vstring/modifiers/char/pop_back.cc | 45 +++++++++++++++++++ .../ext/vstring/modifiers/wchar_t/pop_back.cc | 45 +++++++++++++++++++ 12 files changed, 313 insertions(+), 59 deletions(-) create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/modifiers/char/pop_back.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc delete mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc create mode 100644 libstdc++-v3/testsuite/ext/vstring/modifiers/char/pop_back.cc create mode 100644 libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1beefb131cc..7d3fd02a9c7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,19 @@ +2011-11-07 Jonathan Wakely + + * include/bits/basic_string.h (basic_string::at): Move adjacent to other + overload. + (basic_string::pop_back): Define. + * include/debug/string (__gnu_debug::basic_string::pop_back): Likewise. + * include/ext/vstring.h (__versa_string::pop_back): Likewise. + * config/abi/pre/gnu.ver: Add new symbols. + * testsuite/21_strings/basic_string/modifiers/char/pop_back.cc: New. + * testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc: New. + * testsuite/21_strings/basic_string/range_access.cc: Split to ... + * testsuite/21_strings/basic_string/range_access/char/1.cc: Here and ... + * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc: Here. + * testsuite/ext/vstring/modifiers/char/pop_back.cc: New. + * testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc: New. + 2011-11-06 Jonathan Wakely * doc/xml/manual/backwards_compatibility.xml: Fix autoconf tests for diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index bb5ff9a3a20..2810c84dab5 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -225,9 +225,10 @@ GLIBCXX_3.4 { _ZNKSs[0-3][a-b]*; _ZNKSs[5-9][a-b]*; _ZNKSs[0-9][d-e]*; - _ZNKSs[0-9][g-z]*; + _ZNKSs[0-79][g-z]*; _ZNKSs[0-9][0-9][a-z]*; _ZNKSs4find*; + _ZNKSs8max_size*; _ZNKSs[a-z]*; _ZNKSs4_Rep12_M_is_leakedEv; _ZNKSs4_Rep12_M_is_sharedEv; @@ -286,10 +287,11 @@ GLIBCXX_3.4 { _ZNKSbIwSt11char_traitsIwESaIwEE[0-3][a-b]*; _ZNKSbIwSt11char_traitsIwESaIwEE[5-9][a-b]*; _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][d-e]*; - _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][g-z]*; + _ZNKSbIwSt11char_traitsIwESaIwEE[0-79][g-z]*; _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][0-9][a-z]*; _ZNKSbIwSt11char_traitsIwESaIwEE[a-z]*; _ZNKSbIwSt11char_traitsIwESaIwEE4find*; + _ZNKSbIwSt11char_traitsIwESaIwEE8max_size*; _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv; _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv; _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv; @@ -1302,6 +1304,11 @@ GLIBCXX_3.4.17 { _ZNSt14numeric_limitsInE*; _ZNSt14numeric_limitsIoE*; + # std::string::pop_back() + _ZNSs8pop_backEv; + # std::wstring::pop_back() + _ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv; + } GLIBCXX_3.4.16; # Symbols in the support library (libsupc++) have their own tag. diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index 0edb8b2f8df..00f9bccd419 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -865,6 +865,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return _M_data()[__n]; } + /** + * @brief Provides access to the data contained in the %string. + * @param __n The index of the character to access. + * @return Read/write reference to the character. + * @throw std::out_of_range If @a n is an invalid index. + * + * This function provides for safer data access. The parameter is + * first checked that it is in the range of the string. The function + * throws out_of_range if the check fails. Success results in + * unsharing the string. + */ + reference + at(size_type __n) + { + if (__n >= size()) + __throw_out_of_range(__N("basic_string::at")); + _M_leak(); + return _M_data()[__n]; + } + #ifdef __GXX_EXPERIMENTAL_CXX0X__ /** * Returns a read/write reference to the data at the first @@ -899,26 +919,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return operator[](this->size() - 1); } #endif - /** - * @brief Provides access to the data contained in the %string. - * @param __n The index of the character to access. - * @return Read/write reference to the character. - * @throw std::out_of_range If @a n is an invalid index. - * - * This function provides for safer data access. The parameter is - * first checked that it is in the range of the string. The function - * throws out_of_range if the check fails. Success results in - * unsharing the string. - */ - reference - at(size_type __n) - { - if (__n >= size()) - __throw_out_of_range(__N("basic_string::at")); - _M_leak(); - return _M_data()[__n]; - } - // Modifiers: /** * @brief Append a string to this string. @@ -1394,6 +1394,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION iterator erase(iterator __first, iterator __last); +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + /** + * @brief Remove the last character. + * + * The string must be non-empty. + */ + void + pop_back() + { erase(size()-1, 1); } +#endif // __GXX_EXPERIMENTAL_CXX0X__ + /** * @brief Replace characters with value from another string. * @param __pos Index of first character to replace. diff --git a/libstdc++-v3/include/debug/string b/libstdc++-v3/include/debug/string index 7856b240b86..6350f6de5e5 100644 --- a/libstdc++-v3/include/debug/string +++ b/libstdc++-v3/include/debug/string @@ -580,6 +580,16 @@ namespace __gnu_debug return iterator(__res, this); } +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + void + pop_back() + { + __glibcxx_check_nonempty(); + _Base::pop_back(); + this->_M_invalidate_all(); + } +#endif // __GXX_EXPERIMENTAL_CXX0X__ + basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str) { diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h index 5720daf3919..a613e364d3a 100644 --- a/libstdc++-v3/include/ext/vstring.h +++ b/libstdc++-v3/include/ext/vstring.h @@ -1140,6 +1140,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return iterator(this->_M_data() + __pos); } +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + /** + * @brief Remove the last character. + * + * The string must be non-empty. + */ + void + pop_back() + { this->_M_erase(size()-1, 1); } +#endif // __GXX_EXPERIMENTAL_CXX0X__ + /** * @brief Replace characters with value from another string. * @param __pos Index of first character to replace. diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/char/pop_back.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/char/pop_back.cc new file mode 100644 index 00000000000..1f0f3d884fb --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/char/pop_back.cc @@ -0,0 +1,41 @@ +// Copyright (C) 2011 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 +// . + +// 21.4.6.5 basic_string::pop_back +// { dg-options "-std=gnu++0x" } + +#include +#include + +void test01() +{ + bool test __attribute__((unused)) = true; + + const std::string cstr("Badger"); + std::string str = cstr; + str.pop_back(); + VERIFY( str.size() == cstr.size() - 1 ); + + str += cstr.back(); + VERIFY( str == cstr ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc new file mode 100644 index 00000000000..fb5db8c1380 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc @@ -0,0 +1,41 @@ +// Copyright (C) 2011 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 +// . + +// 21.4.6.5 basic_string::pop_back +// { dg-options "-std=gnu++0x" } + +#include +#include + +void test01() +{ + bool test __attribute__((unused)) = true; + + const std::wstring cstr(L"Badger"); + std::wstring str = cstr; + str.pop_back(); + VERIFY( str.size() == cstr.size() - 1 ); + + str += cstr.back(); + VERIFY( str == cstr ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc b/libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc deleted file mode 100644 index 1ce386cbe96..00000000000 --- a/libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc +++ /dev/null @@ -1,37 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++0x" } - -// Copyright (C) 2010 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 Pred 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 -// . - -// 24.6.5, range access [iterator.range] - -#include - -void -test01() -{ - std::string s("Hello, World!"); - std::begin(s); - std::end(s); - -#ifdef _GLIBCXX_USE_WCHAR_T - std::wstring ws(L"Hello, World!"); - std::begin(ws); - std::end(ws); -#endif -} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc new file mode 100644 index 00000000000..458bf53e2c5 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc @@ -0,0 +1,31 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2010, 2011 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 Pred 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 +// . + +// 24.6.5, range access [iterator.range] + +#include + +void +test01() +{ + std::string s("Hello, World!"); + std::begin(s); + std::end(s); +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc new file mode 100644 index 00000000000..e300b092389 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc @@ -0,0 +1,33 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2010. 2011 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 Pred 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 +// . + +// 24.6.5, range access [iterator.range] + +#include + +void +test01() +{ +#ifdef _GLIBCXX_USE_WCHAR_T + std::wstring ws(L"Hello, World!"); + std::begin(ws); + std::end(ws); +#endif +} diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/char/pop_back.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/char/pop_back.cc new file mode 100644 index 00000000000..4dfa2f6fed8 --- /dev/null +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/char/pop_back.cc @@ -0,0 +1,45 @@ +// Copyright (C) 2011 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 +// . + +// 21.4.6.5 basic_string::pop_back +// { dg-options "-std=gnu++0x" } + +#include +#include + +template +int test01() +{ + bool test __attribute__((unused)) = true; + + const StrT cstr("Badger"); + StrT str = cstr; + str.pop_back(); + VERIFY( str.size() == cstr.size() - 1 ); + + str += cstr.back(); + VERIFY( str == cstr ); + + return test; +} + +int main() +{ + test01<__gnu_cxx::__sso_string>(); + test01<__gnu_cxx::__rc_string>(); + return 0; +} diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc new file mode 100644 index 00000000000..ae607b61de3 --- /dev/null +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc @@ -0,0 +1,45 @@ +// Copyright (C) 2011 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 +// . + +// 21.4.6.5 basic_string::pop_back +// { dg-options "-std=gnu++0x" } + +#include +#include + +template +int test01() +{ + bool test __attribute__((unused)) = true; + + const StrT cstr(L"Badger"); + StrT str = cstr; + str.pop_back(); + VERIFY( str.size() == cstr.size() - 1 ); + + str += cstr.back(); + VERIFY( str == cstr ); + + return test; +} + +int main() +{ + test01<__gnu_cxx::__wsso_string>(); + test01<__gnu_cxx::__wrc_string>(); + return 0; +} -- cgit v1.2.1 From 4804df32e87edd688ce2ac46c50932dec1770113 Mon Sep 17 00:00:00 2001 From: davidxl Date: Mon, 7 Nov 2011 07:43:46 +0000 Subject: make __stl_prime_list in comdat git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181071 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/include/backward/hashtable.h | 26 ++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7d3fd02a9c7..299bee97113 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2011-11-07 Xinliang David Li + + * include/backward/hashtable.h: Make __stl_prime_list + in comdat section. + 2011-11-07 Jonathan Wakely * include/bits/basic_string.h (basic_string::at): Move adjacent to other diff --git a/libstdc++-v3/include/backward/hashtable.h b/libstdc++-v3/include/backward/hashtable.h index 91b0c602cec..dbba097d130 100644 --- a/libstdc++-v3/include/backward/hashtable.h +++ b/libstdc++-v3/include/backward/hashtable.h @@ -209,7 +209,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Note: assumes long is at least 32 bits. enum { _S_num_primes = 29 }; - static const unsigned long __stl_prime_list[_S_num_primes] = + template + struct _Hashtable_prime_list + { + static const _PrimeType __stl_prime_list[_S_num_primes]; + + static const _PrimeType* + _S_get_prime_list(); + }; + + template const _PrimeType + _Hashtable_prime_list<_PrimeType>::__stl_prime_list[_S_num_primes] = { 5ul, 53ul, 97ul, 193ul, 389ul, 769ul, 1543ul, 3079ul, 6151ul, 12289ul, @@ -219,11 +229,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION 805306457ul, 1610612741ul, 3221225473ul, 4294967291ul }; + template inline const _PrimeType* + _Hashtable_prime_list<_PrimeType>::_S_get_prime_list() + { + return __stl_prime_list; + } + inline unsigned long __stl_next_prime(unsigned long __n) { - const unsigned long* __first = __stl_prime_list; - const unsigned long* __last = __stl_prime_list + (int)_S_num_primes; + const unsigned long* __first = _Hashtable_prime_list::_S_get_prime_list(); + const unsigned long* __last = __first + (int)_S_num_primes; const unsigned long* pos = std::lower_bound(__first, __last, __n); return pos == __last ? *(__last - 1) : *pos; } @@ -417,7 +433,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION size_type max_bucket_count() const - { return __stl_prime_list[(int)_S_num_primes - 1]; } + { return _Hashtable_prime_list:: + _S_get_prime_list()[(int)_S_num_primes - 1]; + } size_type elems_in_bucket(size_type __bucket) const -- cgit v1.2.1 From ea1cf1e59afecedb283ec9e45b3a16640a4a8c94 Mon Sep 17 00:00:00 2001 From: redi Date: Mon, 7 Nov 2011 07:54:06 +0000 Subject: PR libstdc++/50982 * include/std/mutex (__once_proxy): Use void parameter list to work on implicit extern "C" systems. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181072 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/include/std/mutex | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 299bee97113..408b0d4bc96 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2011-11-07 Jonathan Wakely + + PR libstdc++/50982 + * include/std/mutex (__once_proxy): Use void parameter list to + work on implicit extern "C" systems. + 2011-11-07 Xinliang David Li * include/backward/hashtable.h: Make __stl_prime_list diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index 321a332e548..bc2675b2b68 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -796,7 +796,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __get_once_mutex(); #endif - extern "C" void __once_proxy(); + extern "C" void __once_proxy(void); /// call_once template -- cgit v1.2.1 From 9efaf576cea19c6a1c5272af7e5c9eba26152c91 Mon Sep 17 00:00:00 2001 From: redi Date: Mon, 7 Nov 2011 08:46:58 +0000 Subject: * acinclude.m4: Check for * configure: Regenerate. * config.h.in: Likewise. * include/Makefile.am: Add . * include/Makefile.in: Regenerate. * include/c_global/cstdalign: New. * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: New. * doc/xml/manual/backwards_compatibility.xml: Update. * doc/xml/manual/status_cxx2011.xml: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181076 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 12 ++++++ libstdc++-v3/acinclude.m4 | 3 ++ libstdc++-v3/config.h.in | 3 ++ libstdc++-v3/configure | 14 +++++++ .../doc/xml/manual/backwards_compatibility.xml | 2 +- libstdc++-v3/doc/xml/manual/status_cxx2011.xml | 5 +-- libstdc++-v3/include/Makefile.am | 1 + libstdc++-v3/include/Makefile.in | 1 + libstdc++-v3/include/c_global/cstdalign | 44 ++++++++++++++++++++++ .../18_support/headers/cstdalign/std_c++0x_neg.cc | 24 ++++++++++++ 10 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 libstdc++-v3/include/c_global/cstdalign create mode 100644 libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 408b0d4bc96..006d8751b2f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,15 @@ +2011-11-07 Jonathan Wakely + + * acinclude.m4: Check for + * configure: Regenerate. + * config.h.in: Likewise. + * include/Makefile.am: Add . + * include/Makefile.in: Regenerate. + * include/c_global/cstdalign: New. + * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: New. + * doc/xml/manual/backwards_compatibility.xml: Update. + * doc/xml/manual/status_cxx2011.xml: Update. + 2011-11-07 Jonathan Wakely PR libstdc++/50982 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 684a2958ce8..3464b76b79c 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1641,6 +1641,9 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [ # Check for the existence of the header. AC_CHECK_HEADERS(stdbool.h) + # Check for the existence of the header. + AC_CHECK_HEADERS(stdalign.h) + CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index f82d91ad417..82ccd4e1a9d 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -330,6 +330,9 @@ /* Define to 1 if you have the `sqrtl' function. */ #undef HAVE_SQRTL +/* Define to 1 if you have the header file. */ +#undef HAVE_STDALIGN_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDBOOL_H diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 428cdc5bd80..94b29a08a27 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -19102,6 +19102,20 @@ _ACEOF fi +done + + + # Check for the existence of the header. + for ac_header in stdalign.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "stdalign.h" "ac_cv_header_stdalign_h" "$ac_includes_default" +if test "x$ac_cv_header_stdalign_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDALIGN_H 1 +_ACEOF + +fi + done diff --git a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml index b69ac4d12d2..525157f1814 100644 --- a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml +++ b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml @@ -1135,7 +1135,7 @@ AC_DEFUN([AC_HEADER_STDCXX_11], [ #include <cmath> #include <csetjmp> #include <csignal> - // #include <cstdalign> + #include <cstdalign> #include <cstdarg> #include <cstdbool> #include <cstddef> diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml index 7f0625492b2..2715b2a77ab 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml @@ -253,11 +253,10 @@ particular release. - 18.10 Other runtime support - Partial - Missing <cstdalign> + Y + diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index bc4594db4a3..732f7bcad0b 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -634,6 +634,7 @@ c_base_headers = \ ${c_base_srcdir}/cmath \ ${c_base_srcdir}/csetjmp \ ${c_base_srcdir}/csignal \ + ${c_base_srcdir}/cstdalign \ ${c_base_srcdir}/cstdarg \ ${c_base_srcdir}/cstdbool \ ${c_base_srcdir}/cstddef \ diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index 3b31e8a2c5d..3d4330c663e 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -885,6 +885,7 @@ c_base_headers = \ ${c_base_srcdir}/cmath \ ${c_base_srcdir}/csetjmp \ ${c_base_srcdir}/csignal \ + ${c_base_srcdir}/cstdalign \ ${c_base_srcdir}/cstdarg \ ${c_base_srcdir}/cstdbool \ ${c_base_srcdir}/cstddef \ diff --git a/libstdc++-v3/include/c_global/cstdalign b/libstdc++-v3/include/c_global/cstdalign new file mode 100644 index 00000000000..31f0c1b384e --- /dev/null +++ b/libstdc++-v3/include/c_global/cstdalign @@ -0,0 +1,44 @@ +// -*- C++ -*- + +// Copyright (C) 2011 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cstdalign + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CSTDALIGN +#define _GLIBCXX_CSTDALIGN 1 + +#ifndef __GXX_EXPERIMENTAL_CXX0X__ +# include +#else +# include +# if _GLIBCXX_HAVE_STDALIGN_H +# include +# endif +#endif + +#endif + diff --git a/libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc b/libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc new file mode 100644 index 00000000000..a72d65faf73 --- /dev/null +++ b/libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc @@ -0,0 +1,24 @@ +// { dg-do compile } +// { dg-options "-std=gnu++98" } + +// Copyright (C) 2011 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 +// . + +#include + +// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 } + -- cgit v1.2.1 From 305117d0a80b313e9ba4994177c85e91f0abb764 Mon Sep 17 00:00:00 2001 From: redi Date: Mon, 7 Nov 2011 11:36:04 +0000 Subject: * config/abi/pre/gnu.ver: Fix exports for string::pop_back. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181081 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 4 ++++ libstdc++-v3/config/abi/pre/gnu.ver | 10 ++++------ 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 006d8751b2f..f619177c01e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2011-11-07 Jonathan Wakely + + * config/abi/pre/gnu.ver: Fix exports for string::pop_back. + 2011-11-07 Jonathan Wakely * acinclude.m4: Check for diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index 2810c84dab5..31807945144 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -188,7 +188,7 @@ GLIBCXX_3.4 { _ZNSs[0-58-9]a*; _ZNSs5beginEv; _ZNSs[0-58-9][c-e]*; - _ZNSs[0-58-9][g-z]*; + _ZNSs[0-59][g-z]*; # _ZNSs[67][a-z]*E[PRcjmvy]*; _ZNSs6appendE[PRcjmvy]*; _ZNSs6assignE[PRcjmvy]*; @@ -225,10 +225,9 @@ GLIBCXX_3.4 { _ZNKSs[0-3][a-b]*; _ZNKSs[5-9][a-b]*; _ZNKSs[0-9][d-e]*; - _ZNKSs[0-79][g-z]*; + _ZNKSs[0-9][g-z]*; _ZNKSs[0-9][0-9][a-z]*; _ZNKSs4find*; - _ZNKSs8max_size*; _ZNKSs[a-z]*; _ZNKSs4_Rep12_M_is_leakedEv; _ZNKSs4_Rep12_M_is_sharedEv; @@ -250,7 +249,7 @@ GLIBCXX_3.4 { _ZNSbIwSt11char_traitsIwESaIwEE[0-58-9]a*; _ZNSbIwSt11char_traitsIwESaIwEE5beginEv; _ZNSbIwSt11char_traitsIwESaIwEE[0-58-9][c-e]*; - _ZNSbIwSt11char_traitsIwESaIwEE[0-58-9][g-z]*; + _ZNSbIwSt11char_traitsIwESaIwEE[0-59][g-z]*; # _ZNSbIwSt11char_traitsIwESaIwEE[67][a-b]*E[PRwjmvy]*; _ZNSbIwSt11char_traitsIwESaIwEE6appendE[PRwjmvy]*; _ZNSbIwSt11char_traitsIwESaIwEE6assignE[PRwjmvy]*; @@ -287,11 +286,10 @@ GLIBCXX_3.4 { _ZNKSbIwSt11char_traitsIwESaIwEE[0-3][a-b]*; _ZNKSbIwSt11char_traitsIwESaIwEE[5-9][a-b]*; _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][d-e]*; - _ZNKSbIwSt11char_traitsIwESaIwEE[0-79][g-z]*; + _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][g-z]*; _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][0-9][a-z]*; _ZNKSbIwSt11char_traitsIwESaIwEE[a-z]*; _ZNKSbIwSt11char_traitsIwESaIwEE4find*; - _ZNKSbIwSt11char_traitsIwESaIwEE8max_size*; _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv; _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv; _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv; -- cgit v1.2.1 From da22c41abba8c6d2fddbe78b50f2343f9f1cc79c Mon Sep 17 00:00:00 2001 From: redi Date: Mon, 7 Nov 2011 13:45:03 +0000 Subject: * acinclude.m4 (GLIBCXX_CHECK_SC_NPROC_ONLN): Define. (GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP): Define. (GLIBCXX_CHECK_SYSCTL_HW_NCPU): Define. * configure.ac: Use new checks. * configure: Regenerate. * config.h.in: Regenerate. * src/thread.cc: Check new config macros. * testsuite/lib/libstdc++.exp: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181084 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 11 ++ libstdc++-v3/acinclude.m4 | 88 +++++++++++ libstdc++-v3/config.h.in | 9 ++ libstdc++-v3/configure | 250 +++++++++++++++++++++++++++++++ libstdc++-v3/configure.ac | 3 + libstdc++-v3/src/thread.cc | 18 +++ libstdc++-v3/testsuite/lib/libstdc++.exp | 11 +- 7 files changed, 384 insertions(+), 6 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f619177c01e..2e5ccf0ecfc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2011-11-07 Jonathan Wakely + + * acinclude.m4 (GLIBCXX_CHECK_SC_NPROC_ONLN): Define. + (GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP): Define. + (GLIBCXX_CHECK_SYSCTL_HW_NCPU): Define. + * configure.ac: Use new checks. + * configure: Regenerate. + * config.h.in: Regenerate. + * src/thread.cc: Check new config macros. + * testsuite/lib/libstdc++.exp: Likewise. + 2011-11-07 Jonathan Wakely * config/abi/pre/gnu.ver: Fix exports for string::pop_back. diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 3464b76b79c..6cc6ace873f 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3459,6 +3459,94 @@ AC_DEFUN([GLIBCXX_CHECK_SC_NPROCESSORS_ONLN], [ AC_LANG_RESTORE ]) +dnl +dnl Check whether sysconf(_SC_NPROC_ONLN) is available in , and define _GLIBCXX_USE_SC_NPROC_ONLN. +dnl +AC_DEFUN([GLIBCXX_CHECK_SC_NPROC_ONLN], [ + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" + + AC_MSG_CHECKING([for _SC_NPROC_ONLN]) + AC_CACHE_VAL(glibcxx_cv_SC_NPROC_ONLN, [ + GCC_TRY_COMPILE_OR_LINK( + [#include ], + [int n = sysconf(_SC_NPROC_ONLN);], + [glibcxx_cv_SC_NPROC_ONLN=yes], + [glibcxx_cv_SC_NPROC_ONLN=no]) + ]) + if test $glibcxx_cv_SC_NPROC_ONLN = yes; then + AC_DEFINE(_GLIBCXX_USE_SC_NPROC_ONLN, 1, [Define if _SC_NPROC_ONLN is available in .]) + fi + AC_MSG_RESULT($glibcxx_cv_SC_NPROC_ONLN) + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + +dnl +dnl Check whether pthread_num_processors_np is available in , and define _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP. +dnl +AC_DEFUN([GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP], [ + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" + + AC_MSG_CHECKING([for pthreads_num_processors_np]) + AC_CACHE_VAL(glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP, [ + GCC_TRY_COMPILE_OR_LINK( + [#include ], + [int n = pthread_num_processors_np();], + [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=yes], + [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=no]) + ]) + if test $glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP = yes; then + AC_DEFINE(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP, 1, [Define if pthreads_num_processors_np is available in .]) + fi + AC_MSG_RESULT($glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP) + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + +dnl +dnl Check whether sysctl is available in , and define _GLIBCXX_USE_SYSCTL_HW_NCPU. +dnl +AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [ + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" + + AC_MSG_CHECKING([for hw.ncpu sysctl]) + AC_CACHE_VAL(glibcxx_cv_SYSCTL_HW_NCPU, [ + GCC_TRY_COMPILE_OR_LINK( + [ + #include + #include + ], + [ + int count; + size_t size = sizeof(count); + int mib[] = { CTL_HW, HW_NCPU }; + sysctl(mib, 2, &count, &size, NULL, 0); + ], + [glibcxx_cv_SYSCTL_HW_NCPU=yes], + [glibcxx_cv_SYSCTL_HW_NCPU=no]) + ]) + if test $glibcxx_cv_SYSCTL_HW_NCPU = yes; then + AC_DEFINE(_GLIBCXX_USE_SYSCTL_HW_NCPU, 1, [Define if sysctl(), CTL_HW and HW_NCPU are available in .]) + fi + AC_MSG_RESULT($glibcxx_cv_SYSCTL_HW_NCPU) + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) # Macros from the top-level gcc directory. m4_include([../config/gc++filt.m4]) diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index 82ccd4e1a9d..7215a7fec62 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -831,6 +831,9 @@ /* Define if NLS translations are to be used. */ #undef _GLIBCXX_USE_NLS +/* Define if pthreads_num_processors_np is available in . */ +#undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP + /* Define if /dev/random and /dev/urandom are available for the random_device of TR1 (Chapter 5.1). */ #undef _GLIBCXX_USE_RANDOM_TR1 @@ -841,6 +844,12 @@ /* Define if _SC_NPROCESSORS_ONLN is available in . */ #undef _GLIBCXX_USE_SC_NPROCESSORS_ONLN +/* Define if _SC_NPROC_ONLN is available in . */ +#undef _GLIBCXX_USE_SC_NPROC_ONLN + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +#undef _GLIBCXX_USE_SYSCTL_HW_NCPU + /* Define if code specialized for wchar_t should be used. */ #undef _GLIBCXX_USE_WCHAR_T diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 94b29a08a27..3be252e5c85 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -20132,6 +20132,256 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _SC_NPROC_ONLN" >&5 +$as_echo_n "checking for _SC_NPROC_ONLN... " >&6; } + if test "${glibcxx_cv_SC_NPROC_ONLN+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int n = sysconf(_SC_NPROC_ONLN); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_SC_NPROC_ONLN=yes +else + glibcxx_cv_SC_NPROC_ONLN=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int n = sysconf(_SC_NPROC_ONLN); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_SC_NPROC_ONLN=yes +else + glibcxx_cv_SC_NPROC_ONLN=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + if test $glibcxx_cv_SC_NPROC_ONLN = yes; then + +$as_echo "#define _GLIBCXX_USE_SC_NPROC_ONLN 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_SC_NPROC_ONLN" >&5 +$as_echo "$glibcxx_cv_SC_NPROC_ONLN" >&6; } + + CXXFLAGS="$ac_save_CXXFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthreads_num_processors_np" >&5 +$as_echo_n "checking for pthreads_num_processors_np... " >&6; } + if test "${glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int n = pthread_num_processors_np(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=yes +else + glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int n = pthread_num_processors_np(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=yes +else + glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + if test $glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP = yes; then + +$as_echo "#define _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP" >&5 +$as_echo "$glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP" >&6; } + + CXXFLAGS="$ac_save_CXXFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hw.ncpu sysctl" >&5 +$as_echo_n "checking for hw.ncpu sysctl... " >&6; } + if test "${glibcxx_cv_SYSCTL_HW_NCPU+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + int count; + size_t size = sizeof(count); + int mib[] = { CTL_HW, HW_NCPU }; + sysctl(mib, 2, &count, &size, NULL, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_SYSCTL_HW_NCPU=yes +else + glibcxx_cv_SYSCTL_HW_NCPU=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + int count; + size_t size = sizeof(count); + int mib[] = { CTL_HW, HW_NCPU }; + sysctl(mib, 2, &count, &size, NULL, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_SYSCTL_HW_NCPU=yes +else + glibcxx_cv_SYSCTL_HW_NCPU=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + if test $glibcxx_cv_SYSCTL_HW_NCPU = yes; then + +$as_echo "#define _GLIBCXX_USE_SYSCTL_HW_NCPU 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_SYSCTL_HW_NCPU" >&5 +$as_echo "$glibcxx_cv_SYSCTL_HW_NCPU" >&6; } + + CXXFLAGS="$ac_save_CXXFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + # Check for available headers. for ac_header in endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \ locale.h machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \ diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index eb2fe85a7c4..8f853076cbe 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -174,6 +174,9 @@ AC_CHECK_HEADERS(sys/sysinfo.h) GLIBCXX_CHECK_GET_NPROCS AC_CHECK_HEADERS(unistd.h) GLIBCXX_CHECK_SC_NPROCESSORS_ONLN +GLIBCXX_CHECK_SC_NPROC_ONLN +GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP +GLIBCXX_CHECK_SYSCTL_HW_NCPU # Check for available headers. AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \ diff --git a/libstdc++-v3/src/thread.cc b/libstdc++-v3/src/thread.cc index 09e7fc5909d..ff034b16143 100644 --- a/libstdc++-v3/src/thread.cc +++ b/libstdc++-v3/src/thread.cc @@ -30,9 +30,27 @@ #if defined(_GLIBCXX_USE_GET_NPROCS) # include # define _GLIBCXX_NPROCS get_nprocs() +#elif defined(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP) +# define _GLIBCXX_NPROCS pthread_num_processors_np() +#elif defined(_GLIBCXX_USE_SYSCTL_HW_NCPU) +# include +# include +static inline int get_nprocs() +{ + int count; + size_t size = sizeof(count); + int mib[] = { CTL_HW, HW_NCPU }; + if (!sysctl(mib, 2, &count, &size, NULL, 0)) + return count; + return 0; +} +# define _GLIBCXX_NPROCS get_nprocs() #elif defined(_GLIBCXX_USE_SC_NPROCESSORS_ONLN) # include # define _GLIBCXX_NPROCS sysconf(_SC_NPROCESSORS_ONLN) +#elif defined(_GLIBCXX_USE_SC_NPROC_ONLN) +# include +# define _GLIBCXX_NPROCS sysconf(_SC_NPROC_ONLN) #else # define _GLIBCXX_NPROCS 0 #endif diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index b510c06126f..e4191925546 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1673,13 +1673,12 @@ proc check_v3_target_nprocs { } { set f [open $src "w"] puts $f "#include " puts $f "#if defined(_GLIBCXX_USE_GET_NPROCS)" - puts $f "#elif defined(_GLIBCXX_USE_SYSCONF)" - puts $f "# include " - puts $f "# if !defined(_SC_NPROCESSORS_ONLN)" - puts $f "# error No sysconf option" - puts $f "# endif" + puts $f "#elif defined(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP)" + puts $f "#elif defined(_GLIBCXX_USE_SYSCTL_HW_NCPU)" + puts $f "#elif defined(_GLIBCXX_USE_SC_NPROCESSORS_ONLN)" + puts $f "#elif defined(_GLIBCXX_USE_SC_NPROC_ONLN)" puts $f "#else" - puts $f "# error No get_nprocs or sysconf" + puts $f "# error hardware_concurrency not implemented" puts $f "#endif" close $f -- cgit v1.2.1 From 7336fab9ce205d0f05d409afa589342da06052dc Mon Sep 17 00:00:00 2001 From: ro Date: Mon, 7 Nov 2011 16:34:31 +0000 Subject: Return gthr-posix.h to libgcc (PR bootstrap/50982) libgcc: PR bootstrap/50982 * config/gthr-posix.h: Move ... * gthr-posix.h: ... here. * config/gthr-lynx.h: Reflect this. * config/gthr-vxworks.h: Likewise. * config/rs6000/gthr-aix.h: Likewise. * configure.ac (target_thread_file): Likewise. * configure: Regenerate. libstdc++-v3: PR bootstrap/50982 * include/Makefile.am (${host_builddir}/gthr-posix.h): Reflect gthr-posix.h move. * include/Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181095 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/include/Makefile.am | 2 +- libstdc++-v3/include/Makefile.in | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 2e5ccf0ecfc..abcee817a4b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2011-11-07 Rainer Orth + + PR bootstrap/50982 + * include/Makefile.am (${host_builddir}/gthr-posix.h): Reflect + gthr-posix.h move. + * include/Makefile.in: Regenerate. + 2011-11-07 Jonathan Wakely * acinclude.m4 (GLIBCXX_CHECK_SC_NPROC_ONLN): Define. diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index 732f7bcad0b..121a6427ec2 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -1133,7 +1133,7 @@ ${host_builddir}/gthr-single.h: ${toplevel_srcdir}/libgcc/gthr-single.h \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ < $< > $@ -${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/libgcc/config/gthr-posix.h \ +${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/libgcc/gthr-posix.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index 3d4330c663e..70c0781d513 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -1521,7 +1521,7 @@ ${host_builddir}/gthr-single.h: ${toplevel_srcdir}/libgcc/gthr-single.h \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ < $< > $@ -${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/libgcc/config/gthr-posix.h \ +${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/libgcc/gthr-posix.h \ stamp-${host_alias} sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \ -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \ -- cgit v1.2.1 From 8808bf16125e1bea5cd2e969d19a53b9618593f1 Mon Sep 17 00:00:00 2001 From: amacleod Date: Mon, 7 Nov 2011 20:06:39 +0000 Subject: 2011-11-07 Andrew MacLeod libstdc++-v3 * include/bits/atomic_base.h (atomic_thread_fence): Call builtin. (atomic_signal_fence): Call builtin. (atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree, otherwise fall back to call __sync_lock_test_and_set. (atomic_flag::clear): Call __atomic_store when it is lockfree, otherwise fall back to call __sync_lock_release. gcc * doc/extend.texi: Docuemnt behaviour change for __atomic_exchange and __atomic_store. * optabs.c (expand_atomic_exchange): Expand to __sync_lock_test_and_set only when originated from that builtin. (expand_atomic_store): Expand to __sync_lock_release when originated from that builtin. * builtins.c (expand_builtin_sync_lock_test_and_set): Add flag that expand_atomic_exchange call originated from here. (expand_builtin_sync_lock_release): Add flag that expand_atomic_store call originated from here. (expand_builtin_atomic_exchange): Add origination flag. (expand_builtin_atomic_store): Add origination flag. * expr.h (expand_atomic_exchange, expand_atomic_store): Add boolean parameters to indicate implementation fall back options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181111 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 9 +++++ libstdc++-v3/include/bits/atomic_base.h | 60 +++++++++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 6 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index abcee817a4b..f28bc5c4b42 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2011-11-07 Andrew MacLeod + + * include/bits/atomic_base.h (atomic_thread_fence): Call builtin. + (atomic_signal_fence): Call builtin. + (atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree, + otherwise fall back to call __sync_lock_test_and_set. + (atomic_flag::clear): Call __atomic_store when it is lockfree, + otherwise fall back to call __sync_lock_release. + 2011-11-07 Rainer Orth PR bootstrap/50982 diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 2e4a6a1894a..e297eb0e6ad 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -69,10 +69,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } void - atomic_thread_fence(memory_order) noexcept; + atomic_thread_fence(memory_order __m) noexcept + { + __atomic_thread_fence (__m); + } void - atomic_signal_fence(memory_order) noexcept; + atomic_signal_fence(memory_order __m) noexcept + { + __atomic_signal_fence (__m); + } /// kill_dependency template @@ -261,13 +267,35 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool test_and_set(memory_order __m = memory_order_seq_cst) noexcept { - return __atomic_exchange_n(&_M_i, 1, __m); + /* The standard *requires* this to be lock free. If exchange is not + always lock free, the resort to the old test_and_set. */ + if (__atomic_always_lock_free (sizeof (_M_i), 0)) + return __atomic_exchange_n(&_M_i, 1, __m); + else + { + /* Sync test and set is only guaranteed to be acquire. */ + if (__m == memory_order_seq_cst || __m == memory_order_release + || __m == memory_order_acq_rel) + atomic_thread_fence (__m); + return __sync_lock_test_and_set (&_M_i, 1); + } } bool test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept { - return __atomic_exchange_n(&_M_i, 1, __m); + /* The standard *requires* this to be lock free. If exchange is not + always lock free, the resort to the old test_and_set. */ + if (__atomic_always_lock_free (sizeof (_M_i), 0)) + return __atomic_exchange_n(&_M_i, 1, __m); + else + { + /* Sync test and set is only guaranteed to be acquire. */ + if (__m == memory_order_seq_cst || __m == memory_order_release + || __m == memory_order_acq_rel) + atomic_thread_fence (__m); + return __sync_lock_test_and_set (&_M_i, 1); + } } void @@ -277,7 +305,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_assert(__m != memory_order_acquire); __glibcxx_assert(__m != memory_order_acq_rel); - __atomic_store_n(&_M_i, 0, __m); + /* The standard *requires* this to be lock free. If store is not always + lock free, the resort to the old style __sync_lock_release. */ + if (__atomic_always_lock_free (sizeof (_M_i), 0)) + __atomic_store_n(&_M_i, 0, __m); + else + { + __sync_lock_release (&_M_i, 0); + /* __sync_lock_release is only guaranteed to be a release barrier. */ + if (__m == memory_order_seq_cst) + atomic_thread_fence (__m); + } } void @@ -287,7 +325,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __glibcxx_assert(__m != memory_order_acquire); __glibcxx_assert(__m != memory_order_acq_rel); - __atomic_store_n(&_M_i, 0, __m); + /* The standard *requires* this to be lock free. If store is not always + lock free, the resort to the old style __sync_lock_release. */ + if (__atomic_always_lock_free (sizeof (_M_i), 0)) + __atomic_store_n(&_M_i, 0, __m); + else + { + __sync_lock_release (&_M_i, 0); + /* __sync_lock_release is only guaranteed to be a release barrier. */ + if (__m == memory_order_seq_cst) + atomic_thread_fence (__m); + } } }; -- cgit v1.2.1 From e41ed5326fe37cae0d30182535b0e2e867f0fd1d Mon Sep 17 00:00:00 2001 From: amacleod Date: Mon, 7 Nov 2011 21:32:52 +0000 Subject: 2011-11-07 Andrew MacLeod * include/bits/atomic_base.h (atomic_thread_fence): Revert. (atomic_signal_fence): Revert. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181119 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/include/bits/atomic_base.h | 10 ++-------- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f28bc5c4b42..b8c222ba807 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2011-11-07 Andrew MacLeod + + * include/bits/atomic_base.h (atomic_thread_fence): Revert. + (atomic_signal_fence): Revert. + 2011-11-07 Andrew MacLeod * include/bits/atomic_base.h (atomic_thread_fence): Call builtin. diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index e297eb0e6ad..5327c1bfa21 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -69,16 +69,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } void - atomic_thread_fence(memory_order __m) noexcept - { - __atomic_thread_fence (__m); - } + atomic_thread_fence(memory_order __m) noexcept; void - atomic_signal_fence(memory_order __m) noexcept - { - __atomic_signal_fence (__m); - } + atomic_signal_fence(memory_order __m) noexcept; /// kill_dependency template -- cgit v1.2.1