Age | Commit message (Collapse) | Author |
|
llvm-svn: 190837
|
|
llvm-svn: 189140
|
|
debug-mode has found a bug (found one in regex). Had to play with extern templates a bit to get this to work since string is heavily used within libc++.dylib.
llvm-svn: 189114
|
|
the unnecessary ones, and commented the ones that are there for non-obvious reasons such as to help things limp along in C++03 language mode.
llvm-svn: 189039
|
|
llvm-svn: 188396
|
|
explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>.
llvm-svn: 188192
|
|
MSVC-specific, MSVCRT-specific, or Windows-specific. Because Clang can
also define _MSC_VER, and MSVCRT is not necessarily the only C runtime,
these macros should not be used interchangeably.
This patch divides all Windows-related bits into the aforementioned
categories. Two new macros are introduced:
- _LIBCPP_MSVC: Defined when compiling with MSVC. Detected using
_MSC_VER, excluding Clang.
- _LIBCPP_MSVCRT: Defined when using the Microsoft CRT. This is the default
when _WIN32 is defined.
This leaves _WIN32 for code using the Windows API.
This also corrects the spelling of _LIBCP_HAS_IS_BASE_OF to _LIBCPP_HAS_IS_BASE_OF.
Nico, please prepare a patch for CREDITS.TXT, thanks.
llvm-svn: 187593
|
|
llvm-svn: 187587
|
|
unsigned char. This fixes http://llvm.org/bugs/show_bug.cgi?id=16764. Also a drive-by fix on a chrono test suite bug.
llvm-svn: 187552
|
|
when it shouldn’t.
Reviewed by Howard.
llvm-svn: 186875
|
|
llvm-svn: 181569
|
|
llvm-svn: 181548
|
|
fixes http://llvm.org/bugs/show_bug.cgi?id=15667.
llvm-svn: 178764
|
|
truncation warnings on Linux
llvm-svn: 174669
|
|
from _InputIterator to _BidirectionalIterator to better document the intent of the algorithm.
llvm-svn: 174544
|
|
intended for the clients of libc++, not the libc++ build. The dylib should always contain the extern templates. To disable the client needs to put -D'_LIBCPP_EXTERN_TEMPLATE(...)=' on the command line.
llvm-svn: 167486
|
|
rotate is a critical algorithm because it is often used by other algorithms,
both std and non-std. The main thrust of this optimization is a specialized
algorithm when the 'distance' to be shifted is 1 (either left or right). To my
surprise, this 'optimization' was not effective for types like std::string.
std::string favors rotate algorithms which only use swap. But for types like
scalars, and especially when the sequence is random access, these new
specializations are a big win. If it is a vector<size_t> for example, the
rotate is done via a memmove and can be several times faster than the gcd
algorithm.
I'm using is_trivially_move_assignable to distinguish between types like int and
types like string. This is obviously an ad-hoc approximation, but I haven't
found a case where it doesn't give good results.
I've used a 'static if' (with is_trivially_move_assignable) in three places.
Testing with both -Os and -O3 showed that clang eliminated all code not be
executed by the 'static if' (including the 'static if' itself).
llvm-svn: 161247
|
|
<cstddef>. This was brought to my attention by Salvatore Benedetto in his port to a bare-metal coretex-m3. This exposed two test bugs where an explicit #include <cstdlib> was needed.
llvm-svn: 160786
|
|
llvm-svn: 153896
|
|
This by no means completes constexpr support. Indeed, it hardly scratches the surface. All it does is lay the foundation in <__config> and changes those few places in the library that are already using that foundation.
llvm-svn: 153856
|
|
work for iterators into discontiguous memory.
llvm-svn: 147343
|
|
llvm-svn: 145624
|
|
llvm-svn: 145410
|
|
llvm-svn: 145407
|
|
llvm-svn: 145265
|
|
llvm-svn: 143104
|
|
llvm-svn: 142732
|
|
llvm-svn: 142235
|
|
llvm-svn: 139711
|
|
llvm-svn: 137522
|
|
llvm-svn: 134190
|
|
noexcept workarounds.
llvm-svn: 132186
|
|
much better with std::istream_iterator<int>(std::cin). Credit: Matan Nassau.
llvm-svn: 126581
|
|
qualified (thanks Chris).
llvm-svn: 125510
|
|
emulation; waiting on compiler intrinsics to do it right.
llvm-svn: 119854
|
|
llvm-svn: 119611
|
|
llvm-svn: 119395
|
|
llvm-svn: 117098
|
|
flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
llvm-svn: 113086
|
|
llvm-svn: 111750
|
|
llvm-svn: 111742
|
|
llvm-svn: 104877
|
|
llvm-svn: 104708
|
|
accepted except there were some bug fixes needed in <locale> for the __nolocale_* series. For the apple branch I ended up using templates instead of the var_args solution because it seemed both safer and more efficient.
llvm-svn: 104516
|
|
llvm-svn: 103516
|
|
llvm-svn: 103490
|