gcc/libstdc++-v3/testsuite
Jonathan Wakely 74d14778e7 libstdc++: Define std::__is_constant_evaluated() for internal use
This adds std::__is_constant_evaluated() as a C++11 wrapper for
__builtin_is_constant_evaluated, but just returning false if the
built-in isn't supported by the compiler. This allows us to use it
throughout the library without checking __has_builtin every time.

Some uses in std::vector and std::string can only be constexpr when the
std::is_constant_evaluated() function actually works, so we might as
well guard them with a relevant macro and call that function directly,
rather than the built-in or std::__is_constant_evaluated().

The remaining checks of the __cpp_lib_is_constant_evaluated macro could
now be replaced by checking __cplusplus >= 202002 instead, but there's
no practical difference. We still need some kind of preprocessor check
there anyway.

libstdc++-v3/ChangeLog:

	* doc/doxygen/user.cfg.in (PREDEFINED): Change macro name.
	* include/bits/allocator.h (allocate, deallocate): Use
	std::__is_constant_evaluated() unconditionally, instead of
	checking whether std::is_constant_evaluated() (or the built-in)
	can be used.
	* include/bits/basic_string.h: Check new macro. call
	std::is_constant_evaluated() directly in C++20-only code that is
	guarded by a suitable macro.
	* include/bits/basic_string.tcc: Likewise.
	* include/bits/c++config (__is_constant_evaluated): Define.
	(_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED): Replace with ...
	(_GLIBCXX_HAVE_IS_CONSTANT_EVALUATED): New macro.
	* include/bits/char_traits.h (char_traits): Replace conditional
	calls to std::is_constant_evaluated with unconditional calls to
	std::__is_constant_evaluated.
	* include/bits/cow_string.h: Use new macro.
	* include/bits/ranges_algobase.h (__copy_or_move): Replace
	conditional calls to std::is_constant_evaluated with unconditional
	calls to std::__is_constant_evaluated.
	(__copy_or_move_backward, __fill_n_fn): Likewise.
	* include/bits/ranges_cmp.h (ranges::less): Likewise.
	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
	Likewise.
	* include/bits/stl_bvector.h: Call std::is_constant_evaluated
	directly in C++20-only code that is guarded by a suitable macro.
	* include/bits/stl_construct.h (_Construct, _Destroy, _Destroy_n):
	Replace is_constant_evaluated with __is_constant_evaluated.
	* include/bits/stl_function.h (greater, less, greater_equal)
	(less_equal): Replace __builtin_is_constant_evaluated and
	__builtin_constant_p with __is_constant_evaluated.
	* include/bits/stl_vector.h: Call std::is_constant_evaluated()
	in C++20-only code.
	* include/debug/helper_functions.h (__check_singular): Use
	__is_constant_evaluated instead of built-in, or remove check
	entirely.
	* include/std/array (operator<=>): Use __is_constant_evaluated
	unconditionally.
	* include/std/bit (__bit_ceil): Likewise.
	* include/std/type_traits (is_constant_evaluated): Define using
	'if consteval' if possible.
	* include/std/version: Use new macro.
	* libsupc++/compare: Use __is_constant_evaluated instead of
	__builtin_is_constant_evaluated.
	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
	Adjust dg-error lines.
2021-12-01 15:00:33 +00:00
..
17_intro
18_support libstdc++: Add effective-target for std::allocator implementation 2021-11-23 21:23:24 +00:00
19_diagnostics
20_util libstdc++: Move std::to_address tests to more appropriate place 2021-11-26 12:38:35 +00:00
21_strings libstdc++: Fix tests that fail with fully-dynamic-string 2021-11-30 23:10:04 +00:00
22_locale
23_containers libstdc++: Define std::__is_constant_evaluated() for internal use 2021-12-01 15:00:33 +00:00
24_iterators libstdc++: Fix test that fails in C++20 mode 2021-11-26 22:56:51 +00:00
25_algorithms libstdc++: Remove redundant xfail selectors in dg-do compile tests 2021-11-26 15:11:58 +00:00
26_numerics libstdc++: Implement std::byteswap for C++23 2021-11-28 16:33:33 +01:00
27_io libstdc++: Fix dg-do directive for tests supposed to be run 2021-11-26 15:11:58 +00:00
28_regex libstdc++: Replace hyphens in effective target keywords 2021-11-24 13:20:26 +00:00
29_atomics libstdc++: Ensure dg-add-options comes after dg-options 2021-11-26 15:11:58 +00:00
30_threads
abi
backward
config
data
decimal
experimental libstdc++: Replace hyphens in effective target keywords 2021-11-24 13:20:26 +00:00
ext libstdc++: Add effective-target for std::allocator implementation 2021-11-23 21:23:24 +00:00
lib libstdc++: Replace hyphens in effective target keywords 2021-11-24 13:20:26 +00:00
libstdc++-abi
libstdc++-dg
libstdc++-prettyprinters libstdc++: Add xfail to some printer tests for debug mode 2021-11-24 13:20:26 +00:00
libstdc++-xmethods
performance
special_functions
std
tr1
tr2
util libstdc++: Fix std::type_info::before for ARM [PR103240] 2021-11-17 17:21:24 +00:00
Makefile.am
Makefile.in