Commit Graph

244 Commits

Author SHA1 Message Date
Eric Fiselier
22dff5382a Implement n4169 - Add invoke function template
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@242195 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-14 20:16:15 +00:00
Marshall Clow
92679178a5 Mark LWG2308 as complete; fix link. No code change necessary.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@242189 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-14 20:07:45 +00:00
Marshall Clow
0ce05a9f86 The rest of N4279 and LWG#2464 - for unordered_map
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@241555 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-07 05:45:35 +00:00
Marshall Clow
0c5dd15e09 Mark LWG#2420 as complete. Eric did this in r228705.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@241491 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-06 19:36:44 +00:00
Marshall Clow
5a426e50d0 Mark N4508, LWG#2407, and LWG#2470 as complete. I don't see that 2470 requires any changes to the library.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@241111 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-30 20:06:00 +00:00
Marshall Clow
f3c8fb22ec Mark LWG#2266 as complete. This is a tightening up the wording; no code changes required.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@241064 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-30 13:32:08 +00:00
Marshall Clow
715339ab55 Mark LWG#2439 as complete. This is a tightening up the wording; no code changes required.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@241013 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-29 22:27:30 +00:00
Marshall Clow
4428584a88 Mark a couple of features as 'in progress'
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@240456 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-23 20:48:55 +00:00
Eric Fiselier
bc1e44d14e LWG2442: call_once() shouldn't DECAY_COPY(). Patch from K-Ballo.
This patch fixes LWG issue 2422 by removing the DECAY_COPY from call once.
The review can be found here: http://reviews.llvm.org/D10191


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@239654 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-13 02:23:00 +00:00
Marshall Clow
f0324bcaa1 Implement the first part of N4258 - allocator_traits<X>::is_always_equal. Also fixes PR#23723
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@238848 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-02 16:34:03 +00:00
Marshall Clow
8731c5da46 Implement uncaught_exceptions() using the newly added hooks in libc++abi, when available
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@238846 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-02 15:33:38 +00:00
Marshall Clow
14c616af09 Add N4259 to the list of papers from Lenexa. Update links to point at public repos.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@238340 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-27 17:19:40 +00:00
Marshall Clow
b5b66923e3 Add tests to ensure that string/vector/array have contiguous iterators - which they did. Mark N4284 as complete
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@238233 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-26 18:57:27 +00:00
Marshall Clow
ecec10efd9 Mark N4366 as complete. libc++ has done this since 2012
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@238207 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-26 14:58:05 +00:00
Marshall Clow
5dce73dd6e Implement LWG2433: uninitialized_copy()/etc. should tolerate overloaded operator&
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237699 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-19 15:01:48 +00:00
Marshall Clow
e7b12e343b Mark N4510 as complete; we already do this
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237638 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-18 23:25:09 +00:00
Marshall Clow
e62560a9b6 Add support for N4389 - std::bool_constant
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237636 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-18 23:21:06 +00:00
Marshall Clow
bc9ccda541 Update C++1z status; mark issues 2059,2369,2415,2454 and 2458 as 'complete'. I have committed patches for all of them
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237606 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-18 19:52:49 +00:00
Marshall Clow
c7c52f913d Update C++1z status; mark all the issues that require no library change as 'complete'
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237604 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-18 19:50:05 +00:00
Marshall Clow
de76389219 Update C++1z status with issues and papers from Lenexa
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237596 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-18 19:01:11 +00:00
Evgeniy Stepanov
56a8c6438a Implement std::experimental::sample.
Following specification in "C++ Extensions for Library Fundamentals":
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4480.html#alg.random.sample



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237264 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-13 16:55:41 +00:00
Eric Fiselier
a5ad9ac48b Document a known build issue on OS X 10.8 and later.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237205 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-12 22:55:30 +00:00
Jonathan Roelofs
d20675f970 Fix typo in www. NFC
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@236902 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-08 21:11:49 +00:00
Marshall Clow
4b23a3324a Found a Urbana paper that has library bits
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@236356 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-01 22:14:35 +00:00
Marshall Clow
3e879e3d3f Mark LWG#2387 as complete. No code changes needed
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@236236 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-30 15:19:44 +00:00
Marshall Clow
7ceff4ef43 Removed 'complete' from 2408; updated status
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@236025 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-28 19:35:36 +00:00
Marshall Clow
8f916f1c7c Update C++17 status; mark issues 2170, 2377, and 2408 as complete. We already do these; no code changes necessary.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@235992 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-28 14:26:29 +00:00
Eric Fiselier
02c24c1d3b [libcxx] Unify LIBCXX_<ABI-Name>_INCLUDE_PATHS to be LIBCXX_CXX_ABI_INCLUDE_PATHS
Summary:
Clean up all the different possible CMake options for specifying the ABI include paths into one CMake option named `LIBCXX_CXX_ABI_INCLUDE_PATHS`. 
The documentation has been updated to reflect this change.

For the next week I have added explicit errors if any of the old flags is used. These errors inform users of the change and the new option to use.

Before committing the change I will announce this change on cfe-dev.

Reviewers: danalbert, mclow.lists

Reviewed By: danalbert, mclow.lists

Subscribers: jroelofs, cbergstrom, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@232762 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-19 20:59:45 +00:00
Eric Fiselier
13858ee056 [libcxx] Add <experimental/tuple> header for LFTS.
Summary:
This patch adds the `<experimental/tuple>` header (almost) as specified in the latest draft of the library fundamentals TS.

The main changes in this patch are:

1. Added variable template `tuple_size_v`
2. Added function `apply(Func &&, Tuple &&)`.
3. Changed `__invoke` to be `_LIBCPP_CONSTEXPR_AFTER_CXX11`.

The `apply(...)` implementation uses `__invoke` to invoke the given function. `__invoke` already provides the required functionality. Using `__invoke` also allows `apply` to be used on pointers to member function/objects as an extension. In order to facilitate this `__invoke` has to be marked `constexpr`. 



Test Plan:
Each new feature was tested. 

The test cases for `tuple_size_v` are as follows:
1. tuple_size_v.pass.cpp
  - Check `tuple_size_v` on cv qualified tuples, pairs and arrays.
2. tuple_size_v.fail.cpp
  - Test on reference type.
3. tuple_size_v_2.fail.cpp
  - Test on non-tuple
4. tuple_size_v_3.fail.cpp
  - Test on pointer type.

The test cases for tuple.apply are as follows:

1. arg_type.pass.cpp
   - Ensure that ref/pointer/cv qualified types are properly passed.
2. constexpr_types.pass.cpp
   - Ensure constexpr evaluation of apply is possible for `tuple` and `pair`.
3. extended_types.pass.cpp
   - Test apply on function types permitted by extension.
4. large_arity.pass.cpp
   - Test that apply can evaluated on tuples and arrays with large sizes.
5. ref_qualifiers.pass.cpp
   - Test that apply respects ref qualified functions.
6. return_type.pass.cpp
   - Test that apply returns the proper type.
7. types.pass.cpp
   - Test apply on function types as required by LFTS.

Reviewers: mclow.lists

Reviewed By: mclow.lists

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@232515 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-17 18:28:14 +00:00
Eric Fiselier
cc3ea928ae [libcxx] Tired of colorless compile errors? Enable color diagnostics today!
Summary:
This patch adds a lit option to enable color diagnostics when either `--param=color_diagnostics` is passed to LIT or `LIBCXX_COLOR_DIAGNOSTICS` is present in the environment.

My only concern with this patch is that GCC and Clang take different flags and that only GCC 4.9 and greater support `-fdiagnostics-color=always`

Does anybody have objections to this going in?

Reviewers: jroelofs, danalbert

Reviewed By: danalbert

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@229707 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-18 17:39:45 +00:00
Eric Fiselier
3f370b0a55 Enable testing with _LIBCPP_DEBUG and fix bad assertions in string_view.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@229698 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-18 17:00:31 +00:00
Eric Fiselier
40f8695e54 Mark <experimental/system_error> as complete
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@227974 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-03 16:04:45 +00:00
Eric Fiselier
9e0197634f Update LFTS status page
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@227862 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-02 21:10:21 +00:00
Dan Albert
e3eda9d453 Update web page to direct patches to Phabricator.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@227629 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-30 22:33:41 +00:00
Eric Fiselier
dd7a4836e3 [libcxx] Allow use of ShTest in libc++ tests along with other changes.
Summary:
This patch allows the use of LIT's ShTest format in the libc++ test suite. ShTests have the suffix '.sh.cpp'. It also introduces a series of other changes. These changes are:

- More functionality including parsing test metadata has been moved into LIT.
- LibcxxTestFormat now supports multi-part suffixes.
- the `CXXCompiler` functionality has been used to shrink the size of LibcxxTestFormat. 
- The recursive loading of the site config has been turned into `libcxx.test.config.loadSiteConfig` so it can be used with libc++abi.
- Temporary files are now created in the build directory of libc++. This follows how it is down in ShTest.
- `not.py` was added as a utility executable that mirrors the functionality of LLVM's `not` executable. 
- The first ShTest test was added under test/libcxx/double_include.sh.cpp


Reviewers: jroelofs, danalbert

Reviewed By: danalbert

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@226844 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-22 18:05:58 +00:00
Eric Fiselier
ae8bc6b3ef Add 'no_default_flags' option for turning off all default test compile and link flags.
When 'no_default_flags' is true only flags passed using '--param=compile_flags'
and '--param=link_flags' will be used when compiling the tests. This option
can be used to run the test suite against libstdc++ and helps with all
unusual test suite configurations.

NOTE: sanitizer flags are still added when '--param=use_sanitizer' is used even
if '--param=no_default_flags' is given.




git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@226322 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-16 21:22:08 +00:00
Eric Fiselier
71dc14e864 [libcxx] Add numerous options to libc++ LIT test suite configuration.
Summary:
In order to fully replace the testit script we need to update LIT so it provides the same functionality.
This patch adds a number of different configuration options to LIT to do that. It also adds documentation for all of the command line parameters that LIT supports.

Generic options added:
- `libcxx_headers`
- `libcxx_library`
- `compile_flags`


Generic options modified:
- `link_flags`: Changed from overriding the default args to adding extra args instead (to match compile flags)
- `use_sanitizer`: Renamed from `llvm_use_sanitizer`


Please see the added documentation for more information about the switches. As for the actual documentation I'm not sure if it should be kept in libc++ forever since it adds an undue maintenance burden, but I think it should be added for the time being while the changes are new. I'm verify unskilled with HTML so if the documentation needs any changes please let me know.

Hopefully this will kill testit.



Reviewers: jroelofs, mclow.lists, danalbert

Reviewed By: danalbert

Subscribers: alexfh, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@224728 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-22 20:49:45 +00:00
Eric Fiselier
4778eed34f [libcxx] Teach libcxx's lit configuration new ways to find lit.site.cfg
Summary:
Currently to run tests in tree you need to symlink the lit.site.cfg file generated by the cmake build into the source tree, and teach your VCS to ignore it.

This allows the user to specify where to find the lit.site.cfg file two different ways:
* lit_site_config lit parameter
* LIT_SITE_CONFIG enviroment variable. 

example usage:
```
lit -sv --param=libcxx_site_config=path/to/libcxx-build/test/lit.site.cfg path/to/tests
```
Or
```
export LIBCXX_SITE_CONFIG=path/to/libcxx-build/test/lit.site.cfg
lit -sv path/to/tests
```
The command line parameter will override the environment variable. 
If neither options are present a warning is issued and the `lit.cfg` file is loaded directly. 


Reviewers: mclow.lists, jroelofs, danalbert

Reviewed By: danalbert

Subscribers: ddunbar, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@224671 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-20 03:16:55 +00:00
Marshall Clow
e3e7054f48 Implement LWG 2217 - operator==(sub_match, string) slices on embedded '\0's
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@224292 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-15 23:57:56 +00:00
Eric Fiselier
453a50040b Update information on where to find buildbots. Remove dead buildbot links.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@223848 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-09 22:53:21 +00:00
Marshall Clow
03c6791dc6 Implement N4280 - 'Non-member size() and more'
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222378 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-19 19:43:23 +00:00
Marshall Clow
ab5bd89de1 Added entries for bugs 2118 and 2306, which were closed in Urbana
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222361 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-19 15:59:16 +00:00
Marshall Clow
b1d7c713b4 Marked LWG 2399 as complete. I committed a test for this earlier today.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222251 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-18 20:37:47 +00:00
Marshall Clow
9a4997ba29 Update status of LWG issues 2340, 2396 and 2401. In all three cases, these are things that we already do.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222240 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-18 17:35:16 +00:00
Marshall Clow
4b3ca8c249 Implement LWG2400 - 'shared_ptr's get_deleter() should use addressof()', and add tests. Mark LWG2400 and LWG2404 as complete
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222161 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-17 19:05:50 +00:00
Marshall Clow
88aae920ef Implement void_t from N3911. Add a private version for use in the library before C++1z. Update the 1z status page, marking a bunch of issues that don't require library changes as complete (2129, 2212, 2230, 2233, 2325, 2365, 2376)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222138 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-17 15:50:08 +00:00
Marshall Clow
c7b233d1de Fixed a typo in a paper name: 4190 --> N4190
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@221690 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-11 16:45:50 +00:00
Marshall Clow
1e895c1fd7 Update status pages for C++1z
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@221601 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-10 15:43:20 +00:00
Eric Fiselier
499b1ad671 Remove dead buildbot link
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@220260 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-21 02:46:31 +00:00
Eric Fiselier
cb7e32c290 [libcxx] Redo adding support for building and testing with an ABI library not along linker paths
Summary:
This is the second attempt at allowing for the use of libraries that the linker cannot find. The first attempt used `CMAKE_LIBRARY_PATH` and `find_library` to select which ABI library should be used. There were a number of problems with this approach:

- `find_library` didn't work with cmake targets (ie in-tree libcxxabi build)
- It wasn't always possible to determine where `find_library` actually found your library.
- `target_link_libraries` inserted the path of the ABI library into libc++'s RPATH when `find_library` was used.
- Linking libc++ and it's ABI library is a special case. It's a lot easier to keep it simple. 

After discussion with @cbergstrum a new approach was decided upon.
This patch achieve the same ends by simply using `LIBCXX_CXX_ABI_LIBRARY_PATH` to specify where to find the library (if the linker won't find it). When this variable is defined it is simply added as a library search path when linking libc++. It is a lot easier to duplicate this behavior in LIT. It also prevents libc++ from being linked with an RPATH.






Reviewers: mclow.lists, cbergstrom, chandlerc, danalbert

Reviewed By: chandlerc, danalbert

Subscribers: chandlerc, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@220157 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-19 00:42:41 +00:00