summaryrefslogtreecommitdiffstats
path: root/libcxx
Commit message (Collapse)AuthorAgeFilesLines
* [libc++] Fix PR20084 - std::is_function<void() const> failed.Eric Fiselier2015-02-182-15/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch introduces some black magic to detect const and volatile qualified function types such as `void () const`. The patch works in the following way: We first rule out any type that satisfies on of the following. These restrictions are important so that the test below works properly. * `is_class<_Tp>::value` * `is_union<_Tp>::value` * `is_void<_Tp>::value` * `is_reference<_Tp>::value` * `__is_nullptr_t<_Tp>::value` If none of the above is true we perform overload resolution on `__source<_Tp>(0)` to determine the return type. * If `_Tp&` is well-formed we select `_Tp& __source(int)`. `_Tp&` is only ill formed for cv void types and cv/ref qualified function types. * Otherwise we select `__dummy_type __source(...)`. Since we know `_Tp` cannot be void then it must be a function type. let `R` be the returned from `__source<_Tp>(0)`. We perform overload resolution on `__test<_Tp>(R)`. * If `R` is `__dummy_type` we call `true_type __test(__dummy_type)`. * if `R` is `_Tp&` and `_Tp&` decays to `_Tp*` we call `true_type __test(_Tp*)`. Only references to function types decay to a pointer of the same type. * In all other cases we call `false_type __test(...)`. `__source<_Tp>(0)` will try and form `_Tp&` in the return type. if `_Tp&` is not well formed the return type of `__source<_Tp>(0)` will be dummy type. `_Tp&` is only ill-formed for cv/ref qualified function types (and void which is dealt with elsewhere). This fixes PR20084 - http://llvm.org/bugs/show_bug.cgi?id=20084 Reviewers: rsmith, K-ballo, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7573 llvm-svn: 229696
* [libcxx] Add <experimental/ratio>Eric Fiselier2015-02-1711-0/+481
| | | | | | | | | | | | | | | | | Summary: This patch is pretty simple. It just adds the _v traits from <ratio>. The draft can be found here. Reviewers: jroelofs, K-ballo, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7351 llvm-svn: 229509
* Implement C++14's sized deallocation functions, since there are no longer ↵Larisse Voufo2015-02-152-1/+39
| | | | | | implicitly defined by clang, as of r229241. llvm-svn: 229281
* Handle function name conflicts in _LIBCPP_MSVCRT modeSaleem Abdulrasool2015-02-138-0/+28
| | | | | | | | | | Visual Studio's SAL extension uses a macro named __deallocate. This macro is used pervasively, and gets included through various different ways. This conflicts with the similarly named interfaces in libc++. Introduce a undef header similar to __undef_min_max to handle this. This fixes a number of errors due to the macro replacing the function name. llvm-svn: 229162
* cctype: tweak inclusions for _LIBCPP_MSVCRT caseSaleem Abdulrasool2015-02-131-0/+1
| | | | | | | | cctype uses ctype functions such as isblank. However, when building against msvcrt, this is provided by the support header. Include the support header if building for Windows to ensure that the definition is properly visible. llvm-svn: 229161
* Rooting out more undefined behavior in char_traits.Marshall Clow2015-02-1317-8/+32
| | | | llvm-svn: 229119
* Appease buildbotsJonathan Roelofs2015-02-131-2/+2
| | | | llvm-svn: 229114
* Modularize TargetInfo discovery in the lit configJonathan Roelofs2015-02-134-29/+98
| | | | | | | | | | When the remote execution patch lands, this will allow us to drop in a replacement TargetInfo object for locale support discovery, alleviating the assumption that host==target. http://reviews.llvm.org/D7601 llvm-svn: 229111
* Fix error checking in get_temp_file_name().Dan Albert2015-02-131-4/+7
| | | | | | | | | | Checking errno without first checking that the call failed means that if some other call prior to mkstemp failed with EINVAL prior to this, the assert would fire even if mkstemp succeeded. If something failed with EEXIST, it would go in to an infinite loop. Change-Id: I3f140a3e15fe08664a38a8c9a950c4ed547eb481 llvm-svn: 229035
* Move the test for zero-length into the char_traits (from string_view). Add ↵Marshall Clow2015-02-126-3/+7
| | | | | | tests to char_traits specializations llvm-svn: 228981
* Fixed a problem that UBSAN found, where we were calling memcmp(null, p, 0) - ↵Marshall Clow2015-02-121-1/+1
| | | | | | which is undefined behavior llvm-svn: 228952
* Remove undefined behavior from test; specifically, compare(NULL, XXX, 0)Marshall Clow2015-02-121-1/+1
| | | | llvm-svn: 228928
* Remove undefined behavior from test; specifically, compare(NULL, XXX, 0). ↵Marshall Clow2015-02-121-2/+1
| | | | | | Thanks to Eric for the catch llvm-svn: 228927
* Change some template parameter names from _C and _N to _Cont and _Sz. No ↵Marshall Clow2015-02-111-14/+14
| | | | | | functionality change. llvm-svn: 228843
* Need to wrap a bit in an ifdef, since there are no initializer_lists in C++03Marshall Clow2015-02-111-0/+2
| | | | llvm-svn: 228840
* Fix PR 22541: When values are equal, minmax should return the rightmost one ↵Marshall Clow2015-02-112-6/+41
| | | | | | in the initializer_list llvm-svn: 228839
* Update double_include.sh.cpp for new headers.Eric Fiselier2015-02-111-0/+2
| | | | llvm-svn: 228784
* libc++ tests: wait_until.pass test sporadically fails (bug 21998)Eric Fiselier2015-02-112-194/+258
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Hello Howard, While running the libc++ tests on our ARM boards, we encounter sporadic failures of the two tests: test/std/thread/futures/futures.shared_future/wait_until.pass.cpp test/std/thread/futures/futures.unique_future/wait_until.pass.cpp The worker thread might not finish yet when the main thread checks its result. I filed the bug 21998 for this case: http://llvm.org/bugs/show_bug.cgi?id=21998 Would you be able to review this please? Thank you. Oleg Reviewers: howard.hinnant, mclow.lists, danalbert, jroelofs, EricWF Reviewed By: jroelofs, EricWF Subscribers: EricWF, mclow.lists, aemerson, llvm-commits Differential Revision: http://reviews.llvm.org/D6750 llvm-svn: 228783
* Make convert_to_integral.pass.cpp more platform generic.Eric Fiselier2015-02-111-3/+5
| | | | | | Don't depend on the underlying types of enums and wchar_t. llvm-svn: 228781
* Remove default definition for libcxx_obj_dir because it doesn't make senseEric Fiselier2015-02-111-6/+6
| | | | llvm-svn: 228778
* Make ABI header not found a warning, not an error.Dan Albert2015-02-101-1/+1
| | | | | | | | | | Since we've added a new header to libc++abi (__cxxabi_config.h), we now have a case where we might not always find all the ABI headers: building libc++ against the system's libc++abi on Darwin. Since this isn't actually a fatal error, degrade it to a warning. llvm-svn: 228720
* Add pragma system header to some experimental headers and add newlines to files.Eric Fiselier2015-02-107-4/+23
| | | | llvm-svn: 228712
* Fix more issues exposed by -pedantic-errors in c++03 modeEric Fiselier2015-02-1029-28/+30
| | | | llvm-svn: 228711
* Remove use of zero length arrays in tests. Get tests passing with ↵Eric Fiselier2015-02-108-228/+58
| | | | | | -pedantic-errors llvm-svn: 228706
* [libcxx] Fix PR 22468 - std::function<void()> does not accept ↵Eric Fiselier2015-02-108-6/+169
| | | | | | | | | | | | | | | | | | | non-void-returning functions Summary: The bug can be found here: http://llvm.org/bugs/show_bug.cgi?id=22468 `__invoke_void_return_wrapper` is needed to properly handle calling a function that returns a value but where the std::function return type is void. Without this '-Wsystem-headers' will cause `function::operator()(...)` to not compile. Reviewers: eugenis, K-ballo, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7444 llvm-svn: 228705
* [libcxx] Properly convert the count arguments to the *_n algorithms before use.Eric Fiselier2015-02-109-17/+219
| | | | | | | | | | | | | | | | | Summary: The requirement on the `Size` type passed to *_n algorithms is that it is convertible to an integral type. This means we can't use a variable of type `Size` directly. Instead we need to convert it to an integral type first. The problem is finding out what integral type to convert it to. `__convert_to_integral` figures out what integral type to convert it to and performs the conversion, It also promotes the resulting integral type so that it is at least as big as an integer. `__convert_to_integral` also has a special case for converting enums. This should only work on non-scoped enumerations because it does not apply an explicit conversion from the enum to its underlying type. Reviewers: chandlerc, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7449 llvm-svn: 228704
* Fix use of C++11 extensions in C++03 code.Eric Fiselier2015-02-103-10/+12
| | | | llvm-svn: 228698
* Add __cxxabi_config.h to libcxxabi headers.Dan Albert2015-02-051-2/+2
| | | | llvm-svn: 228364
* Remove use of _[A-Z] identifiers and poison them to detect usageEric Fiselier2015-02-054-21/+54
| | | | llvm-svn: 228353
* Get tests running with warnings. Fix warnings in headers and testsEric Fiselier2015-02-0526-21/+66
| | | | llvm-svn: 228344
* Fix unused private field warning in stdexcept after r207695.Dimitry Andric2015-02-052-1/+7
| | | | | | | | | | | | | | Add a new _LIBCPP_UNUSED define in __config, which can be used to indicate explicitly unused items, and apply it to the __imp__ field of __libcpp_refstring. Somebody who knows about Microsoft C++ and IBM C++ should fill in the unused attribute syntax appropriate for those compilers, if there is any. Differential Revision: http://reviews.llvm.org/D6836 llvm-svn: 228281
* Test commit: remove whitespace at EOL.Dimitry Andric2015-02-051-1/+1
| | | | llvm-svn: 228280
* Fix some -Wundef issues.Dan Albert2015-02-051-2/+2
| | | | llvm-svn: 228266
* libc++: remove unused variable in random_device::operator()()JF Bastien2015-02-041-1/+0
| | | | | | | | | | Reviewers: jvoung Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7416 llvm-svn: 228183
* add platform to LIT's available featuresEric Fiselier2015-02-031-0/+8
| | | | llvm-svn: 228071
* Fix alignment in tests for readability.Eric Fiselier2015-02-032-4/+4
| | | | llvm-svn: 228028
* Don't assume LIT_EXECUTABLE points to a Python script, take 2Greg Fitzgerald2015-02-031-14/+20
| | | | | | | | | | | | | | | Before this patch, the CMake build assumed LIT_EXECUTABLE pointed to a Python script, not an executable. If you were to pass in an executable, such as the result of py2exe on lit.py, the build would fall over. With this patch, the CMake build assumes LIT_EXECUTABLE is an executable. You can continue setting it to lit.py, but it will now use its shebang to find a Python interpreter. Differential Revision: http://reviews.llvm.org/D7315 llvm-svn: 228005
* Revert "Don't assume LIT_EXECUTABLE points to a Python script"Greg Fitzgerald2015-02-031-20/+14
| | | | | | This reverts r227994 llvm-svn: 227996
* Don't assume LIT_EXECUTABLE points to a Python scriptGreg Fitzgerald2015-02-031-14/+20
| | | | | | | | | | | | | | | Before this patch, the CMake build assumed LIT_EXECUTABLE pointed to a Python script, not an executable. If you were to pass in an executable, such as the result of py2exe on lit.py, the build would fall over. With this patch, the CMake build assumes LIT_EXECUTABLE is an executable. You can continue setting it to lit.py, but it will now use its shebang to find a Python interpreter. Differential Revision: http://reviews.llvm.org/D7315 llvm-svn: 227994
* Mark <experimental/system_error> as completeEric Fiselier2015-02-031-1/+1
| | | | llvm-svn: 227974
* [libcxx] Add <experimental/system_error>Eric Fiselier2015-02-036-0/+197
| | | | | | | | | | | | | | | | | | Summary: This patch just adds the variable templates in <experimental/system_error>. see: https://rawgit.com/cplusplus/fundamentals-ts/v1/fundamentals-ts.html#syserror Reviewers: jroelofs, danalbert, K-ballo, mclow.lists Reviewed By: mclow.lists Subscribers: chandlerc, cfe-commits Differential Revision: http://reviews.llvm.org/D7353 llvm-svn: 227973
* Revert: Revert r227804: Use fseek/ftell instead of fseeko/ftello when Newlib ↵Jonathan Roelofs2015-02-032-3/+8
| | | | | | | | is the libc EricWF has updated the compilers on his buildbots. Hopefully they won't crash now. llvm-svn: 227971
* Rename pow2 functions in __hash_table to reflect that they are hash specificEric Fiselier2015-02-021-8/+8
| | | | llvm-svn: 227866
* Update LFTS status pageEric Fiselier2015-02-021-9/+8
| | | | llvm-svn: 227862
* [libcxx] Add <experimental/chrono>Eric Fiselier2015-02-026-0/+169
| | | | | | | | | | | | | | | | | Summary: This patch adds <experimental/chrono> which only contains a single variable template. See: https://rawgit.com/cplusplus/fundamentals-ts/v1/fundamentals-ts.html#time Reviewers: jroelofs, danalbert, K-ballo, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7352 llvm-svn: 227860
* Fix PR#22433. The algorithm is_partitioned was testing an item in the middle ↵Marshall Clow2015-02-022-5/+27
| | | | | | of the sequence twice. llvm-svn: 227824
* Fix PR#22427. The implementation of inplace_merge had a \'small data set\' ↵Marshall Clow2015-02-023-16/+15
| | | | | | optimization; if either half of the merge was small (i.e, less than 9 items), it did an inplace merge rather than allocating a buffer and doing a faster/smarter merge. However, this failed to satisfy the complexity requirements in the standard. Remove that code. Add tests to check the complexity, and add the same tests for std::merge, since we are in that section of the test suite anyway. llvm-svn: 227811
* Reorder a couple of operations in inplace_merge so that we can meet the ↵Marshall Clow2015-02-021-5/+3
| | | | | | complexity guidelines mandated by the standard. References PR22427 llvm-svn: 227808
* Revert r227804: Use fseek/ftell instead of fseeko/ftello when Newlib is the libcJonathan Roelofs2015-02-022-8/+3
| | | | | | This change is causing a driver crash on libcxx-libcxxabi-x86_64-linux-ubuntu-msan llvm-svn: 227806
* Use fseek/ftell instead of fseeko/ftello when Newlib is the libcJonathan Roelofs2015-02-022-3/+8
| | | | | | http://reviews.llvm.org/D6626 llvm-svn: 227804
OpenPOWER on IntegriCloud