From e48efd3b2b9cb628b41e8d0e09eac19a66e90ad2 Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Mon, 5 Oct 2009 18:04:44 +0000 Subject: [PATCH] *: Regenerate. 2009-10-05 Benjamin Kosnik * doc/html/*: Regenerate. From-SVN: r152462 --- libstdc++-v3/ChangeLog | 4 + libstdc++-v3/doc/html/api.html | 2 +- libstdc++-v3/doc/html/index.html | 2 +- libstdc++-v3/doc/html/manual/abi.html | 20 +- libstdc++-v3/doc/html/manual/algorithms.html | 2 +- libstdc++-v3/doc/html/manual/api.html | 4 +- .../html/manual/appendix_contributing.html | 8 +- .../doc/html/manual/appendix_free.html | 2 +- .../doc/html/manual/appendix_gpl.html | 4 +- .../doc/html/manual/appendix_porting.html | 8 +- libstdc++-v3/doc/html/manual/backwards.html | 48 +- .../doc/html/manual/bitmap_allocator.html | 6 +- libstdc++-v3/doc/html/manual/bitset.html | 2 +- libstdc++-v3/doc/html/manual/bk01ix01.html | 2 +- .../doc/html/manual/bk01pt02pr01.html | 2 +- .../doc/html/manual/bk01pt09pr02.html | 2 +- .../doc/html/manual/bk01pt11ch27s03.html | 22 - .../doc/html/manual/bk01pt12ch30s03.html | 4 +- .../doc/html/manual/bk01pt12ch31s03.html | 8 +- .../doc/html/manual/bk01pt12ch31s05.html | 4 +- .../doc/html/manual/bk01pt12ch32s02.html | 122 ++++ .../doc/html/manual/bk01pt12ch32s03.html | 10 + .../doc/html/manual/bk01pt12ch32s04.html | 18 + .../doc/html/manual/bk01pt12ch32s05.html | 51 ++ .../doc/html/manual/bk01pt12ch32s06.html | 68 +++ .../doc/html/manual/bk01pt12ch32s07.html | 528 ++++++++++++++++++ ...1pt12ch33s02.html => bk01pt12ch34s02.html} | 4 +- ...1pt12ch33s03.html => bk01pt12ch34s03.html} | 4 +- ...1pt12ch40s02.html => bk01pt12ch41s02.html} | 4 +- ...1pt12ch40s03.html => bk01pt12ch41s03.html} | 4 +- .../doc/html/manual/bk01pt12pr03.html | 2 +- libstdc++-v3/doc/html/manual/bugs.html | 5 +- libstdc++-v3/doc/html/manual/codecvt.html | 20 +- libstdc++-v3/doc/html/manual/containers.html | 2 +- libstdc++-v3/doc/html/manual/debug.html | 16 +- libstdc++-v3/doc/html/manual/diagnostics.html | 2 +- .../doc/html/manual/documentation_style.html | 6 +- .../doc/html/manual/ext_algorithms.html | 6 +- .../doc/html/manual/ext_allocators.html | 6 +- .../doc/html/manual/ext_concurrency.html | 6 +- .../doc/html/manual/ext_containers.html | 6 +- .../doc/html/manual/ext_demangling.html | 6 +- libstdc++-v3/doc/html/manual/ext_io.html | 6 +- .../doc/html/manual/ext_iterators.html | 6 +- .../doc/html/manual/ext_numerics.html | 6 +- .../doc/html/manual/ext_utilities.html | 6 +- libstdc++-v3/doc/html/manual/extensions.html | 4 +- libstdc++-v3/doc/html/manual/facets.html | 16 +- libstdc++-v3/doc/html/manual/intro.html | 4 +- libstdc++-v3/doc/html/manual/io.html | 2 +- libstdc++-v3/doc/html/manual/io_and_c.html | 2 +- libstdc++-v3/doc/html/manual/iterators.html | 2 +- libstdc++-v3/doc/html/manual/locales.html | 14 +- .../doc/html/manual/localization.html | 2 +- libstdc++-v3/doc/html/manual/memory.html | 20 +- libstdc++-v3/doc/html/manual/messages.html | 18 +- libstdc++-v3/doc/html/manual/numerics.html | 2 +- .../doc/html/manual/parallel_mode.html | 4 +- .../doc/html/manual/profile_mode.html | 143 +++++ libstdc++-v3/doc/html/manual/shared_ptr.html | 22 +- libstdc++-v3/doc/html/manual/spine.html | 8 +- libstdc++-v3/doc/html/manual/status.html | 40 +- libstdc++-v3/doc/html/manual/strings.html | 2 +- libstdc++-v3/doc/html/manual/support.html | 2 +- libstdc++-v3/doc/html/manual/using.html | 2 +- .../doc/html/manual/using_headers.html | 13 +- libstdc++-v3/doc/html/manual/utilities.html | 2 +- libstdc++-v3/doc/html/spine.html | 4 +- 68 files changed, 1185 insertions(+), 219 deletions(-) delete mode 100644 libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html create mode 100644 libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html create mode 100644 libstdc++-v3/doc/html/manual/bk01pt12ch32s03.html create mode 100644 libstdc++-v3/doc/html/manual/bk01pt12ch32s04.html create mode 100644 libstdc++-v3/doc/html/manual/bk01pt12ch32s05.html create mode 100644 libstdc++-v3/doc/html/manual/bk01pt12ch32s06.html create mode 100644 libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html rename libstdc++-v3/doc/html/manual/{bk01pt12ch33s02.html => bk01pt12ch34s02.html} (91%) rename libstdc++-v3/doc/html/manual/{bk01pt12ch33s03.html => bk01pt12ch34s03.html} (92%) rename libstdc++-v3/doc/html/manual/{bk01pt12ch40s02.html => bk01pt12ch41s02.html} (92%) rename libstdc++-v3/doc/html/manual/{bk01pt12ch40s03.html => bk01pt12ch41s03.html} (90%) create mode 100644 libstdc++-v3/doc/html/manual/profile_mode.html diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 3511b4fad72..5b176f54447 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2009-10-05 Benjamin Kosnik + + * doc/html/*: Regenerate. + 2009-10-05 John Bytheway PR libstdc++/41530 diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index cb2d72d61e6..a1f1f289b19 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -5,7 +5,7 @@ FSF -

+


diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index 96ff103fb04..b3b2ee69d6c 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -12,7 +12,7 @@

The GNU C++ Library Documentation

-

Copyright 2008 FSF

+

Copyright 2008, 2009 FSF

Permission is granted to copy, distribute and/or modify this diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index b0d2c7c905d..b0aa6be6fd7 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -464,56 +464,56 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. 24660: versioning weak symbols in libstdc++

19664: libstdc++ headers should have pop/push of the visibility around the declarations -

Bibliography

+

Bibliography

ABIcheck, a vague idea of checking ABI compatibility . - .

+ .

C++ ABI Reference . - .

+ .

Intel® Compilers for Linux* -Compatibility with the GNU Compilers . - .

+ .

Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386) . - .

+ .

Sun Solaris 2.9 : C++ Migration Guide (document 816-2459) . - .

+ .

How to Write Shared Libraries . Ulrich Drepper. - .

+ .

C++ ABI for the ARM Architecture . - .

+ .

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

+ .

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

+ .

Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems . SYRCoSE 2009 diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html index 92e33d33d7b..db71a81443b 100644 --- a/libstdc++-v3/doc/html/manual/algorithms.html +++ b/libstdc++-v3/doc/html/manual/algorithms.html @@ -5,5 +5,5 @@ Prev The GNU C++ Library Next


Part IX.  Algorithms - +

diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 6af29925e46..c2120235844 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. -

Table B.1. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

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

Table B.1. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

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. -

Table B.2. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

+

Table B.2. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

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 5fea7a933b8..a31760453cf 100644 --- a/libstdc++-v3/doc/html/manual/appendix_contributing.html +++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html @@ -1,11 +1,11 @@ -Appendix A.  Contributing

Appendix A.  Contributing - +

The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given @@ -110,4 +110,4 @@ mail message and send it to libstdc++@gcc.gnu.org. All patches and related discussion should be sent to the libstdc++ mailing list. -

+

diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index a27d6e59e31..8fb4578e1c9 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -5,7 +5,7 @@ Prev The GNU C++ Library Next

Appendix C.  Free Software Needs Free Documentation - +

The biggest deficiency in free operating systems is not in the software--it is the lack of good free manuals that we can include in diff --git a/libstdc++-v3/doc/html/manual/appendix_gpl.html b/libstdc++-v3/doc/html/manual/appendix_gpl.html index 281aeec7fef..88e1468293d 100644 --- a/libstdc++-v3/doc/html/manual/appendix_gpl.html +++ b/libstdc++-v3/doc/html/manual/appendix_gpl.html @@ -76,7 +76,7 @@

The precise terms and conditions for copying, distribution and modification follow. -

+

TERMS AND CONDITIONS

0. Definitions. @@ -617,7 +617,7 @@ waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. -

+

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html index f45d19b3e06..fceb1abc244 100644 --- a/libstdc++-v3/doc/html/manual/appendix_porting.html +++ b/libstdc++-v3/doc/html/manual/appendix_porting.html @@ -5,7 +5,7 @@ Prev The GNU C++ Library Next

Appendix B.  Porting and Maintenance - +

Configure and Build Hacking

Prerequisites

As noted previously, certain other tools are necessary for hacking on files that @@ -23,8 +23,8 @@ Regenerate all generated files by using the command sequence "autoreconf" at the top level of the libstdc++ source directory. The following will also work, but is much more complex: - "aclocal-1.7 && autoconf-2.59 && - autoheader-2.59 && automake-1.7" The version + "aclocal-1.11 && autoconf-2.64 && + autoheader-2.64 && automake-1.11" The version numbers may be absent entirely or otherwise vary depending on the current requirements and your vendor's choice of @@ -196,7 +196,7 @@

If you're wondering what that line noise in the last example was, that's how you embed autoconf special characters in output text. - They're called quadrigraphs + They're called quadrigraphs and you should use them whenever necessary.

  • HELP-STRING is what you think it is. Do not include the "default" text like we used to do; it will be done for you by diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index 854ed1d1a8c..499581ba33c 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.

    No ios_base

    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 cout in ostream.h, no cin in istream.h

    +

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

    Portability notes and known implementation limitations are as follows.

    No ios_base

    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 cout in ostream.h, no cin in istream.h

    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. -

    Namespace std:: not supported

    +

    Namespace std:: not supported

    Some care is required to support C++ compiler and or library implementation that do not have the standard library in namespace std. @@ -108,7 +108,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ]) fi ]) -

    Illegal iterator usage

    +

    Illegal iterator usage

    The following illustrate implementation-allowed illegal iterator use, and then correct use.

    • @@ -121,7 +121,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [

    • if (iterator) won't work any more => use if (iterator != iterator_type()) -

    isspace from cctype is a macro +

  • isspace from cctype is a macro

    Glibc 2.0.x and 2.1.x define ctype.h functionality as macros (isspace, isalpha etc.). @@ -154,7 +154,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; (ctype.h) and the definitions in namespace std:: (<cctype>). -

    No vector::at, deque::at, string::at

    +

    No vector::at, deque::at, string::at

    One solution is to add an autoconf-test for this:

     AC_MSG_CHECKING(for container::at)
    @@ -180,7 +180,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
     

    If you are using other (non-GNU) compilers it might be a good idea to check for string::at separately. -

    No std::char_traits<char>::eof

    +

    No std::char_traits<char>::eof

    Use some kind of autoconf test, plus this:

     #ifdef HAVE_CHAR_TRAITS
    @@ -188,7 +188,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
     #else
     #define CPP_EOF EOF
     #endif
    -

    No string::clear

    +

    No string::clear

    There are two functions for deleting the contents of a string: clear and erase (the latter returns the string). @@ -206,12 +206,12 @@ erase(size_type __pos = 0, size_type __n = npos) Unfortunately, clear is not implemented in this version, so you should use erase (which is probably faster than operator=(charT*)). -

    +

    Removal of ostream::form and istream::scan extensions

    These are no longer supported. Please use stringstreams instead. -

    No basic_stringbuf, basic_stringstream

    +

    No basic_stringbuf, basic_stringstream

    Although the ISO standard i/ostringstream-classes are provided, (sstream), for compatibility with older implementations the pre-ISO @@ -299,14 +299,14 @@ any = temp; Another example of using stringstreams is in this howto.

    There is additional information in the libstdc++-v2 info files, in particular “info iostream”. -

    Little or no wide character support

    +

    Little or no wide character support

    Classes wstring and char_traits<wchar_t> are not supported. -

    No templatized iostreams

    +

    No templatized iostreams

    Classes wfilebuf and wstringstream are not supported. -

    Thread safety issues

    +

    Thread safety issues

    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.

    Pre-ISO headers moved to backwards or removed

    The pre-ISO C++ headers +

    Portability notes and known implementation limitations are as follows.

    Pre-ISO headers moved to backwards or removed

    The pre-ISO C++ headers (iostream.h, defalloc.h etc.) are available, unlike previous libstdc++ versions, but inclusion generates a warning that you are using deprecated headers. @@ -436,7 +436,7 @@ like vector.h can be replaced with 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

    At this time most of the features of the SGI STL extension have been +

    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 are suitable replacement for the non-standard hash_map and hash_set @@ -508,7 +508,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [ AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ]) fi ]) -

    No ios::nocreate/ios::noreplace. +

    No ios::nocreate/ios::noreplace.

    The existence of ios::nocreate being used for input-streams has been confirmed, most probably because the author thought it would be more correct to specify nocreate explicitly. So @@ -519,7 +519,7 @@ open the file for reading, check if it has been opened, and then decide whether you want to create/replace or not. To my knowledge, even older implementations support app, ate and trunc (except for app ?). -

    +

    No stream::attach(int fd)

    Phil Edwards writes: It was considered and rejected for the ISO @@ -542,7 +542,7 @@ No stream::attach(int fd) For another example of this, refer to fdstream example by Nicolai Josuttis. -

    +

    Support for C++98 dialect.

    Check for complete library coverage of the C++1998/2003 standard.

    @@ -610,7 +610,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
         AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ])
       fi
     ])
    -

    +

    Support for C++TR1 dialect.

    Check for library coverage of the TR1 standard.

    @@ -687,7 +687,7 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
         AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ])
       fi
     ])
    -

    +

    Support for C++0x dialect.

    Check for baseline language coverage in the compiler for the C++0xstandard.

    @@ -899,27 +899,27 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
         AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ])
       fi
     ])
    -

    +

    Container::iterator_type is not necessarily Container::value_type*

    This is a change in behavior from the previous version. Now, most iterator_type typedefs in container classes are POD objects, not value_type pointers. -

    Bibliography

    [ +

    Bibliography

    [ kegel41 ] Migrating to GCC 4.1 . Dan Kegel. - .

    [ + .

    [ kegel41 ] Building the Whole Debian Archive with GCC 4.1: A Summary . Martin Michlmayr. - .

    [ + .

    [ lbl32 ] Migration guide for GCC-3.2 diff --git a/libstdc++-v3/doc/html/manual/bitmap_allocator.html b/libstdc++-v3/doc/html/manual/bitmap_allocator.html index 72eec938105..e60f6671d25 100644 --- a/libstdc++-v3/doc/html/manual/bitmap_allocator.html +++ b/libstdc++-v3/doc/html/manual/bitmap_allocator.html @@ -1,6 +1,6 @@ -bitmap_allocator

    bitmap_allocator

    +bitmap_allocator

    bitmap_allocator

    Design

    As this name suggests, this allocator uses a bit-map to keep track of the used and unused memory locations for it's book-keeping @@ -103,7 +103,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). -

    Table 32.1. Bitmap Allocator Memory Map

    268042949672954294967295Data -> Space for 64 ints

    +

    Table 33.1. Bitmap Allocator Memory Map

    268042949672954294967295Data -> Space for 64 ints

    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 @@ -337,4 +337,4 @@ equivalent.

  • And also this would preserve the cache as far as poss sizeof(size_t) x 8 which is the number of bits in an integer, which can fit exactly in a CPU register. Hence, the term given is exponential growth of the internal pool. -

  • +

    diff --git a/libstdc++-v3/doc/html/manual/bitset.html b/libstdc++-v3/doc/html/manual/bitset.html index 85dbc857ae7..acc150df7e8 100644 --- a/libstdc++-v3/doc/html/manual/bitset.html +++ b/libstdc++-v3/doc/html/manual/bitset.html @@ -84,7 +84,7 @@ author would love to hear from you...

    Also note that the implementation of bitset used in libstdc++ has - some extensions. + some extensions.

    Type String

    Bitmasks do not take char* nor const char* arguments in their diff --git a/libstdc++-v3/doc/html/manual/bk01ix01.html b/libstdc++-v3/doc/html/manual/bk01ix01.html index e46ca2ea195..9feecbf32ae 100644 --- a/libstdc++-v3/doc/html/manual/bk01ix01.html +++ b/libstdc++-v3/doc/html/manual/bk01ix01.html @@ -1,6 +1,6 @@ -Index

    Index

    A

    Algorithms, +Index

    Index

    A

    Algorithms, Algorithms
    Appendix
    Contributing, diff --git a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html index 724322683bf..2bdadd27d95 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html @@ -3,7 +3,7 @@

    + Next


    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/bk01pt09pr02.html b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html index 35101a56e1e..1397245fd93 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html @@ -3,7 +3,7 @@

    + Next


    The neatest accomplishment of the algorithms chapter is that all the work is done via iterators, not containers directly. This means two important things: diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html b/libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html deleted file mode 100644 index ff71f7d383b..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html +++ /dev/null @@ -1,22 +0,0 @@ - - -More Binary Input and Output

    More Binary Input and Output

    Towards the beginning of February 2001, the subject of - "binary" I/O was brought up in a couple of places at the - same time. One notable place was Usenet, where James Kanze and - Dietmar Kühl separately posted articles on why attempting - generic binary I/O was not a good idea. (Here are copies of - Kanze's article and - Kühl's article.) -

    Briefly, the problems of byte ordering and type sizes mean that - the unformatted functions like ostream::put() and - istream::get() cannot safely be used to communicate - between arbitrary programs, or across a network, or from one - invocation of a program to another invocation of the same program - on a different platform, etc. -

    The entire Usenet thread is instructive, and took place under the - subject heading "binary iostreams" on both comp.std.c++ - and comp.lang.c++.moderated in parallel. Also in that thread, - Dietmar Kühl mentioned that he had written a pair of stream - classes that would read and write XDR, which is a good step towards - a portable binary format. -

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html index 9bbbdc2fc11..613964f8cc2 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html @@ -19,6 +19,6 @@ mode or with debug mode. The following table provides the names and headers of the debugging containers: -

    Table 30.1. Debugging Containers

    ContainerHeaderDebug containerDebug header
    std::bitsetbitset__gnu_debug::bitsetbitset
    std::dequedeque__gnu_debug::dequedeque
    std::listlist__gnu_debug::listlist
    std::mapmap__gnu_debug::mapmap
    std::multimapmap__gnu_debug::multimapmap
    std::multisetset__gnu_debug::multisetset
    std::setset__gnu_debug::setset
    std::stringstring__gnu_debug::stringstring
    std::wstringstring__gnu_debug::wstringstring
    std::basic_stringstring__gnu_debug::basic_stringstring
    std::vectorvector__gnu_debug::vectorvector

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

    Table 30.1. Debugging Containers

    ContainerHeaderDebug containerDebug header
    std::bitsetbitset__gnu_debug::bitsetbitset
    std::dequedeque__gnu_debug::dequedeque
    std::listlist__gnu_debug::listlist
    std::mapmap__gnu_debug::mapmap
    std::multimapmap__gnu_debug::multimapmap
    std::multisetset__gnu_debug::multisetset
    std::setset__gnu_debug::setset
    std::stringstring__gnu_debug::stringstring
    std::wstringstring__gnu_debug::wstringstring
    std::basic_stringstring__gnu_debug::basic_stringstring
    std::vectorvector__gnu_debug::vectorvector

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

    Table 30.2. Debugging Containers C++0x

    ContainerHeaderDebug containerDebug header
    std::unordered_mapunordered_map__gnu_debug::unordered_mapunordered_map
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimapunordered_map
    std::unordered_setunordered_set__gnu_debug::unordered_setunordered_set
    std::unordered_multisetunordered_set__gnu_debug::unordered_multisetunordered_set

    +

    Table 30.2. Debugging Containers C++0x

    ContainerHeaderDebug containerDebug header
    std::unordered_mapunordered_map__gnu_debug::unordered_mapunordered_map
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimapunordered_map
    std::unordered_setunordered_set__gnu_debug::unordered_setunordered_set
    std::unordered_multisetunordered_set__gnu_debug::unordered_multisetunordered_set

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html index cdd2f3df46a..9e38ab478dd 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html @@ -17,11 +17,7 @@ In addition, hardware that supports atomic operations and a compiler as -march=i686, -march=native or -mcpu=v9. See the GCC manual for more information. -

    -

    - Also, the parallel mode requires platform support for stdint.h. -

    -

    Using Parallel Mode

    +

    Using Parallel Mode

    To use the libstdc++ parallel mode, compile your application with the prerequisite flags as detailed above, and in addition add -D_GLIBCXX_PARALLEL. This will convert all @@ -67,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 31.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 31.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/bk01pt12ch31s05.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html index 8de6c2dc633..18598fcb319 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html @@ -1,6 +1,6 @@ -Testing

    Testing

    +Testing

    Testing

    Both the normal conformance and regression tests and the supplemental performance tests work.

    @@ -23,4 +23,4 @@ additional software dependencies than the usual bare-boned text file, and can be generated by using the make doc-performance rule in the testsuite's Makefile. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html new file mode 100644 index 00000000000..0aac094031e --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html @@ -0,0 +1,122 @@ + + +Design

    Design

    +

    Table 32.1. 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 + only included from impl/profiler.h, which is the only + file included from the public headers.

    +

    Wrapper Model

    + In order to get our instrumented library version included instead of the + release one, + we use the same wrapper model as the debug mode. + We subclass entities from the release version. Wherever + _GLIBCXX_PROFILE is defined, the release namespace is + std::__norm, whereas the profile namespace is + std::__profile. Using plain std translates + into std::__profile. +

    + Whenever possible, we try to wrap at the public interface level, e.g., + in unordered_set rather than in hashtable, + in order not to depend on implementation. +

    + Mixing object files built with and without the profile mode must + not affect the program execution. However, there are no guarantees to + the accuracy of diagnostics when using even a single object not built with + -D_GLIBCXX_PROFILE. + Currently, mixing the profile mode with debug and parallel extensions is + not allowed. Mixing them at compile time will result in preprocessor errors. + Mixing them at link time is undefined. +

    Instrumentation

    + Instead of instrumenting every public entry and exit point, + we chose to add instrumentation on demand, as needed + by individual diagnostics. + The main reason is that some diagnostics require us to extract bits of + internal state that are particular only to that diagnostic. + We plan to formalize this later, after we learn more about the requirements + of several diagnostics. +

    + All the instrumentation points can be switched on and off using + -D[_NO]_GLIBCXX_PROFILE_<diagnostic> options. + With all the instrumentation calls off, there should be negligible + overhead over the release version. This property is needed to support + diagnostics based on timing of internal operations. For such diagnostics, + we anticipate turning most of the instrumentation off in order to prevent + profiling overhead from polluting time measurements, and thus diagnostics. +

    + All the instrumentation on/off compile time switches live in + include/profile/profiler.h. +

    Run Time Behavior

    + For practical reasons, the instrumentation library processes the trace + partially + rather than dumping it to disk in raw form. Each event is processed when + it occurs. It is usually attached a cost and it is aggregated into + the database of a specific diagnostic class. The cost model + is based largely on the standard performance guarantees, but in some + cases we use knowledge about GCC's standard library implementation. +

    + Information is indexed by (1) call stack and (2) instance id or address + to be able to understand and summarize precise creation-use-destruction + dynamic chains. Although the analysis is sensitive to dynamic instances, + the reports are only sensitive to call context. Whenever a dynamic instance + is destroyed, we accumulate its effect to the corresponding entry for the + call stack of its constructor location. +

    + For details, see + paper presented at + CGO 2009. +

    Analysis and Diagnostics

    + Final analysis takes place offline, and it is based entirely on the + generated trace and debugging info in the application binary. + See section Diagnostics for a list of analysis types that we plan to support. +

    + The input to the analysis is a table indexed by profile type and call stack. + The data type for each entry depends on the profile type. +

    Cost Model

    + While it is likely that cost models become complex as we get into + more sophisticated analysis, we will try to follow a simple set of rules + at the beginning. +

    • Relative benefit estimation: + The idea is to estimate or measure the cost of all operations + in the original scenario versus the scenario we advise to switch to. + For instance, when advising to change a vector to a list, an occurrence + of the insert method will generally count as a benefit. + Its magnitude depends on (1) the number of elements that get shifted + and (2) whether it triggers a reallocation. +

    • Synthetic measurements: + We will measure the relative difference between similar operations on + different containers. We plan to write a battery of small tests that + compare the times of the executions of similar methods on different + containers. The idea is to run these tests on the target machine. + If this training phase is very quick, we may decide to perform it at + library initialization time. The results can be cached on disk and reused + across runs. +

    • Timers: + We plan to use timers for operations of larger granularity, such as sort. + For instance, we can switch between different sort methods on the fly + and report the one that performs best for each call context. +

    • Show stoppers: + We may decide that the presence of an operation nullifies the advice. + For instance, when considering switching from set to + unordered_set, if we detect use of operator ++, + we will simply not issue the advice, since this could signal that the use + care require a sorted container.

    Reports

    +There are two types of reports. First, if we recognize a pattern for which +we have a substitute that is likely to give better performance, we print +the advice and estimated performance gain. The advice is usually associated +to a code position and possibly a call stack. +

    +Second, we report performance characteristics for which we do not have +a clear solution for improvement. For instance, we can point to the user +the top 10 multimap locations +which have the worst data locality in actual traversals. +Although this does not offer a solution, +it helps the user focus on the key problems and ignore the uninteresting ones. +

    Testing

    + First, we want to make sure we preserve the behavior of the release mode. + You can just type "make check-profile", which + builds and runs the whole test suite in profile mode. +

    + Second, we want to test the correctness of each diagnostic. + We created a profile directory in the test suite. + Each diagnostic must come with at least two tests, one for false positives + and one for false negatives. +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s03.html new file mode 100644 index 00000000000..36aaf9392da --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s03.html @@ -0,0 +1,10 @@ + + +Extensions for Custom Containers

    Extensions for Custom Containers

    + Many large projects use their own data structures instead of the ones in the + standard library. If these data structures are similar in functionality + to the standard library, they can be instrumented with the same hooks + that are used to instrument the standard library. + The instrumentation API is exposed in file + profiler.h (look for "Instrumentation hooks"). +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s04.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s04.html new file mode 100644 index 00000000000..4246904d4fe --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s04.html @@ -0,0 +1,18 @@ + + +Empirical Cost Model

    Empirical Cost Model

    + Currently, the cost model uses formulas with predefined relative weights + for alternative containers or container implementations. For instance, + iterating through a vector is X times faster than iterating through a list. +

    + (Under development.) + We are working on customizing this to a particular machine by providing + an automated way to compute the actual relative weights for operations + on the given machine. +

    + (Under development.) + We plan to provide a performance parameter database format that can be + filled in either by hand or by an automated training mechanism. + The analysis module will then use this database instead of the built in. + generic parameters. +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s05.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s05.html new file mode 100644 index 00000000000..42fae0c1ed6 --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s05.html @@ -0,0 +1,51 @@ + + +Implementation Issues

    Implementation Issues

    Stack Traces

    + Accurate stack traces are needed during profiling since we group events by + call context and dynamic instance. Without accurate traces, diagnostics + may be hard to interpret. For instance, when giving advice to the user + it is imperative to reference application code, not library code. +

    + Currently we are using the libc backtrace routine to get + stack traces. + _GLIBCXX_PROFILE_STACK_DEPTH can be set + to 0 if you are willing to give up call context information, or to a small + positive value to reduce run time overhead. +

    Symbolization of Instruction Addresses

    + The profiling and analysis phases use only instruction addresses. + An external utility such as addr2line is needed to postprocess the result. + We do not plan to add symbolization support in the profile extension. + This would require access to symbol tables, debug information tables, + external programs or libraries and other system dependent information. +

    Concurrency

    + Our current model is simplistic, but precise. + We cannot afford to approximate because some of our diagnostics require + precise matching of operations to container instance and call context. + During profiling, we keep a single information table per diagnostic. + There is a single lock per information table. +

    Using the Standard Library in the Instrumentation Implementation

    + As much as we would like to avoid uses of stdlibc++ within our + instrumentation library, containers such as unordered_map are very + appealing. We plan to use them as long as they are named properly + to avoid ambiguity. +

    Malloc Hooks

    + User applications/libraries can provide malloc hooks. + When the implementation of the malloc hooks uses stdlibc++, there can + be an infinite cycle between the profile mode instrumentation and the + the malloc hook code. +

    + We protect against reentrance to the profile mode instrumentation code, + which should avoid this problem in most cases. + The protection mechanism is thread safe and exception safe. + This mechanism does not prevent reentrance to the malloc hook itself, + which could still result in deadlock, if, for instance, the malloc hook + uses non-recursive locks. + XXX: A definitive solution to this problem would be for the profile extension + to use a custom allocator internally, and perhaps not to use libstdc++. +

    Construction and Destruction of Global Objects

    + The profiling library state is initialized at the first call to a profiling + method. This allows us to record the construction of all global objects. + However, we cannot do the same at destruction time. The trace is written + by a function registered by atexit, thus invoked by + exit. +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s06.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s06.html new file mode 100644 index 00000000000..475b2d4fffc --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s06.html @@ -0,0 +1,68 @@ + + +Developer Information

    Developer Information

    Big Picture

    The profile mode headers are included with + -D_GLIBCXX_PROFILE through preprocessor directives in + include/std/*. +

    Instrumented implementations are provided in + include/profile/*. All instrumentation hooks are macros + defined in include/profile/profiler.h. +

    All the implementation of the instrumentation hooks is in + include/profile/impl/*. Although all the code gets included, + thus is publicly visible, only a small number of functions are called from + outside this directory. All calls to hook implementations must be + done through macros defined in profiler.h. The macro + must ensure (1) that the call is guarded against reentrance and + (2) that the call can be turned off at compile time using a + -D_GLIBCXX_PROFILE_... compiler option. +

    How To Add A Diagnostic

    Let's say the diagnostic name is "magic". +

    If you need to instrument a header not already under + include/profile/*, first edit the corresponding header + under include/std/ and add a preprocessor directive such + as the one in include/std/vector: +

    +#ifdef _GLIBCXX_PROFILE
    +# include <profile/vector>
    +#endif
    +

    +

    If the file you need to instrument is not yet under + include/profile/, make a copy of the one in + include/debug, or the main implementation. + You'll need to include the main implementation and inherit the classes + you want to instrument. Then define the methods you want to instrument, + define the instrumentation hooks and add calls to them. + Look at include/profile/vector for an example. +

    Add macros for the instrumentation hooks in + include/profile/impl/profiler.h. + Hook names must start with __profcxx_. + Make sure they transform + in no code with -D_NO_GLBICXX_PROFILE_MAGIC. + Make sure all calls to any method in namespace __cxxprof_impl + is protected against reentrance using macro + _GLIBCXX_PROFILE_IMPL_REENTRANCE_GUARD. + All names of methods in namespace __cxxprof_impl called from + profiler.h must start with __trace_magic_. +

    Add the implementation of the diagnostic. +

    • + Create new file include/profile/impl/profiler_magic.h. +

    • + Define class __magic_info: public __object_info_base. + This is the representation of a line in the object table. + The __merge method is used to aggregate information + across all dynamic instances created at the same call context. + The __magnitude must return the estimation of the benefit + as a number of small operations, e.g., number of words copied. + The __write method is used to produce the raw trace. + The __advice method is used to produce the advice string. +

    • + Define class __magic_stack_info: public __magic_info. + This defines the content of a line in the stack table. +

    • + Define class __trace_magic: public __trace_base<__magic_info, + __magic_stack_info>. + It defines the content of the trace associated with this diagnostic. +

    +

    Add initialization and reporting calls in + include/profile/impl/profiler_trace.h. Use + __trace_vector_to_list as an example. +

    Add documentation in file doc/xml/manual/profile_mode.xml. +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html new file mode 100644 index 00000000000..7420fdeb7d3 --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html @@ -0,0 +1,528 @@ + + +Diagnostics

    Diagnostics

    + The table below presents all the diagnostics we intend to implement. + Each diagnostic has a corresponding compile time switch + -D_GLIBCXX_PROFILE_<diagnostic>. + Groups of related diagnostics can be turned on with a single switch. + For instance, -D_GLIBCXX_PROFILE_LOCALITY is equivalent to + -D_GLIBCXX_PROFILE_SOFTWARE_PREFETCH + -D_GLIBCXX_PROFILE_RBTREE_LOCALITY. +

    + The benefit, cost, expected frequency and accuracy of each diagnostic + was given a grade from 1 to 10, where 10 is highest. + A high benefit means that, if the diagnostic is accurate, the expected + performance improvement is high. + A high cost means that turning this diagnostic on leads to high slowdown. + A high frequency means that we expect this to occur relatively often. + 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 32.2. Diagnostics

    GroupFlagBenefitCostFreq.Implemented
    + CONTAINERS + HASHTABLE_TOO_SMALL101 10yes
      + HASHTABLE_TOO_LARGE51 10yes
      + INEFFICIENT_HASH73 10yes
      + VECTOR_TOO_SMALL81 10yes
      + VECTOR_TOO_LARGE51 10yes
      + VECTOR_TO_HASHTABLE77 10no
      + HASHTABLE_TO_VECTOR77 10no
      + VECTOR_TO_LIST85 10yes
      + LIST_TO_VECTOR105 10no
      + ORDERED_TO_UNORDERED105 10only map/unordered_map
    + ALGORITHMS + SORT78 7no
    + LOCALITY + SOFTWARE_PREFETCH88 5no
      + RBTREE_LOCALITY48 5no
      + FALSE_SHARING810 10no

    Diagnostic Template

    • Switch: + _GLIBCXX_PROFILE_<diagnostic>. +

    • Goal: What problem will it diagnose? +

    • Fundamentals:. + What is the fundamental reason why this is a problem

    • Sample runtime reduction: + Percentage reduction in execution time. When reduction is more than + a constant factor, describe the reduction rate formula. +

    • Recommendation: + What would the advise look like?

    • To instrument: + What stdlibc++ components need to be instrumented?

    • Analysis: + How do we decide when to issue the advice?

    • Cost model: + How do we measure benefits? Math goes here.

    • Example: +

      +program code
      +...
      +advice sample
      +

      +

    Containers

    +Switch: + _GLIBCXX_PROFILE_CONTAINERS. +

    Hashtable Too Small

    • Switch: + _GLIBCXX_PROFILE_HASHTABLE_TOO_SMALL. +

    • Goal: Detect hashtables with many + rehash operations, small construction size and large destruction size. +

    • Fundamentals: Rehash is very expensive. + Read content, follow chains within bucket, evaluate hash function, place at + new location in different order.

    • Sample runtime reduction: 36%. + Code similar to example below. +

    • Recommendation: + Set initial size to N at construction site S. +

    • To instrument: + unordered_set, unordered_map constructor, destructor, rehash. +

    • Analysis: + For each dynamic instance of unordered_[multi]set|map, + record initial size and call context of the constructor. + Record size increase, if any, after each relevant operation such as insert. + Record the estimated rehash cost.

    • Cost model: + Number of individual rehash operations * cost per rehash.

    • Example: +

      +1 unordered_set<int> us;
      +2 for (int k = 0; k < 1000000; ++k) {
      +3   us.insert(k);
      +4 }
      +
      +foo.cc:1: advice: Changing initial unordered_set size from 10 to 1000000 saves 1025530 rehash operations.
      +

      +

    Hashtable Too Large

    • Switch: + _GLIBCXX_PROFILE_HASHTABLE_TOO_LARGE. +

    • Goal: Detect hashtables which are + never filled up because fewer elements than reserved are ever + inserted. +

    • Fundamentals: Save memory, which + is good in itself and may also improve memory reference performance through + fewer cache and TLB misses.

    • Sample runtime reduction: unknown. +

    • Recommendation: + Set initial size to N at construction site S. +

    • To instrument: + unordered_set, unordered_map constructor, destructor, rehash. +

    • Analysis: + For each dynamic instance of unordered_[multi]set|map, + record initial size and call context of the constructor, and correlate it + with its size at destruction time. +

    • Cost model: + Number of iteration operations + memory saved.

    • Example: +

      +1 vector<unordered_set<int>> v(100000, unordered_set<int>(100)) ;
      +2 for (int k = 0; k < 100000; ++k) {
      +3   for (int j = 0; j < 10; ++j) {
      +4     v[k].insert(k + j);
      +5  }
      +6 }
      +
      +foo.cc:1: advice: Changing initial unordered_set size from 100 to 10 saves N
      +bytes of memory and M iteration steps.
      +

      +

    Inefficient Hash

    • Switch: + _GLIBCXX_PROFILE_INEFFICIENT_HASH. +

    • Goal: Detect hashtables with polarized + distribution. +

    • Fundamentals: A non-uniform + distribution may lead to long chains, thus possibly increasing complexity + by a factor up to the number of elements. +

    • Sample runtime reduction: factor up + to container size. +

    • Recommendation: Change hash function + for container built at site S. Distribution score = N. Access score = S. + Longest chain = C, in bucket B. +

    • To instrument: + unordered_set, unordered_map constructor, destructor, [], + insert, iterator. +

    • Analysis: + Count the exact number of link traversals. +

    • Cost model: + Total number of links traversed.

    • Example: +

      +class dumb_hash {
      + public:
      +  size_t operator() (int i) const { return 0; }
      +};
      +...
      +  unordered_set<int, dumb_hash> hs;
      +  ...
      +  for (int i = 0; i < COUNT; ++i) {
      +    hs.find(i);
      +  }
      +

      +

    Vector Too Small

    • Switch: + _GLIBCXX_PROFILE_VECTOR_TOO_SMALL. +

    • Goal:Detect vectors with many + resize operations, small construction size and large destruction size.. +

    • Fundamentals:Resizing can be expensive. + Copying large amounts of data takes time. Resizing many small vectors may + have allocation overhead and affect locality.

    • Sample runtime reduction:%. +

    • Recommendation: + Set initial size to N at construction site S.

    • To instrument:vector. +

    • Analysis: + For each dynamic instance of vector, + record initial size and call context of the constructor. + Record size increase, if any, after each relevant operation such as + push_back. Record the estimated resize cost. +

    • Cost model: + Total number of words copied * time to copy a word.

    • Example: +

      +1 vector<int> v;
      +2 for (int k = 0; k < 1000000; ++k) {
      +3   v.push_back(k);
      +4 }
      +
      +foo.cc:1: advice: Changing initial vector size from 10 to 1000000 saves 
      +copying 4000000 bytes and 20 memory allocations and deallocations.
      +

      +

    Vector Too Large

    • Switch: + _GLIBCXX_PROFILE_VECTOR_TOO_LARGE +

    • Goal:Detect vectors which are + never filled up because fewer elements than reserved are ever + inserted. +

    • Fundamentals:Save memory, which + is good in itself and may also improve memory reference performance through + fewer cache and TLB misses.

    • Sample runtime reduction:%. +

    • Recommendation: + Set initial size to N at construction site S.

    • To instrument:vector. +

    • Analysis: + For each dynamic instance of vector, + record initial size and call context of the constructor, and correlate it + with its size at destruction time.

    • Cost model: + Total amount of memory saved.

    • Example: +

      +1 vector<vector<int>> v(100000, vector<int>(100)) ;
      +2 for (int k = 0; k < 100000; ++k) {
      +3   for (int j = 0; j < 10; ++j) {
      +4     v[k].insert(k + j);
      +5  }
      +6 }
      +
      +foo.cc:1: advice: Changing initial vector size from 100 to 10 saves N
      +bytes of memory and may reduce the number of cache and TLB misses.
      +

      +

    Vector to Hashtable

    • Switch: + _GLIBCXX_PROFILE_VECTOR_TO_HASHTABLE. +

    • Goal: Detect uses of + vector that can be substituted with unordered_set + to reduce execution time. +

    • Fundamentals: + Linear search in a vector is very expensive, whereas searching in a hashtable + is very quick.

    • Sample runtime reduction:factor up + to container size. +

    • Recommendation:Replace + vector with unordered_set at site S. +

    • To instrument:vector + operations and access methods.

    • Analysis: + For each dynamic instance of vector, + record call context of the constructor. Issue the advice only if the + only methods called on this vector are push_back, + insert and find. +

    • Cost model: + Cost(vector::push_back) + cost(vector::insert) + cost(find, vector) - + cost(unordered_set::insert) + cost(unordered_set::find). +

    • Example: +

      +1  vector<int> v;
      +...
      +2  for (int i = 0; i < 1000; ++i) {
      +3    find(v.begin(), v.end(), i);
      +4  }
      +
      +foo.cc:1: advice: Changing "vector" to "unordered_set" will save about 500,000
      +comparisons.
      +

      +

    Hashtable to Vector

    • Switch: + _GLIBCXX_PROFILE_HASHTABLE_TO_VECTOR. +

    • Goal: Detect uses of + unordered_set that can be substituted with vector + to reduce execution time. +

    • Fundamentals: + Hashtable iterator is slower than vector iterator.

    • Sample runtime reduction:95%. +

    • Recommendation:Replace + unordered_set with vector at site S. +

    • To instrument:unordered_set + operations and access methods.

    • Analysis: + For each dynamic instance of unordered_set, + record call context of the constructor. Issue the advice only if the + number of find, insert and [] + operations on this unordered_set are small relative to the + number of elements, and methods begin or end + are invoked (suggesting iteration).

    • Cost model: + Number of .

    • Example: +

      +1  unordered_set<int> us;
      +...
      +2  int s = 0;
      +3  for (unordered_set<int>::iterator it = us.begin(); it != us.end(); ++it) {
      +4    s += *it;
      +5  }
      +
      +foo.cc:1: advice: Changing "unordered_set" to "vector" will save about N
      +indirections and may achieve better data locality.
      +

      +

    Vector to List

    • Switch: + _GLIBCXX_PROFILE_VECTOR_TO_LIST. +

    • Goal: Detect cases where + vector could be substituted with list for + better performance. +

    • Fundamentals: + Inserting in the middle of a vector is expensive compared to inserting in a + list. +

    • Sample runtime reduction:factor up to + container size. +

    • Recommendation:Replace vector with list + at site S.

    • To instrument:vector + operations and access methods.

    • Analysis: + For each dynamic instance of vector, + record the call context of the constructor. Record the overhead of each + insert operation based on current size and insert position. + Report instance with high insertion overhead. +

    • Cost model: + (Sum(cost(vector::method)) - Sum(cost(list::method)), for + method in [push_back, insert, erase]) + + (Cost(iterate vector) - Cost(iterate list))

    • Example: +

      +1  vector<int> v;
      +2  for (int i = 0; i < 10000; ++i) {
      +3    v.insert(v.begin(), i);
      +4  }
      +
      +foo.cc:1: advice: Changing "vector" to "list" will save about 5,000,000 
      +operations.
      +

      +

    List to Vector

    • Switch: + _GLIBCXX_PROFILE_LIST_TO_VECTOR. +

    • Goal: Detect cases where + list could be substituted with vector for + better performance. +

    • Fundamentals: + Iterating through a vector is faster than through a list. +

    • Sample runtime reduction:64%. +

    • Recommendation:Replace list with vector + at site S.

    • To instrument:vector + operations and access methods.

    • Analysis: + Issue the advice if there are no insert operations. +

    • Cost model: + (Sum(cost(vector::method)) - Sum(cost(list::method)), for + method in [push_back, insert, erase]) + + (Cost(iterate vector) - Cost(iterate list))

    • Example: +

      +1  list<int> l;
      +...
      +2  int sum = 0;
      +3  for (list<int>::iterator it = l.begin(); it != l.end(); ++it) {
      +4    sum += *it;
      +5  }
      +
      +foo.cc:1: advice: Changing "list" to "vector" will save about 1000000 indirect
      +memory references.
      +

      +

    Ordered to Unordered Associative Container

    • Switch: + _GLIBCXX_PROFILE_ORDERED_TO_UNORDERED. +

    • Goal: Detect cases where ordered + associative containers can be replaced with unordered ones. +

    • Fundamentals: + Insert and search are quicker in a hashtable than in + a red-black tree.

    • Sample runtime reduction:52%. +

    • Recommendation: + Replace set with unordered_set at site S.

    • To instrument: + set, multiset, map, + multimap methods.

    • Analysis: + Issue the advice only if we are not using operator ++ on any + iterator on a particular [multi]set|map. +

    • Cost model: + (Sum(cost(hashtable::method)) - Sum(cost(rbtree::method)), for + method in [insert, erase, find]) + + (Cost(iterate hashtable) - Cost(iterate rbtree))

    • Example: +

      +1  set<int> s;
      +2  for (int i = 0; i < 100000; ++i) {
      +3    s.insert(i);
      +4  }
      +5  int sum = 0;
      +6  for (int i = 0; i < 100000; ++i) {
      +7    sum += *s.find(i);
      +8  }
      +

      +

    Algorithms

    Switch: + _GLIBCXX_PROFILE_ALGORITHMS. +

    Sort Algorithm Performance

    • Switch: + _GLIBCXX_PROFILE_SORT. +

    • Goal: Give measure of sort algorithm + performance based on actual input. For instance, advise Radix Sort over + Quick Sort for a particular call context. +

    • Fundamentals: + See papers: + + A framework for adaptive algorithm selection in STAPL and + + Optimizing Sorting with Machine Learning Algorithms. +

    • Sample runtime reduction:60%. +

    • Recommendation: Change sort algorithm + at site S from X Sort to Y Sort.

    • To instrument: sort + algorithm.

    • Analysis: + Issue the advice if the cost model tells us that another sort algorithm + would do better on this input. Requires us to know what algorithm we + are using in our sort implementation in release mode.

    • Cost model: + Runtime(algo) for algo in [radix, quick, merge, ...]

    • Example: +

      +

      +

    Data Locality

    Switch: + _GLIBCXX_PROFILE_LOCALITY. +

    Need Software Prefetch

    • Switch: + _GLIBCXX_PROFILE_SOFTWARE_PREFETCH. +

    • Goal: Discover sequences of indirect + memory accesses that are not regular, thus cannot be predicted by + hardware prefetchers. +

    • Fundamentals: + Indirect references are hard to predict and are very expensive when they + miss in caches.

    • Sample runtime reduction:25%. +

    • Recommendation: Insert prefetch + instruction.

    • To instrument: Vector iterator and + access operator []. +

    • Analysis: + First, get cache line size and page size from system. + Then record iterator dereference sequences for which the value is a pointer. + For each sequence within a container, issue a warning if successive pointer + addresses are not within cache lines and do not form a linear pattern + (otherwise they may be prefetched by hardware). + If they also step across page boundaries, make the warning stronger. +

      The same analysis applies to containers other than vector. + However, we cannot give the same advice for linked structures, such as list, + as there is no random access to the n-th element. The user may still be + able to benefit from this information, for instance by employing frays (user + level light weight threads) to hide the latency of chasing pointers. +

      + This analysis is a little oversimplified. A better cost model could be + created by understanding the capability of the hardware prefetcher. + This model could be trained automatically by running a set of synthetic + cases. +

    • Cost model: + Total distance between pointer values of successive elements in vectors + of pointers.

    • Example: +

      +1 int zero = 0;
      +2 vector<int*> v(10000000, &zero);
      +3 for (int k = 0; k < 10000000; ++k) {
      +4   v[random() % 10000000] = new int(k);
      +5 }
      +6 for (int j = 0; j < 10000000; ++j) {
      +7   count += (*v[j] == 0 ? 0 : 1);
      +8 }
      +
      +foo.cc:7: advice: Insert prefetch instruction.
      +

      +

    Linked Structure Locality

    • Switch: + _GLIBCXX_PROFILE_RBTREE_LOCALITY. +

    • Goal: Give measure of locality of + objects stored in linked structures (lists, red-black trees and hashtables) + with respect to their actual traversal patterns. +

    • Fundamentals:Allocation can be tuned + to a specific traversal pattern, to result in better data locality. + See paper: + + Custom Memory Allocation for Free. +

    • Sample runtime reduction:30%. +

    • Recommendation: + High scatter score N for container built at site S. + Consider changing allocation sequence or choosing a structure conscious + allocator.

    • To instrument: Methods of all + containers using linked structures.

    • Analysis: + First, get cache line size and page size from system. + Then record the number of successive elements that are on different line + or page, for each traversal method such as find. Give advice + only if the ratio between this number and the number of total node hops + is above a threshold.

    • Cost model: + Sum(same_cache_line(this,previous))

    • Example: +

      + 1  set<int> s;
      + 2  for (int i = 0; i < 10000000; ++i) {
      + 3    s.insert(i);
      + 4  }
      + 5  set<int> s1, s2;
      + 6  for (int i = 0; i < 10000000; ++i) {
      + 7    s1.insert(i);
      + 8    s2.insert(i);
      + 9  }
      +...
      +      // Fast, better locality.
      +10    for (set<int>::iterator it = s.begin(); it != s.end(); ++it) {
      +11      sum += *it;
      +12    }
      +      // Slow, elements are further apart.
      +13    for (set<int>::iterator it = s1.begin(); it != s1.end(); ++it) {
      +14      sum += *it;
      +15    }
      +
      +foo.cc:5: advice: High scatter score NNN for set built here.  Consider changing
      +the allocation sequence or switching to a structure conscious allocator.
      +

      +

    Multithreaded Data Access

    + The diagnostics in this group are not meant to be implemented short term. + They require compiler support to know when container elements are written + to. Instrumentation can only tell us when elements are referenced. +

    Switch: + _GLIBCXX_PROFILE_MULTITHREADED. +

    Data Dependence Violations at Container Level

    • Switch: + _GLIBCXX_PROFILE_DDTEST. +

    • Goal: Detect container elements + that are referenced from multiple threads in the parallel region or + across parallel regions. +

    • Fundamentals: + Sharing data between threads requires communication and perhaps locking, + which may be expensive. +

    • Sample runtime reduction:?%. +

    • Recommendation: Change data + distribution or parallel algorithm.

    • To instrument: Container access methods + and iterators. +

    • Analysis: + Keep a shadow for each container. Record iterator dereferences and + container member accesses. Issue advice for elements referenced by + multiple threads. + See paper: + The LRPD test: speculative run-time parallelization of loops with + privatization and reduction parallelization. +

    • Cost model: + Number of accesses to elements referenced from multiple threads +

    • Example: +

      +

      +

    False Sharing

    • Switch: + _GLIBCXX_PROFILE_FALSE_SHARING. +

    • Goal: Detect elements in the + same container which share a cache line, are written by at least one + thread, and accessed by different threads. +

    • Fundamentals: Under these assumptions, + cache protocols require + communication to invalidate lines, which may be expensive. +

    • Sample runtime reduction:68%. +

    • Recommendation: Reorganize container + or use padding to avoid false sharing.

    • To instrument: Container access methods + and iterators. +

    • Analysis: + First, get the cache line size. + For each shared container, record all the associated iterator dereferences + and member access methods with the thread id. Compare the address lists + across threads to detect references in two different threads to the same + cache line. Issue a warning only if the ratio to total references is + significant. Do the same for iterator dereference values if they are + pointers.

    • Cost model: + Number of accesses to same cache line from different threads. +

    • Example: +

      +1     vector<int> v(2, 0);
      +2 #pragma omp parallel for shared(v, SIZE) schedule(static, 1)
      +3     for (i = 0; i < SIZE; ++i) {
      +4       v[i % 2] += i;
      +5     }
      +
      +OMP_NUM_THREADS=2 ./a.out
      +foo.cc:1: advice: Change container structure or padding to avoid false 
      +sharing in multithreaded access at foo.cc:4.  Detected N shared cache lines.
      +

      +

    Statistics

    +Switch: + _GLIBCXX_PROFILE_STATISTICS. +

    + In some cases the cost model may not tell us anything because the costs + appear to offset the benefits. Consider the choice between a vector and + a list. When there are both inserts and iteration, an automatic advice + may not be issued. However, the programmer may still be able to make use + of this information in a different way. +

    + This diagnostic will not issue any advice, but it will print statistics for + each container construction site. The statistics will contain the cost + of each operation actually performed on the container. +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch34s02.html similarity index 91% rename from libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html rename to libstdc++-v3/doc/html/manual/bk01pt12ch34s02.html index b8d6ff1a129..e1588498eb9 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch34s02.html @@ -1,6 +1,6 @@ -HP/SGI

    HP/SGI

    +HP/SGI

    HP/SGI

    A few extensions and nods to backwards-compatibility have been made with containers. Those dealing with older SGI-style allocators are dealt with elsewhere. The remaining ones all deal with bits: @@ -40,4 +40,4 @@

        size_t _Find_first() const;
        size_t _Find_next (size_t prev) const;

    The same caveat given for the _Unchecked_* functions applies here also. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch34s03.html similarity index 92% rename from libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html rename to libstdc++-v3/doc/html/manual/bk01pt12ch34s03.html index bf42e104c24..3e3b28d9998 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch34s03.html @@ -1,6 +1,6 @@ -Deprecated HP/SGI

    Deprecated HP/SGI

    +Deprecated HP/SGI

    Deprecated HP/SGI

    The SGI hashing classes hash_set and hash_set have been deprecated by the unordered_set, unordered_multiset, unordered_map, @@ -47,4 +47,4 @@ possibility of pathological cases, you'll probably get better performance from hash_map. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch41s02.html similarity index 92% rename from libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html rename to libstdc++-v3/doc/html/manual/bk01pt12ch41s02.html index cae19ae432d..cd976c38f26 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch41s02.html @@ -1,6 +1,6 @@ -Implementation

    Implementation

    Using Builtin Atomic Functions

    The functions for atomic operations described above are either +Implementation

    Implementation

    Using Builtin Atomic Functions

    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, @@ -38,4 +38,4 @@ use this layer. More detail as to the specific interface can be found in the sou functions, and usage found in the usual <pthread.h> file, including pthread_t, pthread_once_t, pthread_create, etc. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch41s03.html similarity index 90% rename from libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html rename to libstdc++-v3/doc/html/manual/bk01pt12ch41s03.html index 77b0dea6125..cba67ced6b4 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch41s03.html @@ -1,6 +1,6 @@ -Use

    Use

    Typical usage of the last two constructs is demonstrated as follows: +Use

    Use

    Typical usage of the last two constructs is demonstrated as follows:

     #include <ext/concurrence.h>
     
    @@ -31,7 +31,7 @@ the mutex as control moves out of this block.
     concurrence-related errors. These classes
     are: __concurrence_lock_error, __concurrence_unlock_error, __concurrence_wait_error,
     and __concurrence_broadcast_error.
    -

    Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from SGI's STL, some of these are GNU's, and some just seemed to appear on the doorstep. diff --git a/libstdc++-v3/doc/html/manual/bugs.html b/libstdc++-v3/doc/html/manual/bugs.html index 01c623516dc..12ed9a966fa 100644 --- a/libstdc++-v3/doc/html/manual/bugs.html +++ b/libstdc++-v3/doc/html/manual/bugs.html @@ -123,6 +123,9 @@

    129: Need error indication from seekp() and seekg()

    These functions set failbit on error now. +

    130: + Return type of container::erase(iterator) differs for associative containers +

    Make member erase return iterator for set, multiset, map, multimap.

    136: seekp, seekg setting wrong streams?

    seekp should only set the output stream, and @@ -335,7 +338,7 @@

    844: complex pow return type is ambiguous

    In C++0x mode, remove the pow(complex<T>, int) signature. -

    853: +

    853: to_string needs updating with zero and one

    Update / add the signatures.

    diff --git a/libstdc++-v3/doc/html/manual/codecvt.html b/libstdc++-v3/doc/html/manual/codecvt.html index 2b06179cdf2..64196b1ece8 100644 --- a/libstdc++-v3/doc/html/manual/codecvt.html +++ b/libstdc++-v3/doc/html/manual/codecvt.html @@ -337,41 +337,41 @@ codecvt usage.

  • wchar_t/char internal buffers and conversions between internal/external buffers? -

  • Bibliography

    +

    Bibliography

    The GNU C Library - . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

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

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman - .

    + .

    A brief description of Normative Addendum 1 . Clive Feather. Extended Character Sets. - .

    + .

    The Unicode HOWTO . Bruno Haible. - .

    + .

    diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html index ac6f8077648..bf56f513849 100644 --- a/libstdc++-v3/doc/html/manual/debug.html +++ b/libstdc++-v3/doc/html/manual/debug.html @@ -137,7 +137,18 @@ set print vtbl on set print demangle on set demangle-style gnu-v3 -

    Tracking uncaught exceptions

    +

    + GDB 7.0 will include support for writing pretty-printers in Python. + A library of printers for STL classes already exists within the + libstdc++ svn repository. For information on enabling these printers, + and for other GDB STL support options: please see + "GDB Support + for STL" in the GDB wiki. Additionally, in-depth + documentation and discussion of this feature can be found in the GDB + manual. Please see: + + "23.2.2.6 Pretty Printing" +

    Tracking uncaught exceptions

    The verbose termination handler gives information about uncaught exceptions which are killing the program. It is described in the @@ -146,6 +157,9 @@ has compile and run-time checks for many containers.

    Compile Time Checking

    The Compile-Time Checks Extension has compile-time checks for many algorithms. +

    Profile-based Performance Analysis

    The Profile-based + Performance Analysis Extension has performance checks for many + algorithms.

    diff --git a/libstdc++-v3/doc/html/manual/documentation_style.html b/libstdc++-v3/doc/html/manual/documentation_style.html index 9490bb6e19a..b58aa894c93 100644 --- a/libstdc++-v3/doc/html/manual/documentation_style.html +++ b/libstdc++-v3/doc/html/manual/documentation_style.html @@ -6,7 +6,7 @@  Next

    Documentation Style

    Doxygen

    Prerequisites

    Prerequisite tools are Bash 2.x, Doxygen, and - the GNU + the GNU coreutils. (GNU versions of find, xargs, and possibly sed and grep are used, just because the GNU versions make things very easy.) @@ -211,11 +211,11 @@ Complete details on Docbook markup can be found in the DocBook Element Reference, online. An incomplete reference for HTML to Docbook conversion is detailed in the table below. -

    Table A.1. HTML to Docbook XML markup comparison

    HTMLXML
    <p><para>
    <pre><computeroutput>, <programlisting>, +

    Table A.1. HTML to Docbook XML markup comparison

    HTMLXML
    <p><para>
    <pre><computeroutput>, <programlisting>, <literallayout>
    <ul><itemizedlist>
    <ol><orderedlist>
    <il><listitem>
    <dl><variablelist>
    <dt><term>
    <dd><listitem>
    <a href=""><ulink url="">
    <code><literal>, <programlisting>
    <strong><emphasis>
    <em><emphasis>
    "<quote>

    And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. -

    Table A.2. Docbook XML Element Use

    ElementUse
    <structname><structname>char_traits</structname>
    <classname><classname>string</classname>
    <function> +

    Table A.2. Docbook XML Element Use

    ElementUse
    <structname><structname>char_traits</structname>
    <classname><classname>string</classname>
    <function>

    <function>clear()</function>

    <function>fs.clear()</function>

    <type><type>long long</type>
    <varname><varname>fs</varname>
    <literal> diff --git a/libstdc++-v3/doc/html/manual/ext_algorithms.html b/libstdc++-v3/doc/html/manual/ext_algorithms.html index b77a24a50ce..eadb4441b1e 100644 --- a/libstdc++-v3/doc/html/manual/ext_algorithms.html +++ b/libstdc++-v3/doc/html/manual/ext_algorithms.html @@ -1,9 +1,9 @@ -Chapter 35. Algorithms

    Chapter 36. Algorithms

    25.1.6 (count, count_if) is extended with two more versions of count and count_if. The standard versions return their results. The additional signatures return void, but take a final parameter by reference to which they assign their results, e.g., @@ -20,4 +20,4 @@

        lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1,
                                      _InputIter2 first2, _InputIter2 last2)

    which does... what? -

    +

    diff --git a/libstdc++-v3/doc/html/manual/ext_allocators.html b/libstdc++-v3/doc/html/manual/ext_allocators.html index 91d38b5b990..cec9f8228a0 100644 --- a/libstdc++-v3/doc/html/manual/ext_allocators.html +++ b/libstdc++-v3/doc/html/manual/ext_allocators.html @@ -1,9 +1,9 @@ -Chapter 32. Allocators

    Chapter 33. Allocators

    mt_allocator

    Intro

    The mt allocator [hereinafter referred to simply as "the allocator"] is a fixed size (power of two) allocator that was initially @@ -394,4 +394,4 @@ mutex to be locked) this operation is also made in chunks of blocks a threads freelist mentioned above). The "formula" used can probably be improved to further reduce the risk of blocks being "bounced back and forth" between freelists. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/ext_concurrency.html b/libstdc++-v3/doc/html/manual/ext_concurrency.html index b9d7d3503e8..9fa8f74d7b1 100644 --- a/libstdc++-v3/doc/html/manual/ext_concurrency.html +++ b/libstdc++-v3/doc/html/manual/ext_concurrency.html @@ -1,9 +1,9 @@ -Chapter 40. Concurrency

    Chapter 41. Concurrency

    Design

    Interface to Locks and Mutexes

    The file <ext/concurrence.h> contains all the higher-level constructs for playing with threads. In contrast to the atomics layer, the concurrence layer consists largely of types. All types are defined within namespace __gnu_cxx.

    @@ -88,4 +88,4 @@ _GLIBCXX_WRITE_MEM_BARRIER

    Which expand to the appropriate write and read barrier required by the host hardware and operating system. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/ext_containers.html b/libstdc++-v3/doc/html/manual/ext_containers.html index 44d7f17e8cd..47ada7b5db6 100644 --- a/libstdc++-v3/doc/html/manual/ext_containers.html +++ b/libstdc++-v3/doc/html/manual/ext_containers.html @@ -1,9 +1,9 @@ -Chapter 33. Containers

    Chapter 34. Containers

    Policy Based Data Structures

    More details here. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/ext_demangling.html b/libstdc++-v3/doc/html/manual/ext_demangling.html index 5eaf54a9804..46866b82bf9 100644 --- a/libstdc++-v3/doc/html/manual/ext_demangling.html +++ b/libstdc++-v3/doc/html/manual/ext_demangling.html @@ -1,9 +1,9 @@ -Chapter 39. Demangling

    Chapter 40. Demangling

    Transforming C++ ABI identifiers (like RTTI symbols) into the original C++ source identifiers is called “demangling.” @@ -71,4 +71,4 @@ int main() be writing C++ in order to demangle C++. (That also means we have to use crummy memory management facilities, so don't forget to free() the returned char array.) -

    +

    diff --git a/libstdc++-v3/doc/html/manual/ext_io.html b/libstdc++-v3/doc/html/manual/ext_io.html index 53618a04975..d257c2c51e5 100644 --- a/libstdc++-v3/doc/html/manual/ext_io.html +++ b/libstdc++-v3/doc/html/manual/ext_io.html @@ -1,9 +1,9 @@ -Chapter 38. Input and Output

    Chapter 39. Input and Output

    Table of Contents

    Derived filebufs

    Extensions allowing filebufs to be constructed from "C" types like FILE*s and file descriptors.

    Derived filebufs

    The v2 library included non-standard extensions to construct @@ -47,4 +47,4 @@ call) then you might be interested in Henry Suter's RWLock class.

    -

    +

    diff --git a/libstdc++-v3/doc/html/manual/ext_iterators.html b/libstdc++-v3/doc/html/manual/ext_iterators.html index 51b0e0f12bd..20be5ac7831 100644 --- a/libstdc++-v3/doc/html/manual/ext_iterators.html +++ b/libstdc++-v3/doc/html/manual/ext_iterators.html @@ -1,9 +1,9 @@ -Chapter 37. Iterators

    Chapter 38. Iterators

    24.3.2 describes struct iterator, which didn't exist in the original HP STL implementation (the language wasn't rich enough at the time). For backwards compatibility, base classes are provided which declare the same nested typedefs: @@ -11,4 +11,4 @@ two iterators and returns a result. It is extended by another signature which takes two iterators and a reference to a result. The result is modified, and the function returns nothing. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/ext_numerics.html b/libstdc++-v3/doc/html/manual/ext_numerics.html index f1bb1ac93eb..dc47b617dbf 100644 --- a/libstdc++-v3/doc/html/manual/ext_numerics.html +++ b/libstdc++-v3/doc/html/manual/ext_numerics.html @@ -1,9 +1,9 @@ -Chapter 36. Numerics

    Chapter 37. Numerics

    26.4, the generalized numeric operations such as accumulate, are extended with the following functions:

        power (x, n);
    @@ -17,4 +17,4 @@
        That is, it assigns value to *first, value + 1 to *(first + 1) and so
        on."  Quoted from SGI documentation.
     

    -   void iota(_ForwardIter first, _ForwardIter last, _Tp value);
    + void iota(_ForwardIter first, _ForwardIter last, _Tp value); diff --git a/libstdc++-v3/doc/html/manual/ext_utilities.html b/libstdc++-v3/doc/html/manual/ext_utilities.html index 2b432e5c56f..cf475c6f064 100644 --- a/libstdc++-v3/doc/html/manual/ext_utilities.html +++ b/libstdc++-v3/doc/html/manual/ext_utilities.html @@ -1,9 +1,9 @@ -Chapter 34. Utilities

    Chapter 35. Utilities

    The <functional> header contains many additional functors and helper functions, extending section 20.3. They are implemented in the file stl_function.h: @@ -38,4 +38,4 @@ get_temporary_buffer(5, (int*)0);

    The specialized algorithms of section 20.4.4 are extended with uninitialized_copy_n. * -

    +

    diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html index a757f077356..90c2b048ee1 100644 --- a/libstdc++-v3/doc/html/manual/extensions.html +++ b/libstdc++-v3/doc/html/manual/extensions.html @@ -5,5 +5,5 @@
    Prev The GNU C++ Library Next

    + +
    diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html index 48a6a384825..a23ee847975 100644 --- a/libstdc++-v3/doc/html/manual/facets.html +++ b/libstdc++-v3/doc/html/manual/facets.html @@ -3,7 +3,7 @@ Chapter 15. Facets aka Categories

    Chapter 15. Facets aka Categories

    ctype

    Implementation

    Specializations

    +

     Next

    Chapter 15. Facets aka Categories

    ctype

    Implementation

    Specializations

    For the required specialization codecvt<wchar_t, char, mbstate_t> , conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the @@ -50,25 +50,25 @@ characters.

  • Rename abstract base class. See if just smash-overriding is a better approach. Clarify, add sanity to naming. -

  • Bibliography

    +

    Bibliography

    The GNU C Library - . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

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

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference diff --git a/libstdc++-v3/doc/html/manual/intro.html b/libstdc++-v3/doc/html/manual/intro.html index ed795fc6e81..58b373b1260 100644 --- a/libstdc++-v3/doc/html/manual/intro.html +++ b/libstdc++-v3/doc/html/manual/intro.html @@ -5,5 +5,5 @@

    Prev The GNU C++ Library Next

    + +
    diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html index b5a30497632..121c8be1636 100644 --- a/libstdc++-v3/doc/html/manual/io.html +++ b/libstdc++-v3/doc/html/manual/io.html @@ -5,5 +5,5 @@ Prev The GNU C++ Library Next
    diff --git a/libstdc++-v3/doc/html/manual/io_and_c.html b/libstdc++-v3/doc/html/manual/io_and_c.html index e85fe0d00d2..e5fe3c77da2 100644 --- a/libstdc++-v3/doc/html/manual/io_and_c.html +++ b/libstdc++-v3/doc/html/manual/io_and_c.html @@ -4,7 +4,7 @@ Input and Output  Next

    Chapter 28. Interacting with C

    Using FILE* and file descriptors

    - See the extensions for using + See the extensions for using FILE and file descriptors with ofstream and ifstream. diff --git a/libstdc++-v3/doc/html/manual/iterators.html b/libstdc++-v3/doc/html/manual/iterators.html index 046bf075b9b..c168b0e1787 100644 --- a/libstdc++-v3/doc/html/manual/iterators.html +++ b/libstdc++-v3/doc/html/manual/iterators.html @@ -5,5 +5,5 @@ Prev The GNU C++ Library Next


    Part VIII.  Iterators - +

    diff --git a/libstdc++-v3/doc/html/manual/locales.html b/libstdc++-v3/doc/html/manual/locales.html index 49634676312..87b7c2b7bbc 100644 --- a/libstdc++-v3/doc/html/manual/locales.html +++ b/libstdc++-v3/doc/html/manual/locales.html @@ -398,25 +398,25 @@ global locale" (emphasis Paolo), that is: What should non-required facet instantiations do? If the generic implementation is provided, then how to end-users provide specializations? -

    Bibliography

    +

    Bibliography

    The GNU C Library - . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

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

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html index 5f30a5fb542..35b18f8617f 100644 --- a/libstdc++-v3/doc/html/manual/localization.html +++ b/libstdc++-v3/doc/html/manual/localization.html @@ -5,5 +5,5 @@ Prev The GNU C++ Library Next


    diff --git a/libstdc++-v3/doc/html/manual/memory.html b/libstdc++-v3/doc/html/manual/memory.html index 25e863d9e89..035b50d5836 100644 --- a/libstdc++-v3/doc/html/manual/memory.html +++ b/libstdc++-v3/doc/html/manual/memory.html @@ -93,7 +93,7 @@ or loading and unloading shared objects in memory. As such, using caching allocators on systems that do not support abi::__cxa_atexit is not recommended. -

    Implementation

    Interface Design

    +

    Implementation

    Interface Design

    The only allocator interface that is support is the standard C++ interface. As such, all STL containers have been adjusted, and all external allocators have @@ -106,7 +106,7 @@

    The base class that allocator is derived from may not be user-configurable. -

    Selecting Default Allocation Policy

    +

    Selecting Default Allocation Policy

    It's difficult to pick an allocation strategy that will provide maximum utility, without excessively penalizing some behavior. In fact, it's difficult just deciding which typical actions to measure @@ -143,7 +143,7 @@ The current default choice for allocator is __gnu_cxx::new_allocator. -

    Disabling Memory Caching

    +

    Disabling Memory Caching

    In use, allocator may allocate and deallocate using implementation-specified strategies and heuristics. Because of this, every call to an allocator object's @@ -308,11 +308,11 @@ A high-performance allocator that uses a bit-map to keep track of the used and unused memory locations. It has its own documentation, found here. -

    Bibliography

    +

    Bibliography

    ISO/IEC 14882:1998 Programming languages - C++ . isoc++_1998 - 20.4 Memory.

    The Standard Librarian: What Are Allocators Good + 20.4 Memory.

    The Standard Librarian: What Are Allocators Good . austernm Matt Austern. @@ -320,28 +320,28 @@ . - .

    The Hoard Memory Allocator. + .

    The Hoard Memory Allocator. emeryb Emery Berger. - .

    Reconsidering Custom Memory Allocation. + .

    Reconsidering Custom Memory Allocation. bergerzorn Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA. - .

    Allocator Types. + .

    Allocator Types. kreftlanger Klaus Kreft. Angelika Langer. C/C++ Users Journal . - .

    The C++ Programming Language. + .

    The C++ Programming Language. tcpl Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. Addison Wesley - .

    Yalloc: A Recycling C++ Allocator. + .

    Bibliography

    +

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling, and 7 Locales and Internationalization - .

    + .

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

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

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman - .

    + .

    Java 2 Platform, Standard Edition, v 1.3.1 API Specification . 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/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html index e4339376002..7738f38215b 100644 --- a/libstdc++-v3/doc/html/manual/numerics.html +++ b/libstdc++-v3/doc/html/manual/numerics.html @@ -5,5 +5,5 @@ Prev The GNU C++ Library Next


    diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index cbcdebaf9b9..46af419a9ae 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.

    Intro

    The following library components in the include numeric are included in the parallel mode:

    • std::accumulate

    • std::adjacent_difference

    • std::inner_product

    • std::partial_sum

    The following library components in the include -algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    +algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    Parallelization of Bulk Operations for STL Dictionaries . Johannes Singler. Leonor Frias. Copyright © 2007 . Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) - .

    + .

    The Multi-Core Standard Template Library . Johannes Singler. Peter Sanders. Felix Putze. Copyright © 2007 . Euro-Par 2007: Parallel Processing. (LNCS 4641) diff --git a/libstdc++-v3/doc/html/manual/profile_mode.html b/libstdc++-v3/doc/html/manual/profile_mode.html new file mode 100644 index 00000000000..fca37908a35 --- /dev/null +++ b/libstdc++-v3/doc/html/manual/profile_mode.html @@ -0,0 +1,143 @@ + + +Chapter 32. Profile Mode

    Chapter 32. Profile Mode

    Intro

    + Goal: Give performance improvement advice based on + recognition of suboptimal usage patterns of the standard library. +

    + Method: Wrap the standard library code. Insert + calls to an instrumentation library to record the internal state of + various components at interesting entry/exit points to/from the standard + library. Process trace, recognize suboptimal patterns, give advice. + For details, see + paper presented at + CGO 2009. +

    + Strengths: +

    • + Unintrusive solution. The application code does not require any + modification. +

    • The advice is call context sensitive, thus capable of + identifying precisely interesting dynamic performance behavior. +

    • + The overhead model is pay-per-view. When you turn off a diagnostic class + at compile time, its overhead disappears. +

    +

    + Drawbacks: +

    • + You must recompile the application code with custom options. +

    • You must run the application on representative input. + The advice is input dependent. +

    • + The execution time will increase, in some cases by factors. +

    +

    Using the Profile Mode

    + This is the anticipated common workflow for program foo.cc: +

    +$ cat foo.cc
    +#include <vector>
    +int main() {
    +  vector<int> v;
    +  for (int k = 0; k < 1024; ++k) v.insert(v.begin(), k);
    +}
    +
    +$ g++ -D_GLIBCXX_PROFILE foo.cc
    +$ ./a.out
    +$ cat libstdcxx-profile.txt
    +vector-to-list: improvement = 5: call stack = 0x804842c ...
    +    : advice = change std::vector to std::list
    +vector-size: improvement = 3: call stack = 0x804842c ...
    +    : advice = change initial container size from 0 to 1024
    +

    +

    + Anatomy of a warning: +

    • + Warning id. This is a short descriptive string for the class + that this warning belongs to. E.g., "vector-to-list". +

    • + Estimated improvement. This is an approximation of the benefit expected + from implementing the change suggested by the warning. It is given on + a log10 scale. Negative values mean that the alternative would actually + do worse than the current choice. + In the example above, 5 comes from the fact that the overhead of + inserting at the beginning of a vector vs. a list is around 1024 * 1024 / 2, + which is around 10e5. The improvement from setting the initial size to + 1024 is in the range of 10e3, since the overhead of dynamic resizing is + linear in this case. +

    • + Call stack. Currently, the addresses are printed without + symbol name or code location attribution. + Users are expected to postprocess the output using, for instance, addr2line. +

    • + The warning message. For some warnings, this is static text, e.g., + "change vector to list". For other warnings, such as the one above, + the message contains numeric advice, e.g., the suggested initial size + of the hashtable. +

    +

    Two files are generated. libstdcxx-profile.txt + contains human readable advice. libstdcxx-profile.raw + contains implementation specific data about each diagnostic. + Their format is not documented. They are sufficient to generate + all the advice given in libstdcxx-profile.txt. The advantage + of keeping this raw format is that traces from multiple executions can + be aggregated simply by concatenating the raw traces. We intend to + offer an external utility program that can issue advice from a trace. +

    Advice is given regardless whether the transformation is valid. + For instance, we advise changing a map to an unordered_map even if the + application semantics require that data be ordered. + We believe such warnings can help users understand the performance + behavior of their application better, which can lead to changes + at a higher abstraction level. +

    Tuning the Profile Mode

    Compile time switches and environment variables (see also file + profiler.h). Unless specified otherwise, they can be set at compile time + using -D_<name> or by setting variable <name> + in the environment where the program is run, before starting execution. +

    • + [NO]_GLIBCXX_PROFILE_<diagnostic>: + enable/disable specific diagnostics. + See section Diagnostics for possible values. + (Environment variables not supported.) +

    • + GLIBCXX_PROFILE_TRACE_PATH_ROOT: set an alternative root + path for the output files. +

    • GLIBCXX_PROFILE_MAX_WARN_COUNT: set it to the maximum + number of warnings desired. The default value is 10.

    • + GLIBCXX_PROFILE_MAX_STACK_DEPTH: if set to 0, + the advice will + be collected and reported for the program as a whole, and not for each + call context. + This could also be used in continuous regression tests, where you + just need to know whether there is a regression or not. + The default value is 32. +

    • + GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC: + set a limit on how much memory to use for the accounting tables for each + diagnostic type. When this limit is reached, new events are ignored + until the memory usage decreases under the limit. Generally, this means + that newly created containers will not be instrumented until some + live containers are deleted. The default is 128 MB. +

    • + GLIBCXX_PROFILE_NOTHREADS: + Make the library not use threads. Otherwise, pthread mutexes are used + to protect access to internal data structures. This should be useful + only if the program is single threaded and you want to avoid the overhead + of aquiring/releasing locks unnecessarily. + (Environment variable not supported.) +

    • + HAVE_EXECINFO_H: + This name should be defined at library configuration time. + If your library was configured without execinfo.h, but + you have it in your include path, you can define it explicitly. Without + it, advice is collected for the program as a whole, and not for each + call context. + (Environment variable not supported.) +

    +

    Bibliography

    + Perflint: A Context Sensitive Performance Advisor for C++ Programs + . Lixia Liu. Silvius Rus. Copyright © 2009 . + Proceedings of the 2009 International Symposium on Code Generation + and Optimization + .

    diff --git a/libstdc++-v3/doc/html/manual/shared_ptr.html b/libstdc++-v3/doc/html/manual/shared_ptr.html index 2561558047b..ea7e3208f9d 100644 --- a/libstdc++-v3/doc/html/manual/shared_ptr.html +++ b/libstdc++-v3/doc/html/manual/shared_ptr.html @@ -29,7 +29,7 @@ drops to zero. Derived classes override those functions to destroy resources in a context where the correct dynamic type is known. This is an application of the technique known as type erasure. -

    Implementation

    Class Hierarchy

    +

    Implementation

    Class Hierarchy

    A shared_ptr<T> contains a pointer of type T* and an object of type __shared_count. The shared_count contains a @@ -71,7 +71,7 @@ be forwarded to Tp's constructor. Unlike the other _Sp_counted_* classes, this one is parameterized on the type of object, not the type of pointer; this is purely a convenience that simplifies the implementation slightly. -

    Thread Safety

    +

    Thread Safety

    The interface of tr1::shared_ptr was extended for C++0x with support for rvalue-references and the other features from N2351. As with other libstdc++ headers shared by TR1 and C++0x, @@ -129,7 +129,7 @@ compiler, standard library, platform etc. For the version of shared_ptr in libstdc++ the compiler and library are fixed, which makes things much simpler: we have an atomic CAS or we don't, see Lock Policy below for details. -

    Selecting Lock Policy

    +

    Selecting Lock Policy

    There is a single _Sp_counted_base class, which is a template parameterized on the enum @@ -170,7 +170,7 @@ used when libstdc++ is built without --enable-threadsext/atomicity.h, which detect if the program is multi-threaded. If only one thread of execution exists in the program then less expensive non-atomic operations are used. -

    Dual C++0x and TR1 Implementation

    +

    Dual C++0x and TR1 Implementation

    The classes derived from _Sp_counted_base (see Class Hierarchy below) and __shared_count are implemented separately for C++0x and TR1, in bits/boost_sp_shared_count.h and @@ -181,7 +181,7 @@ 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 duplicate additional classes and only make changes to the C++0x versions. -

    Related functions and classes

    dynamic_pointer_cast, static_pointer_cast, +

    Related functions and classes

    dynamic_pointer_cast, static_pointer_cast, const_pointer_cast

    As noted in N2351, these functions can be implemented non-intrusively using the alias constructor. However the aliasing constructor is only available @@ -214,10 +214,10 @@ is called. Users should not try to use this. As well as the extra constructors, this implementation also needs some members of _Sp_counted_deleter to be protected where they could otherwise be private. -

    Use

    Examples

    +

    Use

    Examples

    Examples of use can be found in the testsuite, under testsuite/tr1/2_general_utilities/shared_ptr. -

    Unresolved Issues

    +

    Unresolved Issues

    The resolution to C++ Standard Library issue 674, "shared_ptr interface changes for consistency with N1856" will need to be implemented after it is accepted into the working @@ -265,7 +265,7 @@ be private. code to work with, Peter Dimov in particular for his help and invaluable advice on thread safety. Phillip Jordan and Paolo Carlini for the lock policy implementation. -

    Bibliography

    [ +

    Bibliography

    [ n2351 ] Improving shared_ptr for C++0x, Revision 2 @@ -274,7 +274,7 @@ be private. . - .

    [ + .

    [ n2456 ] C++ Standard Library Active Issues List (Revision R52) @@ -283,7 +283,7 @@ be private. . - .

    [ + .

    [ n2461 ] Working Draft, Standard for Programming Language C++ @@ -292,7 +292,7 @@ be private. . - .

    [ + .

    [ boostshared_ptr ] Boost C++ Libraries documentation - shared_ptr class template diff --git a/libstdc++-v3/doc/html/manual/spine.html b/libstdc++-v3/doc/html/manual/spine.html index 2b326459013..beca228c986 100644 --- a/libstdc++-v3/doc/html/manual/spine.html +++ b/libstdc++-v3/doc/html/manual/spine.html @@ -2,12 +2,12 @@ The GNU C++ Library

    The GNU C++ Library


    Table of Contents

    I. Introduction -
    1. Status
    Implementation Status
    C++ 1998/2003
    C++ TR1
    C++ 200x
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    Test
    Organization
    Running the Testsuite
    Writing a new test case
    Test Harness and Utilities
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exceptions
    Propagating Exceptions aka Exception Neutrality
    Exception Safety
    Support for -fno-exceptions
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    II. +
    1. Status
    Implementation Status
    C++ 1998/2003
    C++ TR1
    C++ 200x
    C++ TR 24733
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    Test
    Organization
    Running the Testsuite
    Writing a new test case
    Test Harness and Utilities
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exceptions
    Propagating Exceptions aka Exception Neutrality
    Exception Safety
    Support for -fno-exceptions
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    Profile-based Performance Analysis
    II. Support
    4. Types
    Fundamental Types
    Numeric Properties
    NULL
    5. Dynamic Memory
    6. Termination
    Termination Handlers
    Verbose Terminate Handler
    III. @@ -40,7 +40,7 @@
    24. Iostream Objects
    25. Stream Buffers
    Derived streambuf Classes
    Buffering
    26. Memory Based Streams
    Compatibility With strstream
    27. File Based Streams
    Copying a File
    Binary Input and Output
    28. Interacting with C
    Using FILE* and file descriptors
    Performance
    XII. Extensions -
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Prerequisite Compiler Flags
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    33. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    34. Utilities
    35. Algorithms
    36. Numerics
    37. Iterators
    38. Input and Output
    Derived filebufs
    39. Demangling
    40. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. +
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Prerequisite Compiler Flags
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Profile Mode
    Intro
    Using the Profile Mode
    Tuning the Profile Mode
    Design
    Wrapper Model
    Instrumentation
    Run Time Behavior
    Analysis and Diagnostics
    Cost Model
    Reports
    Testing
    Extensions for Custom Containers
    Empirical Cost Model
    Implementation Issues
    Stack Traces
    Symbolization of Instruction Addresses
    Concurrency
    Using the Standard Library in the Instrumentation Implementation
    Malloc Hooks
    Construction and Destruction of Global Objects
    Developer Information
    Big Picture
    How To Add A Diagnostic
    Diagnostics
    Diagnostic Template
    Containers
    Algorithms
    Data Locality
    Multithreaded Data Access
    Statistics
    Bibliography
    33. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    34. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    35. Utilities
    36. Algorithms
    37. Numerics
    38. Iterators
    39. Input and Output
    Derived filebufs
    40. Demangling
    41. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. Contributing
    Contributor Checklist
    Reading
    Assignment
    Getting Sources
    Submitting Patches
    Directory Layout and Source Conventions
    Coding Style
    Bad Identifiers
    By Example
    Documentation Style
    Doxygen
    Docbook
    Design Notes
    B. @@ -51,7 +51,7 @@
    D. GNU General Public License version 3 -
    E. GNU Free Documentation License
    Index

    Chapter 1. Status

    Implementation Status

    C++ 1998/2003

    Implementation Status

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

    This page describes the C++0x 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 @@ -90,7 +90,7 @@ particular release. class. But they are the mangled names; you will need to call c++filt and pass the names as command-line parameters to demangle them, or call a - runtime demangler function. + runtime demangler function. (The classes in <stdexcept> have constructors which require an argument to use later for what() calls, so the problem of what()'s value does not arise in most @@ -153,7 +153,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.2. 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.2. 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. @@ -171,7 +171,7 @@ presence of the required flag.

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

    Table 1.3. C++ 200x Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.3. C++ 200x Implementation Status

    SectionDescriptionStatusComments
    18 Language support @@ -232,7 +232,35 @@ particular release. Appendix D Compatibility features -
    D.1Increment operator with bool operand  
    D.2static keyword  
    D.3Access declarations  
    D.4Implicit conversion from const strings  
    D.5C standard library headers  
    D.6Old iostreams members  
    D.7char* streams  
    D.8Binders  
    D.9auto_ptr  
    D.10Iterator primitives  


    C++ TR 24733

    +This table is based on the table of contents of +ISO/IEC TR 24733 Date: 2009-08-28 +Extension for the programming language C++ to support +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

    SectionDescriptionStatusComments
    + 0 + + Introduction +
    + 1 + + Normative references +
    + 2 + + Conventions +
    + 3 + + Decimal floating-point types +
    3.1Characteristics of decimal floating-point types  
    3.2Decimal Types  
    3.2.1Class decimal synopsisPartialMissing declarations for formatted input/output; non-conforming extension for functions converting to integral type
    3.2.2Class decimal32PartialMissing 3.2.2.5 conversion to integral type; conforming extension for conversion from scalar decimal floating-point
    3.2.3Class decimal64PartialMissing 3.2.3.5 conversion to integral type; conforming extension for conversion from scalar decimal floating-point
    3.2.4Class decimal128PartialMissing 3.2.4.5 conversion to integral type; conforming extension for conversion from scalar decimal floating-point
    3.2.5Initialization from coefficient and exponentY 
    3.2.6Conversion to generic floating-point typeY 
    3.2.7Unary arithmetic operatorsY 
    3.2.8Binary arithmetic operatorsY 
    3.2.9Comparison operatorsY 
    3.2.10Formatted inputN 
    3.2.11Formatted outputN 
    3.3Additions to header limitsN 
    3.4Headers cfloat and float.h  
    3.4.2Additions to header cfloat synopsisY 
    3.4.3Additions to header float.h synopsisN 
    3.4.4Maximum finite valueY 
    3.4.5EpsilonY 
    3.4.6Minimum positive normal valueY 
    3.4.7Minimum positive subnormal valueY 
    3.4.8Evaluation formatY 
    3.5Additions to cfenv and fenv.hOutside the scope of GCC 
    3.6Additions to cmath and math.hOutside the scope of GCC 
    3.7Additions to cstdio and stdio.hOutside the scope of GCC 
    3.8Additions to cstdlib and stdlib.hOutside the scope of GCC 
    3.9Additions to cwchar and wchar.hOutside the scope of GCC 
    3.10FacetsN 
    3.11Type traitsN 
    3.12Hash functionsN 
    + 4 + + Notes on C compatibility +

    diff --git a/libstdc++-v3/doc/html/manual/strings.html b/libstdc++-v3/doc/html/manual/strings.html index c2e94a8bfd3..82f3ad7367e 100644 --- a/libstdc++-v3/doc/html/manual/strings.html +++ b/libstdc++-v3/doc/html/manual/strings.html @@ -5,5 +5,5 @@
    Prev The GNU C++ Library Next

    diff --git a/libstdc++-v3/doc/html/manual/support.html b/libstdc++-v3/doc/html/manual/support.html index a539e63b3bf..48d38aa8df5 100644 --- a/libstdc++-v3/doc/html/manual/support.html +++ b/libstdc++-v3/doc/html/manual/support.html @@ -5,5 +5,5 @@
    Prev The GNU C++ Library Next

    diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html index 0a502094f7f..b7bf46a67d7 100644 --- a/libstdc++-v3/doc/html/manual/using.html +++ b/libstdc++-v3/doc/html/manual/using.html @@ -3,7 +3,7 @@ Chapter 3. Using
     Next

    Chapter 3. Using

    Linking Library Binary Files

    If you only built a static library (libstdc++.a), or if you specified static linking, you don't have to worry about this. But if you built a shared library (libstdc++.so) and linked diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html index a7b21388bd2..62bc8f9c665 100644 --- a/libstdc++-v3/doc/html/manual/using_headers.html +++ b/libstdc++-v3/doc/html/manual/using_headers.html @@ -20,16 +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. -

    Table 3.1. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

    Table 3.2. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

    +

    Table 3.1. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

    Table 3.2. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

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

    Table 3.3. C++ 200x Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalinitalizer_listiomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorymutexnew
    numericostreamqueuerandomratio
    regexsetsstreamstackstdexcept
    streambufstringsystem_errorthreadtuple
    type_traitstypeinfounordered_mapunordered_setutility
    valarrayvector   

    Table 3.4. C++ 200x Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdatomic
    cstdboolcstddefcstdintcstdlibcstdio
    cstringctgmathctimecucharcwchar
    cwctypestdatomic.h   

    +

    Table 3.3. C++ 200x Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.4. C++ 200x Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdatomic
    cstdboolcstddefcstdintcstdlibcstdio
    cstringctgmathctimecucharcwchar
    cwctypestdatomic.h   

    In addition, TR1 includes as: -

    Table 3.5. C++ TR1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.6. C++ TR1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    +

    Table 3.5. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.6. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

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

    Table 3.7. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

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

    Table 3.7. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    +

    Table 3.8. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    And a large variety of extensions. -

    Table 3.8. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h    

    Table 3.9. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.10. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules. +

    Table 3.9. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h    

    Table 3.10. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.11. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.12. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    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

    diff --git a/libstdc++-v3/doc/html/manual/utilities.html b/libstdc++-v3/doc/html/manual/utilities.html
    index ca5573140d2..3da95195573 100644
    --- a/libstdc++-v3/doc/html/manual/utilities.html
    +++ b/libstdc++-v3/doc/html/manual/utilities.html
    @@ -5,5 +5,5 @@
       
     
    Prev The GNU C++ Library Next

    diff --git a/libstdc++-v3/doc/html/spine.html b/libstdc++-v3/doc/html/spine.html index 6df1f0173bc..8fa09254c5c 100644 --- a/libstdc++-v3/doc/html/spine.html +++ b/libstdc++-v3/doc/html/spine.html @@ -5,7 +5,7 @@


    Table of Contents

    The GNU C++ Library
    I. Introduction -
    1. Status
    Implementation Status
    C++ 1998/2003
    C++ TR1
    C++ 200x
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    Test
    Organization
    Running the Testsuite
    Writing a new test case
    Test Harness and Utilities
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exceptions
    Propagating Exceptions aka Exception Neutrality
    Exception Safety
    Support for -fno-exceptions
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    II. +
    1. Status
    Implementation Status
    C++ 1998/2003
    C++ TR1
    C++ 200x
    C++ TR 24733
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    Test
    Organization
    Running the Testsuite
    Writing a new test case
    Test Harness and Utilities
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exceptions
    Propagating Exceptions aka Exception Neutrality
    Exception Safety
    Support for -fno-exceptions
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    Profile-based Performance Analysis
    II. Support
    4. Types
    Fundamental Types
    Numeric Properties
    NULL
    5. Dynamic Memory
    6. Termination
    Termination Handlers
    Verbose Terminate Handler
    III. @@ -38,7 +38,7 @@
    24. Iostream Objects
    25. Stream Buffers
    Derived streambuf Classes
    Buffering
    26. Memory Based Streams
    Compatibility With strstream
    27. File Based Streams
    Copying a File
    Binary Input and Output
    28. Interacting with C
    Using FILE* and file descriptors
    Performance
    XII. Extensions -
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Prerequisite Compiler Flags
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    33. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    34. Utilities
    35. Algorithms
    36. Numerics
    37. Iterators
    38. Input and Output
    Derived filebufs
    39. Demangling
    40. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. +
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Prerequisite Compiler Flags
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Profile Mode
    Intro
    Using the Profile Mode
    Tuning the Profile Mode
    Design
    Wrapper Model
    Instrumentation
    Run Time Behavior
    Analysis and Diagnostics
    Cost Model
    Reports
    Testing
    Extensions for Custom Containers
    Empirical Cost Model
    Implementation Issues
    Stack Traces
    Symbolization of Instruction Addresses
    Concurrency
    Using the Standard Library in the Instrumentation Implementation
    Malloc Hooks
    Construction and Destruction of Global Objects
    Developer Information
    Big Picture
    How To Add A Diagnostic
    Diagnostics
    Diagnostic Template
    Containers
    Algorithms
    Data Locality
    Multithreaded Data Access
    Statistics
    Bibliography
    33. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    34. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    35. Utilities
    36. Algorithms
    37. Numerics
    38. Iterators
    39. Input and Output
    Derived filebufs
    40. Demangling
    41. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. Contributing
    Contributor Checklist
    Reading
    Assignment
    Getting Sources
    Submitting Patches
    Directory Layout and Source Conventions
    Coding Style
    Bad Identifiers
    By Example
    Documentation Style
    Doxygen
    Docbook
    Design Notes
    B. -- 2.30.2