938 Commits

Author SHA1 Message Date
Marshall Clow
d132bf4ef1 Fix some type-traits (is_assignable, etc) dealing with classes that take non-const references as 'right hand side'. Add tests. Fixes PR# 20836
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@218286 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-22 23:58:00 +00:00
Jonathan Roelofs
6a5a8abe2f Support newlib as libc++'s C library [locale part]
http://reviews.llvm.org/D5385


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@218144 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-19 20:09:12 +00:00
Marshall Clow
5ffb8d0fbe Fix PR#20843: binomial_distribution<unsigned> is broken. Add test to ensure that signed and unsigned verstions produce the same sequence.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217976 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-17 18:33:58 +00:00
Dan Albert
6d9505ad8a Fix char_traits functions for GCC compatibility.
GCC 4.9 fails to inline these functions at -O1 because they are used
indirectly. Declare them as inline instead of always_inline. Discussion
in GCC bugreport: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63220


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217961 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-17 16:34:29 +00:00
Marshall Clow
bb9902ec97 K-ballo pointed out *another* mistype in my change
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217936 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-17 01:58:15 +00:00
Marshall Clow
d402a4da6b Fix for mismatch to handle evil iterators which overload operator comma
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217903 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-16 20:40:05 +00:00
Marshall Clow
4413ab09d5 Fix a bug in the move-assigment operator for basic_stringbuf. Thanks to Johnathan Wakeley for the bug report
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217894 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-16 18:57:52 +00:00
Marshall Clow
86d311c5f3 Thanks to K-ballo for noting a second incorrect noexcept clause in tuple - and suggesting a more correct way to write the first
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217884 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-16 17:08:21 +00:00
Marshall Clow
12929a957b Fix a bad noexcept clause in tuple's move constructor
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217878 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-16 15:36:14 +00:00
Marshall Clow
d1fae17224 Forgot 'const' on my last checkin
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217877 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-16 15:33:53 +00:00
Marshall Clow
546eca8dc6 Some of the synopsis was left out of these headers, and the copy construction/assignment should have been marked as deleted. Done. No functionality change, because the base class (base_ios) was marked as non-copyable already.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217876 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-16 15:27:01 +00:00
Jonathan Roelofs
baed05dd37 Address some post-commit review comments on r217261
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217276 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-05 20:28:44 +00:00
Jonathan Roelofs
8d86b2e686 Allow libc++ to be built on systems without POSIX threads
If you're crazy enough to want this sort of thing, then add
-D_LIBCPP_HAS_NO_THREADS to your CXXFLAGS and
--param=additiona_features=libcpp-has-no-threads to your lit commnad line.

http://reviews.llvm.org/D3969


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217271 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-05 19:45:05 +00:00
Viktor Kutuzov
60a74bd69d Define ELAST in libcxx's config header on FreeBSD
Differential Revision: http://reviews.llvm.org/D5165


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217146 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-04 13:25:46 +00:00
Marshall Clow
26f472d1dd Make the ASAN RAII object a nop when building w/o ASAN
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217082 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-03 21:37:43 +00:00
Jonathan Roelofs
0f4ca8b340 Detection for _LIBCPP_HAS_NO_MONOTONIC_CLOCK caused several more build breakages
Remove it for now. This flag can be set in build scripts instead.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217061 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-03 18:48:28 +00:00
Alexey Volkov
5907f03123 Allow libc++ to be built with GCC 5.0 compiler
Differential Revision: http://reviews.llvm.org/D5169


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217038 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-03 14:30:39 +00:00
Jonathan Roelofs
fc685481dc Fix yet another aspect of the build breakage caused by r216949
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@217001 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-03 00:29:02 +00:00
Jonathan Roelofs
7d7b9944b2 Fix build breakage introduced in r216949
The bug shows up on systems that `#define _POSIX_CLOCK_MONOTONIC 0` to indicate
that users of CLOCK_MONOTONIC must check sysconf at runtime.

See: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/unistd.h.html


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216997 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-02 23:49:15 +00:00
Kostya Serebryany
497f912ab2 [asan] Make vector asan annotations exception-friendly
Fix vector asan annotations with RAII.
Add a test.
Also, remove one dead function.
Review: http://reviews.llvm.org/D4170



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216995 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-02 23:43:38 +00:00
Jonathan Roelofs
50508334bf Silence _LIBCPP_ELAST porting warning on __APPLE__
This fixes a warning accidentally introduced in r216943.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216977 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-02 22:09:50 +00:00
Jonathan Roelofs
0991323677 Don't #define _LIBCPP_HAS_NO_MONOTONIC_CLOCK on __APPLE__
This fixes PR20839, which was a bug in r216949.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216975 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-02 21:56:01 +00:00
Jonathan Roelofs
c5780651c3 Partially address a FIXME in steady_clock::now()
http://reviews.llvm.org/D4045


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216949 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-02 21:14:38 +00:00
Jonathan Roelofs
b9420936a4 Newlib names ELAST differently than linux
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216943 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-02 20:34:23 +00:00
Marshall Clow
e33e03e558 Fix PR#20834 - 'is_trivially_destructible yeilds wrong answer for arrays of unknown bound' Thanks to K-ballo for the bug report. Update a few of the other tests while we're here, and fix a typo in a test name.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216909 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-02 16:19:38 +00:00
Jonathan Roelofs
9dc353cf11 Rename arguments in include/cmath to work around Newlib macro implementation using these particular names
http://reviews.llvm.org/D5080


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216548 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-27 14:05:20 +00:00
Marshall Clow
861f1e95fd Replace 'noexcept' with '_NOEXCEPT' in <shared_mutex>. This allows us to build the dylib with MSVC, which doesn't support noexcept (sheesh\!). Thanks to K-ballo for the report.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216384 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-25 14:53:16 +00:00
Marshall Clow
4de32048f5 Fix bug 20740 - std::set/std::map don't support heterogeneous lookup for count(). Thanks to Jim Porter for the bug report
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216353 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-24 23:54:16 +00:00
Eric Fiselier
63648cffc0 Fix is_member_function_pointer does not account for ellipsis. PR20345. Patch from Agustin Berge.
I reviewed the patch and added the test cases.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215984 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-19 16:31:47 +00:00
Justin Bogner
98c4e404ca Revert "Turn off extern templates for most uses."
Turning off explicit template instantiation leads to a pretty
significant build time and code size cost. We're better off dealing
with ABI incompatibility issues that come up in a less heavy handed
way.

This reverts commit r189610.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215740 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-15 17:58:56 +00:00
Eric Fiselier
f4124610c2 Add return statement to slice_array and mask_array assignment. Closes PR20614.
This patch just adds the required return statements to slice_array::operator=
and mask_array::operator=.

Tests were added to check that the return value is the same as the object assigned
to.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215414 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-12 00:06:58 +00:00
Eric Fiselier
b9536101dc NFC. Move definition of _LIBCPP_ASSERT into __debug header and remove external include guards.
Things done in this patch:

1. Make __debug include __config since it uses macros from it.

2. The current method of defining _LIBCPP_ASSERT is prone to redefinitions. Move
the null _LIBCPP_ASSERT definition into the __debug header to prevent this.

3. Remove external <__debug> include gaurds. <__debug> guards almost all of its
contents internally. There is no reason to be doing it externally.

This patch should not change any functionality.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215332 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-10 23:53:08 +00:00
Eric Fiselier
67740670f9 NFC. Remove trailing whitespace and tabs.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215326 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-10 20:56:31 +00:00
Dan Albert
e8b4232e33 Emulate clang atomic built-ins on gcc > 4.7
gcc 4.7 and above has atomic built-ins which slightly different APIs
from those provided by clang. Add proxy functions that wrap the gcc
built-ins to produce a symbol that is API equivalent to the clang
built-ins. This allows libc++'s atomic library to be used with gcc-4.7
and newer.

Patch contributed by Albert Wong.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215305 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-09 23:51:51 +00:00
Marshall Clow
095c3dd23e Apply a similar fix to <forward_list> as I did for <list> in r215210. Again, thanks to Ion Gaztañaga for noticing this problem w.r.t LWG#526
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215213 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-08 15:58:00 +00:00
Marshall Clow
fca038e133 While reading LWG#526, Ion Gaztañaga noticed that libc++ didn't correctly handle list::remove(const value_type &x), if x was an element of the list. Added a test for this, and a fix. Thanks to Ion for the report.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215210 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-08 15:35:52 +00:00
Marshall Clow
ea8ed833fe dit pointed out on IRC that '__i = _VSTD::next(__i)' was a very long-winded way of writing '++__i'. Since I hate being thought of as long-winded (this checkin comment notwithstanding), I fixed it. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214834 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-05 01:34:12 +00:00
Marshall Clow
529d303340 Fix a problem with reference_wrapper in C++03 that was causing counting predicates to fail. Add a test to make sure it works. However, most of the reference_wrapper tests still fail in C++03 mode, due to a lack of decltype. No change there.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214760 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 19:20:17 +00:00
Marshall Clow
f0f1bca861 Fix PR#202520 - predicate called too many times in list::remove_if. Add tests for list, forward_list, and the std::remove_if algorithm
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214736 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 17:32:25 +00:00
Dan Albert
3ab406107d Make Android's ctype_base::mask unsigned.
Keeping the regex code sane is much easier if we match the other
platforms and use an unsigned mask.



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214442 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-31 21:04:08 +00:00
Eric Fiselier
6f8821df70 [libcxx] Remove use of default function template parameters in type traits. Fixes DR20484
Summary: This patch moves the SFINAE for __is_destructor_welformed out of the function template parameters. type_traits must compile in c++03 mode since it is included in c++03 headers. 

Test Plan: No tests have been added.

Reviewers: danalbert, mclow.lists

Reviewed By: danalbert

Subscribers: K-ballo, cfe-commits

Differential Revision: http://reviews.llvm.org/D4735

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214422 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-31 19:09:26 +00:00
Marshall Clow
15269a8796 Fix numeric_limits<XXX>::is_modulo for signed arithmetic types. We were reporting true, for all arithmetic types, which is incorrect. Fix the tests which were wrong, too. This fixes PR#20158.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214371 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-31 01:18:05 +00:00
Marshall Clow
05d116eb87 std::once_flag was forward declared with _LIBCPP_TYPE_VIS decoration, and the defined with _LIBCPP_TYPE_VIS_ONLY decoration. Make them match
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214219 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-29 21:05:31 +00:00
Dan Albert
1757386944 Base regex code on char_class_type.
__get_classname() and __bracket_expression were assuming that
char_class_type was ctype_base::mask rather than using
regex_traits<_CharT>::char_class_type.

This change allows char_class_type to be defined to something other than
ctype_base::mask so that the implementation will still work for
platforms with an 8-bit ctype mask (such as Android and OpenBSD).


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214201 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-29 19:23:39 +00:00
Marshall Clow
0d1965d8c2 Fix PR#20471. Add a cast in __align_it to ensure that the bit twiddling is done at the correct size. A better solution, IMHO, would be to declare vector<bool>::__bits_per_word as 'size_type', rather than 'unsigned', but that's a possible ABI change.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214088 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-28 15:02:42 +00:00
Eric Fiselier
3ee7233c80 [libcxx] expose experimental::erased_type for all standard versions.
Summary: The polymorphic allocator implementation would greatly benefit by defining virtual functions in the dynlib instead of inline. In order to do that some types are going to have to be available outside of c++1y. This is the first step.

Reviewers: mclow.lists, EricWF

Reviewed By: EricWF

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D4554

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213889 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-24 19:17:38 +00:00
Eric Fiselier
9020c08989 D4451: Fix copy/move issues casude by __tuple_leafs's converting constructor
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213888 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-24 18:48:34 +00:00
Dan Albert
2a52a3237f Fix ctype_base::xdigit for Android.
Android's ctype implementation comes from openbsd, which for some reason
doesn't consider numbers to be hex digits.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213785 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-23 19:32:03 +00:00
Marshall Clow
de2404b16c Update the synopsis and comments with the results of LWG #2255. No code to back it up at the moment; just comments
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213768 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-23 16:58:25 +00:00
David Majnemer
cb8757aca7 Fix std::make_heap's worst case time complexity
std::make_heap is currently implemented by iteratively applying a
siftup-type algorithm.  Since sift-up is O(ln n), this gives
std::make_heap a worst case time complexity of O(n ln n).

The C++ standard mandates that std::make_heap make no more than O(3n)
comparisons, this makes our std::make_heap out of spec.

Fix this by introducing an implementation of __sift_down and switch
std::make_heap to create the heap using it.
This gives std::make_heap linear time complexity in the worst case.

This fixes PR20161.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213615 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-22 06:07:09 +00:00