| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
implicitly defined by clang, as of r229241.
llvm-svn: 229281
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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 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
 | 
| | 
| 
| 
|  | 
llvm-svn: 229119
 | 
| | 
| 
| 
|  | 
llvm-svn: 229114
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
tests to char_traits specializations
llvm-svn: 228981
 | 
| | 
| 
| 
| 
| 
|  | 
which is undefined behavior
llvm-svn: 228952
 | 
| | 
| 
| 
|  | 
llvm-svn: 228928
 | 
| | 
| 
| 
| 
| 
|  | 
Thanks to Eric for the catch
llvm-svn: 228927
 | 
| | 
| 
| 
| 
| 
|  | 
functionality change.
llvm-svn: 228843
 | 
| | 
| 
| 
|  | 
llvm-svn: 228840
 | 
| | 
| 
| 
| 
| 
|  | 
in the initializer_list
llvm-svn: 228839
 | 
| | 
| 
| 
|  | 
llvm-svn: 228784
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
Don't depend on the underlying types of enums and wchar_t.
llvm-svn: 228781
 | 
| | 
| 
| 
|  | 
llvm-svn: 228778
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 228712
 | 
| | 
| 
| 
|  | 
llvm-svn: 228711
 | 
| | 
| 
| 
| 
| 
|  | 
-pedantic-errors
llvm-svn: 228706
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 228698
 | 
| | 
| 
| 
|  | 
llvm-svn: 228364
 | 
| | 
| 
| 
|  | 
llvm-svn: 228353
 | 
| | 
| 
| 
|  | 
llvm-svn: 228344
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 228280
 | 
| | 
| 
| 
|  | 
llvm-svn: 228266
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Reviewers: jvoung
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D7416
llvm-svn: 228183
 | 
| | 
| 
| 
|  | 
llvm-svn: 228071
 | 
| | 
| 
| 
|  | 
llvm-svn: 228028
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
This reverts r227994
llvm-svn: 227996
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 227974
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
is the libc
EricWF has updated the compilers on his buildbots. Hopefully they won't crash now.
llvm-svn: 227971
 | 
| | 
| 
| 
|  | 
llvm-svn: 227866
 | 
| | 
| 
| 
|  | 
llvm-svn: 227862
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
of the sequence twice.
llvm-svn: 227824
 | 
| | 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
complexity guidelines mandated by the standard. References PR22427
llvm-svn: 227808
 | 
| | 
| 
| 
| 
| 
|  | 
This change is causing a driver crash on libcxx-libcxxabi-x86_64-linux-ubuntu-msan
llvm-svn: 227806
 | 
| | 
| 
| 
| 
| 
|  | 
http://reviews.llvm.org/D6626
llvm-svn: 227804
 |