918 Commits

Author SHA1 Message Date
Jakub Jelinek
254a858ae7 Update copyright years. 2026-01-02 09:56:11 +01:00
Tomasz Kamiński
6a8b3a6308 libstdc++/doc: Document generate_canonical and variant compat macros.
The _GLIBCXX_USE_OLD_GENERATE_CANONICAL was introduced by
r16-6177-g866bc8a9214b1d that implemented P0952R2 [1] resolution
for LWG2524 as DR against C++20.

The _GLIBCXX_USE_VARIANT_CXX17_OLD_ABI was introduced by
r16-6301-gb3c167b61fd75f that resovled PR112591.

[1] https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p0952r2.html

libstdc++-v3/ChangeLog:

	* doc/html/manual/using_macros.html: Regenerate.
	* doc/xml/manual/using.xml: Add entries for
	_GLIBCXX_USE_OLD_GENERATE_CANONICAL and
	_GLIBCXX_USE_VARIANT_CXX17_OLD_ABI.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-12-22 19:34:25 +01:00
Yuao Ma
fe3c8455d0 libstdc++: fix dead links in doc
libstdc++-v3/ChangeLog:

	* doc/html/manual/using_exceptions.html: Replace dead link.
	* doc/xml/manual/using_exceptions.xml: Likewise.
2025-11-21 23:37:25 +08:00
Jonathan Wakely
01b8c6ffbd libstdc++: Update some old docs about predefined feature macros
libstdc++-v3/ChangeLog:

	* doc/xml/faq.xml: Refresh information on _GNU_SOURCE and
	_XOPEN_SOURCE being predefined.
	* doc/xml/manual/internals.xml: Remove outdated paragraph about
	_POSIX_SOURCE in libstdc++ source files.
	* doc/html/*: Regenerate.
2025-11-21 15:30:49 +00:00
Jonathan Wakely
44f3027e3b libstdc++: Update GCC 16.1 library versions in docs
libstdc++-v3/ChangeLog:

	* doc/xml/manual/abi.xml: Add versions for GCC 16.
	* doc/html/manual/abi.html: Regenerate.
2025-11-19 21:55:06 +00:00
Jonathan Wakely
cd54244e09 libstdc++: Update GCC 15.1 library versions in docs [PR122743]
libstdc++-v3/ChangeLog:

	PR libstdc++/122743
	* doc/xml/manual/abi.xml: Add versions for GCC 15.
	* doc/html/manual/abi.html: Regenerate.
2025-11-19 21:55:06 +00:00
Jonathan Wakely
d0e0f6beb1 libstdc++: Remove vertical whitespace from code listings in manual
This removes unnecessary whitespace following <pre> blocks in the HTML
output.

libstdc++-v3/ChangeLog:

	* doc/xml/faq.xml: Remove unwanted whitespace inside
	programlisting elements.
	* doc/xml/manual/allocator.xml: Likewise.
	* doc/xml/manual/auto_ptr.xml: Likewise.
	* doc/xml/manual/backwards_compatibility.xml: Likewise.
	* doc/xml/manual/build_hacking.xml: Likewise.
	* doc/xml/manual/containers.xml: Likewise.
	* doc/xml/manual/diagnostics.xml: Likewise.
	* doc/xml/manual/extensions.xml: Likewise.
	* doc/xml/manual/intro.xml: Likewise.
	* doc/xml/manual/io.xml: Likewise.
	* doc/xml/manual/iterators.xml: Likewise.
	* doc/xml/manual/numerics.xml: Likewise.
	* doc/xml/manual/policy_data_structures.xml: Likewise.
	* doc/xml/manual/strings.xml: Likewise.
	* doc/xml/manual/support.xml: Likewise.
	* doc/xml/manual/test.xml: Likewise.
	* doc/xml/manual/using.xml: Likewise.
	* doc/xml/manual/utilities.xml: Likewise.
	* doc/html/*: Regenerate.
2025-11-19 21:54:12 +00:00
Gerald Pfeifer
c1a8b4fa50 libstdc++: Update Autoconf manual link
libstdc++-v3:
	* doc/xml/manual/build_hacking.xml: Update Autoconf manual link.
	* doc/html/manual/appendix_porting.html: Regenerate.
2025-10-11 12:18:56 +02:00
Jonathan Wakely
3f70e62553 libstdc++: Update dead links to PSTL upstream in docs
The pstl code has been removed from the llvm repo so point to the Intel
upstream project where it really originates from.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/status_cxx2017.xml: Replace broken link to PSTL
	upstream.
	* doc/xml/manual/status_cxx2020.xml: Likewise.
	* doc/html/manual/status.html: Regenerate.

Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-10-08 17:33:21 +01:00
Sam James
ac273977ad *: regenerate autotools
libatomic/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

libcc1/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.

libffi/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* include/Makefile.in: Regenerate.
	* man/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

libgcobol/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

libgfortran/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

libgm2/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* libm2cor/Makefile.in: Regenerate.
	* libm2iso/Makefile.in: Regenerate.
	* libm2log/Makefile.in: Regenerate.
	* libm2min/Makefile.in: Regenerate.
	* libm2pim/Makefile.in: Regenerate.

libgomp/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

libgrust/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* libformat_parser/Makefile.in: Regenerate.
	* libproc_macro_internal/Makefile.in: Regenerate.

libitm/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

libobjc/ChangeLog:

	* aclocal.m4: Regenerate.
	* configure: Regenerate.

libphobos/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* libdruntime/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

libquadmath/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

libsanitizer/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* asan/Makefile.in: Regenerate.
	* configure: Regenerate.
	* hwasan/Makefile.in: Regenerate.
	* interception/Makefile.in: Regenerate.
	* libbacktrace/Makefile.in: Regenerate.
	* lsan/Makefile.in: Regenerate.
	* sanitizer_common/Makefile.in: Regenerate.
	* tsan/Makefile.in: Regenerate.
	* ubsan/Makefile.in: Regenerate.

libssp/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

libstdc++-v3/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* doc/Makefile.in: Regenerate.
	* include/Makefile.in: Regenerate.
	* libsupc++/Makefile.in: Regenerate.
	* po/Makefile.in: Regenerate.
	* python/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++17/Makefile.in: Regenerate.
	* src/c++20/Makefile.in: Regenerate.
	* src/c++23/Makefile.in: Regenerate.
	* src/c++26/Makefile.in: Regenerate.
	* src/c++98/Makefile.in: Regenerate.
	* src/experimental/Makefile.in: Regenerate.
	* src/filesystem/Makefile.in: Regenerate.
	* src/libbacktrace/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

libvtv/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

lto-plugin/ChangeLog:

	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
2025-10-05 17:14:49 +01:00
Tomasz Kamiński
deb7e9312a libstdc++: Add C++2020 Implementation status table.
This is derived from Table of Content of the ISO/IEC 14882:2020.
Section are included up to depth limit of 3 in majority of the cases.

libstdc++-v3/ChangeLog:

	* doc/html/manual/index.html: Regenerated.
	* doc/html/manual/status.html: Regenerated.
	* doc/xml/manual/status_cxx2020.xml: Added status table.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
2025-10-03 11:59:04 +02:00
Tomasz Kamiński
2ec29759ba libstdc++: Document remaining C++20 implementation-defined behavior.
I have double checked that implementation-defined behavior in the [compliance]
(whether the implementation is freestanding) and [stringbuf.const] (initialization
of sequence pointers) are indeed null, and there are no corresponding entires in
earlier standards.

libstdc++-v3/ChangeLog:

	* doc/html/manual/status.html: Regenerate.
	* doc/xml/manual/status_cxx2020.xml: Add more entires.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-09-10 09:43:43 +02:00
Tomasz Kamiński
88d4738ddc libstdc++: Document C++20 atomic_ref implementation-defined behavior.
Also introduce Implementation Specific Behavior section for C++20.

libstdc++-v3/ChangeLog:

	* doc/html/index.html: Regenerated.
	* doc/html/manual/index.html: Regenerated.
	* doc/html/manual/intro.html: Regenerated.
	* doc/html/manual/status.html: Regenatered.
	* doc/xml/manual/status_cxx2020.xml: Add iso.2020.specific
	section with atomic_ref documentation.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-09-10 09:15:16 +02:00
Arsen Arsenović
c7e9d256fb libstdc++: Replace "Tunables" link with one that does not have an anchor
This works around a dblatex bug, where dblatex emits invalid TeX, by
placing a raw "#" in a \href.

Fixes: f6ff531d90 ("libstdc++: Update link to "Tunables" in Glibc manual")

libstdc++-v3/ChangeLog:

	* doc/xml/manual/using_exceptions.xml: Replace "Tunables" link
	with one that does not have an anchor.
	* doc/html/manual/using_exceptions.html: Regenerate.
2025-09-09 13:04:57 +02:00
Jonathan Wakely
d199a9c7c5 libstdc++: Fix docs for --enable-vtable-verify [PR120698]
libstdc++-v3/ChangeLog:

	PR libstdc++/120698
	* doc/xml/manual/configure.xml: Do not claim that vtv is enabled
	by default.
	* doc/html/manual/configure.html: Regenerate.
2025-09-08 21:54:32 +01:00
Gerald Pfeifer
f6ff531d90 libstdc++: Update link to "Tunables" in Glibc manual
libstdc++-v3:
	* doc/xml/manual/using_exceptions.xml: Update link to "Tunables"
	section in the Glibc manual.
	* doc/html/manual/using_exceptions.html: Regenerate.
2025-09-08 11:07:25 +02:00
Tomasz Kamiński
39d7c4d42a libstdc++: Document remaining C++17 implementation-defined behavior.
This also covers bad_function_call::what from C++11.

libstdc++-v3/ChangeLog:

	* doc/html/manual/status.html: Regenerate.
	* doc/xml/manual/status_cxx2011.xml: Add entry for bad_function_call.
	* doc/xml/manual/status_cxx2017.xml: Add entries for bad_any_cast
	and nullptr_t output. Update entry for sf.cmath. Fix stable name for
	mem.res.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-09-05 16:54:10 +02:00
Tomasz Kamiński
d6c370b8e9 libstdc++: Document missing implementation defined behavior for std::filesystem.
libstdc++-v3/ChangeLog:

	* doc/html/manual/status.html: Regenerate the file.
	* doc/xml/manual/status_cxx2017.xml: Addd more entires.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-09-05 14:50:42 +02:00
Tomasz Kamiński
b26033d579 libstdc++: Add stable names to C++98 implementation-defined docs.
Stable names are based on C++03 standard document, and some of then were
changed since then.

libstdc++-v3/ChangeLog:

	* doc/html/manual/status.html: Regenerated the file.
	* doc/xml/manual/status_cxx1998.xml: Add stable name to
	each entry.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-09-04 09:57:05 +02:00
Gerald Pfeifer
6094b4de7b libstdc++: Update link to Boost "Exception-Safety"
libstdc++-v3:
	* doc/xml/manual/using_exceptions.xml: Update link to
	Boost's "Exception-Safety"
	* doc/html/manual/using_exceptions.html: Rebuild.
2025-08-31 12:13:45 +02:00
Gerald Pfeifer
b163ea73dc libstdc++: Switch gcc.gnu.org installation docs to https
libstdc++-v3:
	* doc/xml/manual/build_hacking.xml: Switch gcc.gnu.org installation
	docs to https.
	* doc/html/manual/appendix_porting.html: Regenerate.
2025-08-07 17:36:25 +02:00
Jonathan Wakely
a3a83cea00 libstdc++: Remove Paolo from list of people to contact about contributing
Paolo has not been active for some time.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/appendix_contributing.xml: Remove Paolo from
	list of maintainers to contact about contributing.
	* doc/html/manual/appendix_contributing.html: Regenerate.
2025-07-18 17:46:28 +01:00
Jonathan Wakely
717e20dddd libstdc++: Document new generated header
libstdc++-v3/ChangeLog:

	* doc/xml/manual/build_hacking.xml: Document that
	windows_zones-map.h is a generated file.
	* doc/html/manual/appendix_porting.html: Regenerate.
2025-07-18 17:46:28 +01:00
Jonathan Wakely
9e33097738 libstdc++: Add std::inplace_vector for C++26 (P0843R14) [PR119137]
Implement std::inplace_vector as specified in P0843R14, without follow
up papers, in particular P3074R7 (trivial unions). In consequence
inplace_vector<T, N> can be used inside constant evaluations only
if T is trivial or N is equal to zero.

We provide a separate specialization for inplace_vector<T, 0> to meet
the requirements of N5008 [inplace.vector.overview] p5. In particular
objects of such types needs to be empty.

To allow constexpr variable of inplace_vector v, where v.size() < v.capacity(),
we need to guaranteed that all elements of the storage array are initialized,
even ones in range [v.data() + v.size(), v.data() + v.capacity()). This is
perfoirmed by _M_init function, that is called by each constructor. By storing
the array in anonymous union, we can perform this initialization in constant
evaluation, avoiding the impact on runtime path.

The size() function conveys the information that _M_size <= _Nm to compiler,
by calling __builtin_unreachable(). In particular this allows us to eliminate
FP warnings by using _Nm - size() instead of _Nm - _M_size, when computing
available elements.

The included test cover almost all code paths at runtime, however some
compile time evaluation test are not yet implemented:
* operations on range, they depend on making testsuite_iterators constexpr
* negative test for invoking operations with preconditions at compile time,
  especially for zero size specialization.

	PR libstdc++/119137

libstdc++-v3/ChangeLog:

	* doc/doxygen/user.cfg.in (INPUT): Add new header.
	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/bits/stl_iterator_base_types.h (__any_input_iterator):
	Define.
	* include/bits/version.def (inplace_vector): Define.
	* include/bits/version.h: Regenerate.
	* include/precompiled/stdc++.h: Include new header.
	* src/c++23/std.cc.in: Export contents if new header.
	* include/std/inplace_vector: New file.
	* testsuite/23_containers/inplace_vector/access/capacity.cc: New file.
	* testsuite/23_containers/inplace_vector/access/elem.cc: New file.
	* testsuite/23_containers/inplace_vector/access/elem_neg.cc: New file.
	* testsuite/23_containers/inplace_vector/cons/1.cc: New file.
	* testsuite/23_containers/inplace_vector/cons/from_range.cc: New file.
	* testsuite/23_containers/inplace_vector/cons/throws.cc: New file.
	* testsuite/23_containers/inplace_vector/copy.cc: New file.
	* testsuite/23_containers/inplace_vector/erasure.cc: New file.
	* testsuite/23_containers/inplace_vector/modifiers/assign.cc: New file.
	* testsuite/23_containers/inplace_vector/modifiers/erase.cc: New file.
	* testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc:
	New file.
	* testsuite/23_containers/inplace_vector/modifiers/single_insert.cc:
	New file.
	* testsuite/23_containers/inplace_vector/move.cc: New file.
	* testsuite/23_containers/inplace_vector/relops.cc: New file.
	* testsuite/23_containers/inplace_vector/version.cc: New file.
	* testsuite/util/testsuite_iterators.h (input_iterator_wrapper::base):
	Define.

Reviewed-by: Patrick Palka <ppalka@redhat.com>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Co-authored-by: Tomasz Kamiński <tkaminsk@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-07-18 09:49:34 +02:00
Jonathan Wakely
2954038c82 libstdc++: Document change in __int128 traits [PRPR96710]
libstdc++-v3/ChangeLog:

	PR libstdc++/96710
	* doc/xml/manual/evolution.xml: Document change or __int128.
	* doc/html/manual/api.html: Regenerate.
2025-07-17 15:40:57 +01:00
Jonathan Wakely
905593af06 libstdc++: Improve documentation on copyright notices in new tests
Clarify that FSF copyright notices in tests are incorrect for
contributions under DCO terms. Clarify the sentence about copying
existing tests to clarify that it is only referring to copying the code
in the test file, rather than just copying an existing file as a
template for a new test.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/test.xml: Improve discussion of copyright
	notices in new test cases.
	* doc/html/manual/test.html: Regenerate.
2025-06-12 09:44:46 +01:00
Jonathan Wakely
72a98dc6e5 libstdc++: Add _GLIBCXX_USE_BUILTIN_TRAIT to Doxygen config
This ensures that Doxygen sees the simpler definitions of type traits,
which are implemented using the built-ins.

Also add _GLIBCXX_HAVE_ICONV (which is less important) and fix some
typos for _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE and
_GLIBCXX_END_INLINE_ABI_NAMESPACE.

libstdc++-v3/ChangeLog:

	* doc/doxygen/user.cfg.in (PREDEFINED): Remove -D prefixes from
	some macros. Define _GLIBCXX_USE_BUILTIN_TRAIT and
	_GLIBCXX_HAVE_ICONV macros.
2025-06-11 22:39:00 +01:00
Jonathan Wakely
db0cee881f libstdc++: Remove unused 'test' variables in test cases
These variables could be used by custom definitions of the VERIFY macro
prior to GCC 7.1 but serve no purpose now. They can be removed, along
with the documentation with the historical note.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/test.xml: Remove note about unused 'test'
	variables for old definition of VERIFY.
	* doc/html/manual/test.html: Regenerate.
	* testsuite/experimental/net/buffer/arithmetic.cc: Remove unused
	variable.
	* testsuite/experimental/net/buffer/const.cc: Likewise.
	* testsuite/experimental/net/buffer/mutable.cc: Likewise.
	* testsuite/experimental/net/buffer/size.cc: Likewise.
	* testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
	* testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
	* testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
	* testsuite/ext/special_functions/airy_ai/check_value.cc:
	Likewise.
	* testsuite/ext/special_functions/airy_bi/check_value.cc:
	Likewise.
	* testsuite/ext/special_functions/conf_hyperg/check_value.cc:
	Likewise.
	* testsuite/ext/special_functions/hyperg/check_value.cc:
	Likewise.
	* testsuite/special_functions/01_assoc_laguerre/check_value.cc:
	Likewise.
	* testsuite/special_functions/02_assoc_legendre/check_value.cc:
	Likewise.
	* testsuite/special_functions/02_assoc_legendre/pr86655.cc:
	Likewise.
	* testsuite/special_functions/03_beta/check_value.cc: Likewise.
	* testsuite/special_functions/04_comp_ellint_1/check_value.cc:
	Likewise.
	* testsuite/special_functions/05_comp_ellint_2/check_value.cc:
	Likewise.
	* testsuite/special_functions/06_comp_ellint_3/check_value.cc:
	Likewise.
	* testsuite/special_functions/07_cyl_bessel_i/check_value.cc:
	Likewise.
	* testsuite/special_functions/08_cyl_bessel_j/check_value.cc:
	Likewise.
	* testsuite/special_functions/09_cyl_bessel_k/check_value.cc:
	Likewise.
	* testsuite/special_functions/10_cyl_neumann/check_value.cc:
	Likewise.
	* testsuite/special_functions/11_ellint_1/check_value.cc:
	Likewise.
	* testsuite/special_functions/12_ellint_2/check_value.cc:
	Likewise.
	* testsuite/special_functions/13_ellint_3/check_value.cc:
	Likewise.
	* testsuite/special_functions/14_expint/check_value.cc:
	Likewise.
	* testsuite/special_functions/15_hermite/check_value.cc:
	Likewise.
	* testsuite/special_functions/16_laguerre/check_value.cc:
	Likewise.
	* testsuite/special_functions/17_legendre/check_value.cc:
	Likewise.
	* testsuite/special_functions/18_riemann_zeta/check_value.cc:
	Likewise.
	* testsuite/special_functions/19_sph_bessel/check_value.cc:
	Likewise.
	* testsuite/special_functions/20_sph_legendre/check_value.cc:
	Likewise.
	* testsuite/special_functions/20_sph_legendre/pr86655.cc:
	Likewise.
	* testsuite/special_functions/21_sph_neumann/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc:
	Likewise.
	* testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc:
	Likewise.

Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-06-11 10:30:45 +01:00
Jonathan Wakely
ebbcd94e47 libstdc++: Document that -std cannot be used in --target_board now
Only using GLIBCXX_TESTSUITE_STDS or v3_std_list works now.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/test.xml: Remove outdated documentation on
	testing with -std options in --target_board.
	* doc/html/manual/test.html: Regenerate.
2025-05-29 11:48:46 +01:00
Jonathan Wakely
caf804b179 libstdc++: Implement C++26 std::indirect [PR119152]
This patch implements C++26 std::indirect as specified
in P3019 with amendment to move assignment from LWG 4251.

	PR libstdc++/119152

libstdc++-v3/ChangeLog:

	* doc/doxygen/stdheader.cc: Added indirect.h file.
	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/bits/indirect.h: New file.
	* include/bits/version.def (indirect): Define.
	* include/bits/version.h: Regenerate.
	* include/std/memory: Include new header.
	* testsuite/std/memory/indirect/copy.cc
	* testsuite/std/memory/indirect/copy_alloc.cc
	* testsuite/std/memory/indirect/ctor.cc
	* testsuite/std/memory/indirect/incomplete.cc
	* testsuite/std/memory/indirect/invalid_neg.cc
	* testsuite/std/memory/indirect/move.cc
	* testsuite/std/memory/indirect/move_alloc.cc
	* testsuite/std/memory/indirect/relops.cc

Co-authored-by: Tomasz Kamiński <tkaminsk@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-05-26 12:25:32 +02:00
Tomasz Kamiński
545433e9bd libstdc++: Implement C++26 function_ref [PR119126]
This patch implements C++26 function_ref as specified in P0792R14,
with correction for constraints for constructor accepting nontype_t
parameter from LWG 4256.

As function_ref may store a pointer to the const object, __Ptrs::_M_obj is
changed to const void*, so again we do not cast away const from const
objects. To help with necessary casts, a __polyfunc::__cast_to helper is
added, that accepts reference to or target type direclty.

The _Invoker now defines additional call methods used by function_ref:
_S_ptrs() for invoking target passed by reference, and __S_nttp, _S_bind_ptr,
_S_bind_ref for handling constructors accepting nontype_t. The existing
_S_call_storage is changed to thin wrapper, that initialies _Ptrs, and forwards
to _S_call_ptrs.

This reduced the most uses of _Storage::_M_ptr and _Storage::_M_ref,
so this functions was removed, and _Manager uses were adjusted.

Finally we make function_ref available in freestanding mode, as
move_only_function and copyable_function are currently only available in hosted,
so we define _Manager and _Mo_base only if either __glibcxx_move_only_function
or __glibcxx_copyable_function is defined.

	PR libstdc++/119126

libstdc++-v3/ChangeLog:

	* doc/doxygen/stdheader.cc: Added funcref_impl.h file.
	* include/Makefile.am: Added funcref_impl.h file.
	* include/Makefile.in: Added funcref_impl.h file.
	* include/bits/funcref_impl.h: New file.
	* include/bits/funcwrap.h: (_Ptrs::_M_obj): Const-qualify.
	(_Storage::_M_ptr, _Storage::_M_ref): Remove.
	(__polyfunc::__cast_to) Define.
	(_Base_invoker::_S_ptrs, _Base_invoker::_S_nttp)
	(_Base_invoker::_S_bind_ptrs, _Base_invoker::_S_bind_ref)
	(_Base_invoker::_S_call_ptrs): Define.
	(_Base_invoker::_S_call_storage): Foward to _S_call_ptrs.
	(_Manager::_S_local, _Manager::_S_ptr): Adjust for _M_obj being
	const qualified.
	(__polyfunc::_Manager, __polyfunc::_Mo_base): Guard with
	__glibcxx_move_only_function || __glibcxx_copyable_function.
	(__polyfunc::__skip_first_arg, __polyfunc::__deduce_funcref)
	(std::function_ref) [__glibcxx_function_ref]: Define.
	* include/bits/utility.h (std::nontype_t, std::nontype)
	(__is_nontype_v) [__glibcxx_function_ref]: Define.
	* include/bits/version.def: Define function_ref.
	* include/bits/version.h: Regenerate.
	* include/std/functional: Define __cpp_lib_function_ref.
	* src/c++23/std.cc.in (std::nontype_t, std::nontype)
	(std::function_ref) [__cpp_lib_function_ref]: Export.
	* testsuite/20_util/function_ref/assign.cc: New test.
	* testsuite/20_util/function_ref/call.cc: New test.
	* testsuite/20_util/function_ref/cons.cc: New test.
	* testsuite/20_util/function_ref/cons_neg.cc: New test.
	* testsuite/20_util/function_ref/conv.cc: New test.
	* testsuite/20_util/function_ref/deduction.cc: New test.
	* testsuite/20_util/function_ref/mutation.cc: New test.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-05-26 11:25:28 +02:00
Jonathan Wakely
501e6e7866 libstdc++: Fix incorrect links to archived SGI STL docs
In r8-7777-g25949ee33201f2 I updated some URLs to point to copies of the
SGI STL docs in the Wayback Machine, because the original pags were no
longer hosted on sgi.com. However, I incorrectly assumed that if one
archived page was at https://web.archive.org/web/20171225062613/... then
all the other pages would be too. Apparently that's not how the Wayback
Machine works, and each page is archived on a different date. That meant
that some of our links were redirecting to archived copies of the
announcement that the SGI STL docs have gone away.

This fixes each URL to refer to a correctly archived copy of the
original docs.

libstdc++-v3/ChangeLog:

	* doc/xml/faq.xml: Update URL for archived SGI STL docs.
	* doc/xml/manual/containers.xml: Likewise.
	* doc/xml/manual/extensions.xml: Likewise.
	* doc/xml/manual/using.xml: Likewise.
	* doc/xml/manual/utilities.xml: Likewise.
	* doc/html/*: Regenerate.
2025-05-20 11:02:50 +01:00
Jonathan Wakely
6dbcbd96e9 libstdc++: Deprecate non-standard std::fabs(const complex<T>&) [PR120235]
There was an overload of fabs for std::complex in TR1 and in some C++0x
drafts, but it was removed from the working draft by LWG 595.

Since we've been providing it for decades we should deprecate it before
removing it.

libstdc++-v3/ChangeLog:

	PR libstdc++/120235
	* doc/html/*: Regenerate.
	* doc/xml/manual/evolution.xml: Document deprecation.
	* include/std/complex: Replace references to TR1 subclauses with
	corresponding C++11 subclauses.
	(fabs): Add deprecated attribute.
	* testsuite/26_numerics/complex/fabs_neg.cc: New test.

Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-05-15 16:33:16 +01:00
Tomasz Kamiński
d9055d0104 libstdc++: Renamed bits/move_only_function.h to bits/funcwrap.h [PR119125]
The file now includes copyable_function in addition to
move_only_function.

	PR libstdc++/119125

libstdc++-v3/ChangeLog:
	* include/bits/move_only_function.h: Move to...
	* include/bits/funcwrap.h: ...here.
	* doc/doxygen/stdheader.cc (init_map): Replaced move_only_function.h
	with funcwrap.h, and changed include guard to use feature test macro.
	Move bits/version.h include before others.
	* include/Makefile.am: Likewise.
	* include/Makefile.in: Likewise.
	* include/std/functional: Likewise.

Reviewed-by: Patrick Palka <ppalka@redhat.com>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-05-14 15:00:41 +02:00
Tomasz Kamiński
0e93f7cd4e libstdc++: Implement C++26 copyable_function [PR119125]
This patch implements C++26 copyable_function as specified in P2548R6.
It also implements LWG 4255 that adjust move_only_function so constructing
from empty copyable_function, produces empty functor. This falls from
existing checks, after specializing __is_polymorphic_function_v for
copyable_function specializations.

For compatible invoker signatures, the move_only_function may be constructed
from copyable_funciton without double indirection. To achieve that we derive
_Cpy_base from _Mo_base, and specialize __is_polymorphic_function_v for
copyable_function. Similary copyable_functions with compatible signatures
can be converted without double indirection.

As we starting to use _Op::_Copy operation from the _M_manage function,
invocations of that functions may now throw exceptions, so noexcept needs
to be removed from the signature of stored _M_manage pointers. This also
affects operations in _Mo_base, however we already wrap _M_manage invocations
in noexcept member functions (_M_move, _M_destroy, swap).

	PR libstdc++/119125

libstdc++-v3/ChangeLog:

	* doc/doxygen/stdheader.cc: Addded cpyfunc_impl.h header.
	* include/Makefile.am: Add bits cpyfunc_impl.h.
	* include/Makefile.in: Add bits cpyfunc_impl.h.
	* include/bits/cpyfunc_impl.h: New file.
	* include/bits/mofunc_impl.h: Mention LWG 4255.
	* include/bits/move_only_function.h: Update header description
	and change guard to also check __glibcxx_copyable_function.
	(_Manager::_Func): Remove noexcept.
	(std::__is_polymorphic_function_v<move_only_function<_Tp>>)
	(__variant::_Never_valueless_alt<std::move_only_function<_Signature...>>)
	(move_only_function) [__glibcxx_move_only_function]: Adjust guard.
	(std::__is_polymorphic_function_v<copyable_function<_Tp>>)
	(__variant::_Never_valueless_alt<std::copyable_function<_Signature...>>)
	(__polyfunc::_Cpy_base, std::copyable_function)
	[__glibcxx_copyable_function]: Define.
	* include/bits/version.def: Define copyable_function.
	* include/bits/version.h: Regenerate.
	* include/std/functional: Define __cpp_lib_copyable_function.
	* src/c++23/std.cc.in (copyable_function)
	[__cpp_lib_copyable_function]: Export.
	* testsuite/20_util/copyable_function/call.cc: New test based on
	move_only_function tests.
	* testsuite/20_util/copyable_function/cons.cc: New test based on
	move_only_function tests.
	* testsuite/20_util/copyable_function/conv.cc: New test based on
	move_only_function tests.
	* testsuite/20_util/copyable_function/copy.cc: New test.
	* testsuite/20_util/copyable_function/move.cc: New test based on
	move_only_function tests.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
2025-05-14 14:00:47 +02:00
Jonathan Wakely
203eb116ec libstdc++: Update C++23 status table
This should have been updated for the GCC 15.1 release.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/status_cxx2023.xml: Update status of proposals
	implemented after GCC 14.2 release.
	* doc/html/manual/status.html: Regenerate.
2025-05-12 12:26:53 +01:00
Jonathan Wakely
e0bcedba61 libstdc++: Update <charconv> rows in C++17 status table
Document that std::to_chars and std::from_chars are complete, mentioning
the libraries used for floating-point types.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/status_cxx2017.xml: Update status for
	std::to_chars and std::from_chars.
	* doc/html/manual/*: Regenerate.

Reviewed-by: Jakub Jelinek <jakub@redhat.com>
Reviewed-by: Björn Schäpers <gcc@hazardy.de>
2025-05-12 09:42:59 +01:00
Luc Grosheintz
4c9eef71db libstdc++: Add header mdspan to the build-system.
Creates a nearly empty header mdspan and adds it to the build-system and
Doxygen config file.

libstdc++-v3/ChangeLog:

	* doc/doxygen/user.cfg.in: Add <mdspan>.
	* include/Makefile.am: Ditto.
	* include/Makefile.in: Ditto.
	* include/precompiled/stdc++.h: Ditto.
	* include/std/mdspan: New file.

Signed-off-by: Luc Grosheintz <luc.grosheintz@gmail.com>
2025-05-07 11:47:39 +01:00
Tomasz Kamiński
6808f74b4f libstdc++: Clarify that _S_ prefix is be used for static member functions.
libstdc++-v3/ChangeLog:

	* doc/xml/manual/appendix_contributing.xml: Add 'and functions'.
2025-04-18 11:11:58 +02:00
Jonathan Wakely
dd35f66287 libstdc++: Document thread-safety for COW std::string [PR21334]
The gcc4-compatible copy-on-write std::string does not conform to the
C++11 requirements on data race avoidance in standard containers.
Specifically, calling non-const member functions such as begin() and
data() needs to do the "copy on write" operation and so is most
definitely a modification of the object. As such, those non-const
members must not be called concurrently with any other uses of the
string object.

libstdc++-v3/ChangeLog:

	PR libstdc++/21334
	* doc/xml/manual/using.xml: Document that container data race
	avoidance rules do not apply to COW std::string.
	* doc/html/*: Regenerate.
2025-04-14 13:13:11 +01:00
Jonathan Wakely
5430fcd1a3 libstdc++: Add new headers to Doxygen config file
libstdc++-v3/ChangeLog:

	* doc/doxygen/user.cfg.in (INPUT): Add flat_map, flat_set,
	text_encoding, stdbit.h and stdckdint.h.
2025-04-07 16:08:23 +01:00
Jonathan Wakely
1e4d81aab2 libstdc++: Fix some broken links in the manual
libstdc++-v3/ChangeLog:

	* doc/xml/manual/policy_data_structures_biblio.xml: Fix two
	broken links.
	* doc/html/manual/policy_data_structures.html: Regenerate.
2025-03-24 21:57:56 +00:00
Jonathan Wakely
b93e60e790 libstdc++: Correct statement about default -std option
The default is -std=gnu++17 now, not -std=gnu++14.

libstdc++-v3/ChangeLog:

	* doc/xml/manual/test.xml: Fix default for -std option.
	* doc/html/manual/test.html: Regenerate.
2025-03-19 23:29:06 +00:00
Jonathan Wakely
597ca24445 libstdc++: Add lambda example to case transformation docs
libstdc++-v3/ChangeLog:

	* doc/xml/manual/strings.xml: Tweak formatting. Add example
	using lambda.
	* doc/html/manual/strings.html: Regenerate.
2025-03-12 11:32:55 +00:00
Jonathan Wakely
ac16d6d74f libstdc++: Remove stray comma in testing docs
libstdc++-v3/ChangeLog:

	* doc/xml/manual/test.xml: Remove stray comma.
	* doc/html/manual/test.html: Regenerate.
2025-03-04 11:14:00 +00:00
Jonathan Wakely
720945e8bc libstdc++: Fix incorrect DocBook element in manual
libstdc++-v3/ChangeLog:

	* doc/xml/manual/evolution.xml: Replace invalid <variable>
	elements with <varname>.
	* doc/html/*: Regenerate.
2025-01-08 12:45:36 +00:00
Jakub Jelinek
6441eb6dc0 Update copyright years. 2025-01-02 11:59:57 +01:00
Gerald Pfeifer
60ef4b9cc9 libstdc++: Delete further Profile Mode leftovers
Commit 544be2beb1 in 2019 remove Profile Mode and associated docs.
Now also remove generated HTML files.

libstdc++-v3:
	* doc/html/manual/profile_mode.html: Delete.
	* doc/html/manual/profile_mode_api.html: Ditto.
	* doc/html/manual/profile_mode_cost_model.html: Ditto.
	* doc/html/manual/profile_mode_design.html: Ditto.
	* doc/html/manual/profile_mode_devel.html: Ditto.
	* doc/html/manual/profile_mode_impl.html: Ditto.
2025-01-01 09:05:02 +08:00
Gerald Pfeifer
56dfadd185 libstdc++: Delete leftover from Profile Mode removal
Commit 544be2beb1 in 2019 remove Profile Mode and associated docs
including the XML version of profile_mode_diagnostics.html. Somehow
the latter survived until now. Simply delete it as well.

libstdc++-v3:
	* doc/html/manual/profile_mode_diagnostics.html: Delete.
2024-12-29 21:44:50 +08:00
Gerald Pfeifer
83e86397b0 libstdc++: Update reference to Angelika Langer's article
libstdc++-v3:
	* doc/xml/manual/allocator.xml: Update reference to Angelika
	Langer's article.
	* doc/html/manual/memory.html: Regenerate.
2024-11-18 08:33:49 +01:00