1724 Commits

Author SHA1 Message Date
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
c808961618 Fix incorrect locale requirements in tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215694 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-15 05:02:05 +00:00
Eric Fiselier
31b9c44aa7 Add bare_allocator archetype that implements the minimal possible allocator interface.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215691 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-15 04:15:41 +00:00
Hans Wennborg
f3b5f0e134 [libc++] Fix the CMake build on Mac when setting MACOSX_DEPLOYMENT_TARGET=10.6
The build file was trying to use LIBCXX_VERSION, which isn't set
anywhere, and also forgot to split the 'compile_flags' list.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215463 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-12 17:32:07 +00:00
Eric Fiselier
5b34a5f584 Change two tests to be less dependant on locales.
This patch removes the use of the "%c" specifier for getting/setting times.
The semantics of this specifier differ between linux and Mac. I don't believe
the use of this specifier was important to the test.

The following tests now pass on linux.
test/input.output/iostream.format/ext.manip/get_time.pass.cpp
test/input.output/iostream.format/ext.manip/put_time.pass.cpp

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215417 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-12 00:48: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
Dan Albert
35d775d0e4 Update libc++ docs to include instructions for LIT.
Okay, so this actually does more than just that. I've rearranged most of
the information on the page to try to make it more helpful and flow
better.  Essentially, the differences between Mac and Linux, the various
ABI libraries, and in-tree versus out-of-tree builds were cluttering
things. To clean up, I've done the following:

 * Only describe the cmake process. buildit doesn't work out of the box
   on Linux, and we need to stop having duplicates for every process.
 * Use libc++abi for the default instructions. This works on the major
   platforms.
 * Describe both in-tree and out-of-tree builds. Previously it wasn't
   clear that in-tree builds were even possible for libc++.
 * Separate the documentation about using libc++ from that about
   building and testing libc++.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215358 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-11 15:12:46 +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
e48b0c40ad fix stdio.h test to reflect removal of ::gets in c++14
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215329 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-10 22:39:11 +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
David Blaikie
ddcbcd6b5e Revert "Add some extra checks to the MoveOnly test class to ensure it is not constructed or assigned from in a moved-from state."
Premature commit due to misreading CR feedback.

This reverts commit r215301.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215302 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-09 22:42:19 +00:00
David Blaikie
5eb396a8e6 Add some extra checks to the MoveOnly test class to ensure it is not constructed or assigned from in a moved-from state.
Some tests were constructing it with 0, so use -1 as the invalid state
instead.

Reviewers: Marshall Clow

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215301 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-09 22:35:47 +00:00
Eric Fiselier
ae39e4f795 fix copy and pasted comment in test
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215276 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-09 02:43:16 +00:00
Eric Fiselier
2af66e9851 Mark math.h and cmath tests as xfail on linux.
These tests were marked as failing because the libc implementation does not
use the proper return type on certain math functions. There is other weirdness
that prevents us from defining our own version of these functions.

The failing tests in cmake were separated into their own files so that the rest
failures in the rest of the cmath tests were not hidden.

This was not done for the math.h test since we don't actually supply math.h


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215275 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-09 02:39:03 +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
Viktor Kutuzov
f2e8c04540 Fix re-building in-tree libc++ against in-tree libc++abi
Differential Revision: http://reviews.llvm.org/D4805


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215186 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-08 06:53:30 +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
Dan Albert
c09c2865b9 Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214768 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 20:27:45 +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
Dan Albert
b4ed5ca01e Add locales to available_features for tests.
Linux has a lot of failures caused by not having support for certain
locales. Since these come out as a lot of noise in the test results,
have lit.cfg detect the presence of the various locales used in the
tests and add them to config.available_features as locale.LOCALE_NAME.

This patch also adds REQUIRES: locale.REQUIRED_LOCALE to every test that
I saw failing in this manner. We probably need to add more for all the
tests requiring en_US.UTF-8, but we can do that on an as-needed basis.

One thing that concerns me is how many tests get skipped because of
missing locales (especially in regex/). We should make a point of
splitting up any tests that test default behavior _and_ behavior under a
given locale so that we aren't losing coverage for default behavior.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214753 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 18:44:48 +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
a1d32fcd0e Obey LLVM_LIBDIR_SUFFIX.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214726 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 16:13:32 +00:00
Eric Fiselier
32d4b65d56 Adding ABI information to linux test results
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214484 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-01 06:30:18 +00:00
Eric Fiselier
b127e600c4 Update information about compiler used during linux tests and reformat run information.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214483 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-01 06:27:40 +00:00
Eric Fiselier
c72b49ba0c Update linux test results file
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214474 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-01 01:59:09 +00:00
Eric Fiselier
d3d01eac01 Change lit.cfg to allow whitespace before comments
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214454 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-31 22:56:52 +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
c5eb69601b Add test cases for creating atomic types for trivially copyable types.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214406 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-31 15:20:48 +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
Alexey Samsonov
e515bbda1b Fix linking with just-built libc++abi (added in r214037).
Pass target name ("cxxabi") to target_link_libraries(cxx ...) to ensure
that linker is able to locate just-built libc++abi in the build tree,
instead of relying on "-lc++abi" linker flag.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214114 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-28 19:25:44 +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
Dan Albert
0c6d1a88de Better defaults for in-tree libc++ with cmake.
This will detect if you are building libcxx in-tree and libcxxabi is
available.  If so, it will default to using the in-tree libcxxabi by
setting LIBCXX_CXX_ABI to "libcxxabi", LIBCXX_LIBCXXABI_INCLUDE_PATHS to
"${CMAKE_SOURCE_DIR}/projects/libcxxabi/include" and will add "cxxabi"
as a proper dependency.

Patch by Russell Harmon.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214037 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-26 23:08:33 +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
Eric Fiselier
08b8506930 test commit
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213887 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-24 18:41:56 +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
Dan Albert
cc160f5c15 Fix classic_locale for Android.
Android's classic_locale begins at _ctype_ + 1.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213672 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-22 17:32:56 +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
Marshall Clow
db5e54d2a3 make the same change as in 213546 for vector<bool>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213547 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-21 15:15:15 +00:00
Marshall Clow
3c2eac62c3 In response to bug #20362, change the order of operations in vector move assignment so that if the allocator move assignment throws, we aren't left with two objects pointing at the same memory. This is not a complete fix; I am unconvinced that a complete fix is possible. With this change in place, we will leak the old contents of the vector. LWG issue #2106, when adopted, will make this problem illegal. Thanks to Thomas Koeppe for the report and analysis.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213546 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-21 15:11:13 +00:00
Marshall Clow
d5549ccac1 Fix bug #20335 - memory leak when move-constructing a string with unequal allocator. Thanks to Thomas Koeppe for the report
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213269 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-17 15:32:20 +00:00
Eric Fiselier
b1a40264dc [libcxx] Add <experimental/utility> header for LFTS.
Summary:
This patch adds the `<experimental/utility>` header as specified in the latest draft of the library fundamentals TS.

`<experimental/utility>` only contains `class erased_type`. 

This patch also updates the documentation to list the `erased_type` class as "initial implementation complete".

Test Plan:
Three test cases where added:

1. Test that `_LIBCPP_VERSION` is defined.
2. Test that `<utility>` has been included.
3. Test that `erased_type` is in the correct namespace and is constexpr default constructible.

Reviewers: mclow.lists

Reviewed By: mclow.lists

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213226 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-17 05:31:31 +00:00
Eric Fiselier
8fcc27286f Change _LIBCXX_CONSTEXPR_AFTER_CXX11 to check for c++14 constexpr rules
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213225 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-17 05:16:18 +00:00
Eric Fiselier
9b2b60cab8 Test commit: Reverting whitespace changes
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213223 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-17 05:10:03 +00:00