llvm-project/libcxx/include
Eric Fiselier c490c5e81a Reland [libc++] Move abs and div into stdlib.h to fix header cycle.
This commit should will break libc++ without local submodule visibility, but
the LLVM+modules bots are now all using this mode. Before the Green Dragon
LLDB bot was failing to compile with a libc++ built with this commit as LSV
was disabled on macOS.

Original summary:

libc++ is careful to not fracture overload sets. When one overload
is visible to a user, all of them should be. Anything less causes
subtle bugs and ODR violations.

Previously, in order to support ::abs and ::div being supplied by
both <cmath> and <cstdlib> we had to do awful things that make
<math.h> and <stdlib.h> have header cycles and be non-modular.
This really breaks with modules.

Specifically the problem was that in C++ ::abs introduces overloads
for floating point numbers, these overloads forward to ::fabs,
which are defined in math.h. Therefore ::abs needed to be in math.h
too. But this required stdlib.h to include math.h and math.h to
include stdlib.h.

To avoid these problems the definitions have been moved to stddef.h
(which math includes), and the floating point overloads of ::abs
have been changed to call __builtin_fabs, which both Clang and GCC
support.
2020-05-08 21:52:27 +02:00
..
experimental [NFC] Strip trailing whitespace from libc++ 2019-10-23 11:19:19 -07:00
ext [libc++] Cleanup and enable multiple warnings. 2019-12-12 21:09:08 -05:00
support [libcxx] [Windows] Store the lconv struct returned from localeconv in locale_t 2020-01-29 22:37:11 +02:00
CMakeLists.txt build: update libc++ as there are some bots with integrated build 2020-04-28 20:07:28 +00:00
__bit_reference [libc++] Fix ABI break in __bit_reference. 2020-02-19 12:02:06 -05:00
__bsd_locale_defaults.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
__bsd_locale_fallbacks.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
__config [libc++] Improve the detection of whether the blocks runtime is available 2020-04-24 07:02:21 -04:00
__config_site.in [libc++] Add tests for _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT 2020-05-07 12:40:02 -04:00
__debug [libc++][NFC] Remove excess trailing newlines from most files 2019-10-23 08:08:57 -07:00
__errc Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
__functional_03 [libc++] Properly mark std::function as deprecated in C++03 2020-03-10 17:45:39 -04:00
__functional_base [libc++] Fix unintended ADL inside ref(reference_wrapper<T>) and cref(reference_wrapper<T>) 2020-02-20 12:22:21 -05:00
__functional_base_03 Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
__hash_table [libc++] Rework compressed pair constructors. 2019-12-16 18:38:58 -05:00
__libcpp_version Bump the trunk major version to 11 2020-01-15 13:38:01 +01:00
__locale Upstream Bionic definitions of ctype_base/regex. 2020-04-06 13:38:16 -07:00
__mutex_base [libc++] Ensure __config always defines certain configuration macros. 2019-12-13 15:42:07 -05:00
__node_handle Avoid name conflict with kernel headers 2019-04-24 09:43:44 +00:00
__nullptr Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
__split_buffer [libc++] Rework compressed pair constructors. 2019-12-16 18:38:58 -05:00
__sso_allocator Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
__std_stream Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
__string Make basic_string::operator=() tail call properly 2020-04-10 19:41:46 -04:00
__threading_support [libc++] Add availability markup for the C++20 Synchronization Library on Apple 2020-04-06 18:07:26 -04:00
__tree [libc++] Rework compressed pair constructors. 2019-12-16 18:38:58 -05:00
__tuple Refactor default constructor SFINAE in pair and tuple. 2019-09-30 20:55:30 +00:00
__undef_macros Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
algorithm Rename __is_foo_iterator traits to reflect their Cpp17 nature. 2019-11-18 01:49:32 -05:00
any [NFC][libc++] Remove stray semi-colon after function definition 2019-06-19 16:33:28 +00:00
array [libc++] Fix recursive instantiation in std::array. 2020-04-09 17:42:10 -04:00
atomic [libc++] Add availability markup for the C++20 Synchronization Library on Apple 2020-04-06 18:07:26 -04:00
barrier [libc++] Add availability markup for the C++20 Synchronization Library on Apple 2020-04-06 18:07:26 -04:00
bit [NFC] Strip trailing whitespace from libc++ 2019-10-23 11:19:19 -07:00
bitset Ensure bitset's string constructor doesn't poison the overload set. 2019-07-01 19:59:34 +00:00
cassert Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
ccomplex Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cctype Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cerrno Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cfenv Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cfloat Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
charconv [libc++] Add availability markup for std::to_chars on Apple platforms 2020-02-17 09:32:46 -05:00
chrono [libc++] [chrono] Fix year_month_weekday::ok() implementation. 2019-11-15 18:48:45 +01:00
cinttypes Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ciso646 Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
climits Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
clocale Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cmath [libc++] Harden usage of static_assert against C++03 2019-10-01 12:12:21 +00:00
codecvt Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
compare Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
complex [libc++] Fix ostream for complex numbers with fixed field width 2020-05-07 13:51:07 -04:00
complex.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
concepts [libcxx] Adds [concept.same] 2020-04-08 18:00:13 -04:00
condition_variable Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
csetjmp Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
csignal Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cstdarg Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cstdbool Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cstddef Avoid using std::max_align_t in pre-C++11 mode 2020-04-04 01:38:41 +02:00
cstdint Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cstdio Reland: Don't expose unavailable cstdio functions. 2020-04-16 12:51:08 -07:00
cstdlib Fix _LIBCPP_HAS_ definitions for Android. 2019-11-18 12:19:58 -08:00
cstring Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ctgmath Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
ctime Fix _LIBCPP_HAS_ definitions for Android. 2019-11-18 12:19:58 -08:00
ctype.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cwchar Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
cwctype Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
deque [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
errno.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
exception Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
execution [pstl][libc++] Provide uglified header names for interface headers 2019-08-06 21:11:24 +00:00
fenv.h Mark fenv.h as a system header before the #include_next directive 2019-03-29 16:03:57 +00:00
filesystem Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
float.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
forward_list [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
fstream Open fstream files in O_CLOEXEC mode when possible. 2019-09-16 19:26:41 +00:00
functional [libcxx] Qualify make_pair in searcher implementations to prevent ADL 2020-05-07 11:57:10 -04:00
future Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
initializer_list [NFC][libcxx] Remove trailing whitespace 2019-05-29 16:01:36 +00:00
inttypes.h AIX system headers need stdint.h and inttypes.h to be re-enterable 2019-06-20 15:36:32 +00:00
iomanip [NFC][libcxx] Remove trailing whitespace 2019-05-29 16:01:36 +00:00
ios Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
iosfwd Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
iostream Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
istream [libc++] Implement LWG 3199 2019-08-20 18:21:06 +00:00
iterator Rename __is_foo_iterator traits to reflect their Cpp17 nature. 2019-11-18 01:49:32 -05:00
latch [libc++] Add availability markup for the C++20 Synchronization Library on Apple 2020-04-06 18:07:26 -04:00
limits Fix -Wdouble-promotion warnings. 2019-07-01 16:13:31 +00:00
limits.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
list [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
locale [NFC][libcxx] Remove trailing whitespace 2019-05-29 16:01:36 +00:00
locale.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
map [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
math.h Reland [libc++] Move abs and div into stdlib.h to fix header cycle. 2020-05-08 21:52:27 +02:00
memory [libcxx] Add deduction guides for shared_ptr and weak_ptr 2020-05-07 12:07:48 -04:00
module.modulemap [libcxx] Adds [concept.same] 2020-04-08 18:00:13 -04:00
mutex [libc++] Mark __call_once_proxy as hidden and internal 2019-11-11 10:27:48 -05:00
new [libc++] Revert 03dd205c15 "Adjust max_align_t handling" 2020-02-25 11:42:08 -05:00
numeric [libc++] Fix typo in std::midpoint 2019-12-21 01:26:24 -08:00
optional Add a missing '__uncvref_t' to the SFINAE constraints for optional's assignment operator. Fixes PR38638. Thanks to Jonathan Wakely for the report 2019-06-27 18:40:55 +00:00
ostream Add forward declaration of operator<< in <string_view> as required. 2019-09-25 18:56:54 +00:00
queue Rename __is_foo_iterator traits to reflect their Cpp17 nature. 2019-11-18 01:49:32 -05:00
random [libc++] Bugfix to std::binomial_distribution<int> 2020-03-17 15:56:16 -04:00
ratio Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
regex Revert "[libc++] ECMAScript IdentityEscape is ambiguous (2584)" 2020-05-08 10:37:04 -07:00
scoped_allocator Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
semaphore [libc++] Add availability markup for the C++20 Synchronization Library on Apple 2020-04-06 18:07:26 -04:00
set [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
setjmp.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
shared_mutex Revert "Suppress -Wctad-maybe-unsupported on types w/o deduction guides." 2019-08-04 07:13:43 +00:00
span [libc++] span: Fix incorrect static asserts 2020-02-14 14:32:41 +01:00
sstream add a test and a couple minor bug fixes for the implicit-signed-integer-truncation sanitizer. This is PR#40566 2019-02-01 21:59:27 +00:00
stack [NFC][libcxx] Remove trailing whitespace 2019-05-29 16:01:36 +00:00
stdbool.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
stddef.h Avoid using std::max_align_t in pre-C++11 mode 2020-04-04 01:38:41 +02:00
stdexcept Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
stdint.h AIX system headers need stdint.h and inttypes.h to be re-enterable 2019-06-20 15:36:32 +00:00
stdio.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
stdlib.h Reland [libc++] Move abs and div into stdlib.h to fix header cycle. 2020-05-08 21:52:27 +02:00
streambuf Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
string Remove unused _LIBCPP_RAW_ITERATORS 2020-05-07 22:26:15 +02:00
string.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
string_view Add forward declaration of operator<< in <string_view> as required. 2019-09-25 18:56:54 +00:00
strstream Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
system_error Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
tgmath.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
thread [libc++] Hide some functions and types in <future> and <thread> as hidden 2019-12-10 19:19:45 -05:00
tuple PR43764: Qualify a couple of calls to forward_as_tuple to be ADL-resilient. 2019-10-28 18:04:41 -07:00
type_traits Fix __is_pointer builtin type trait to work with Objective-C pointer types. 2020-04-08 10:02:53 -07:00
typeindex Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
typeinfo Fix -Wdeprecated-copy-dtor and -Wdeprecated-dynamic-exception-spec warnings. 2020-03-17 18:59:54 +01:00
unordered_map [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
unordered_set [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
utility Refactor default constructor SFINAE in pair and tuple. 2019-09-30 20:55:30 +00:00
valarray [libc++] Cleanup and enable multiple warnings. 2019-12-12 21:09:08 -05:00
variant Improve compile time of variant. 2019-07-14 21:29:39 +00:00
vector [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
version [libc++][P1115][C++20] Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if. 2020-05-02 14:04:50 +02:00
wchar.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
wctype.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00