Commit Graph

3306 Commits

Author SHA1 Message Date
Eric Fiselier
4ca4e5038b Implement LWG2664 and update its status
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284310 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-15 21:29:44 +00:00
Eric Fiselier
9f39437989 Update the status of issues
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284309 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-15 20:58:51 +00:00
Eric Fiselier
9ffd1d56b4 Prevent new/delete replacement tests from being optimized away.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284289 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 22:47:08 +00:00
Eric Fiselier
e630058e90 Clarify XFAIL comments
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284282 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 21:30:35 +00:00
Asiri Rathnayake
4f2c83f055 [libcxx] Improve the gcc workaround for the missing __has_include macro.
NFC.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284237 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 13:56:58 +00:00
Asiri Rathnayake
7250d3341e [libcxx] Do not declare the thread api when __external_threading is present
This fixes a small omission where even when __external_threading is provided,
we attempt to declare a pthread based threading API. Instead, we should leave
out everything for the __external_threading header to take care of.

The __threading_support header provides a proof-of-concept externally threaded
libc++ variant when _LIBCPP_HAS_THREAD_API_EXTERNAL is defined. But if the
__external_threading header is present, we should exclude all of that POC stuff.

Reviewers: EricWF

Differential revision: https://reviews.llvm.org/D25468

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284232 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 13:00:07 +00:00
Eric Fiselier
29026ad78a Disable Modules when building the libc++ sources.
Libc++ will not build with modules enabled. In order to support an in-tree
libc++ when LLVM_ENABLE_MODULES is ON we need to explicitly disable the feature.

Unfortunately the libc++ sources are fundamentally non-modular. For example
iostream.cpp defines cout, cerr, wout, ... as char buffers instead of streams
in order to better control initialization/destruction. Not shockingly Clang
diagnoses this. Many other sources files define _LIBCPP_BUILDING_FOO macros to
provide definitions for normally inline symbols (See bind.cpp). Finally The
current module.map prohibits using <strstream> in C++11 so we can't build
strstream.cpp.

I think I can fix most of these issues but until then just disable modules.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284230 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 12:56:52 +00:00
Eric Fiselier
78c020bd78 Work around Clang driver segfault when --coverage is used with -c and /dev/null
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284225 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 10:30:33 +00:00
Eric Fiselier
472c8c6612 Remove dead CMake target
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284216 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 09:06:38 +00:00
Eric Fiselier
f172df1f43 XFAIL aligned allocation tests for older Clang versions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284214 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 08:47:09 +00:00
Eric Fiselier
34c6b805cf XFAIL aligned allocation test failures with UBSAN
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284210 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 07:49:15 +00:00
Eric Fiselier
48aa2e14a2 Add void_t and invoke feature test macros
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284209 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 07:19:52 +00:00
Eric Fiselier
bf702696d4 Update OS X ABI list
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284208 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 06:49:30 +00:00
Eric Fiselier
06e44a7ea8 Correct ABI changelog revision number
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284207 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 06:47:37 +00:00
Eric Fiselier
9acbffa370 Implement P0035R4 -- Add C++17 aligned allocation functions
Summary:
This patch implements the library side of P0035R4. The implementation is thanks to @rsmith.

In addition to the C++17 implementation, the library implementation can be explicitly turned on using `-faligned-allocation` in all dialects.


Reviewers: mclow.lists, rsmith

Subscribers: rsmith, cfe-commits

Differential Revision: https://reviews.llvm.org/D25591

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284206 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 06:46:30 +00:00
Eric Fiselier
4289b6ea05 Cleanup LIT testing doc
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284205 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 06:15:27 +00:00
Eric Fiselier
9dbc053b47 Remove two ABI symbols added after the 3.9 release
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284200 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 05:29:46 +00:00
Eric Fiselier
8efec5eeb6 Add ABI changelog entry for <any>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284199 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 05:10:06 +00:00
Eric Fiselier
852b521720 Sort ABI lists by name so that changes don't generate big diffs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284198 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 05:04:00 +00:00
Eric Fiselier
7fa27fcbaf Revert r284193 - it is not correct on OS X
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284194 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 04:21:24 +00:00
Eric Fiselier
c3d49c930b Re-export two previously exported std::string functions.
These functions were removed from the dylib sometime between the 3.9 release
and now. This patch manually exports them to re-gain ABI compatibility.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284193 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 04:14:24 +00:00
Eric Fiselier
977cd9f231 Add ABI list for 3.9 linux
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284192 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 04:06:19 +00:00
Eric Fiselier
959ed21455 Add 3.9 symbol list for OS X
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284189 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 02:55:43 +00:00
Eric Fiselier
7d1452eb46 Fix CMake configuration error and add ABI lists for OS X.
The primary reason for this patch is to add the OS X ABI lists for 3.9 and
ToT.

However while working on that I discovered that we incorrectly
exported the libc++abi symbols. Previously we had chosen the wrong CMake
configuration path and that caused us to re-export the c++abi binary instead
of using the symbol lists.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284188 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 02:55:19 +00:00
Eric Fiselier
d6a66c6361 Add OS X abi list
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284186 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 02:32:54 +00:00
Eric Fiselier
b17cc02df2 Add ABI Changelog and current symbol list for Linux
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284185 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 02:27:44 +00:00
Sebastian Pop
3d12b5c6f3 remove warnings from google-benchmarks in libcxx
Differential Revision: https://reviews.llvm.org/D25522

Patch written by Aditya Kumar.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284179 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 00:07:57 +00:00
Marshall Clow
426eb5dd44 Update the status of three papers that do not require library changes
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284165 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-13 21:15:09 +00:00
Marshall Clow
e29fb4c411 Implement http://wg21.link/p0302r1: Removing Allocator Support in std::function. These functions never worked, and as far as I know, no one ever called them.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284164 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-13 21:06:03 +00:00
Marshall Clow
698cce6e0e Add missing include in test; NFC. Thanks to Jonathan Wakely for the report.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284120 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-13 13:21:38 +00:00
Eric Fiselier
a469f83b26 Revert r282345 - Use __attribute__((internal_linkage)) when available.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284101 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-13 04:07:58 +00:00
Dimitry Andric
ecb5332d41 Disable trivial pair copy/move tests when unsupported
Summary:
On FreeBSD, for ABI compatibility reasons, the pair trivial copy
constructor is disabled, using the aptly-named
`_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR` define.

Disable the related tests when this define is on, so they don't fail
unexpectedly.

Reviewers: emaste, rsmith, theraven, EricWF

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D25449

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284047 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 20:26:47 +00:00
Marshall Clow
b6361287ff Mark ostream_iterator's constructors as noexcept.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284021 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 16:13:48 +00:00
Shoaib Meenai
d588d2dc20 [libc++] Correct explanation of _LIBCPP_NEW_DELETE_VIS
The behavior of this macro actually needs to apply universally on
Windows and not just when using the Microsoft CRT. Update the macro
definition and documentation accordingly.

Differential Revision: https://reviews.llvm.org/D25145

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284016 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 13:48:14 +00:00
Eric Fiselier
c69d8ca589 Correctly grant rebound limited_allocators friendship.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284006 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 11:35:37 +00:00
Eric Fiselier
9bc0638a92 Remove incorrect XFAILS
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284005 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 11:29:18 +00:00
Eric Fiselier
de8e3d3a4f Unbreak C++03 build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284004 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 11:20:27 +00:00
Eric Fiselier
a7b77ebd18 Remove usages of _LIBCPP_CONSTEXPR under test/std
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284002 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 10:28:09 +00:00
Eric Fiselier
4775578c61 Remove usages of _ALIGNAS_TYPE
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283999 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 10:19:48 +00:00
Eric Fiselier
76f406d252 support --param=std=gnu++XX
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283997 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 09:53:35 +00:00
Eric Fiselier
6f6a9607c2 Fix more C++11 constexpr issues in the tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283996 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 09:48:44 +00:00
Eric Fiselier
159b45f505 Fix nasty_containers.hpp for other stdlibs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283994 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 09:31:26 +00:00
Eric Fiselier
bf148f02bc Fix use of C++14 constexpr in C++11
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283993 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 09:20:58 +00:00
Eric Fiselier
ae96260ceb Remove use of _VSTD::__invoke in the not_fn tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283991 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 09:06:12 +00:00
Eric Fiselier
028a2091ea Protect special members of NullBase archetype to avoid exposing them
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283983 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 08:09:22 +00:00
Eric Fiselier
35ce4859dd Implement N4606 optional
Summary:
Adapt implementation of Library Fundamentals TS optional into an implementation of N4606 optional.

  - Update relational operators per http://wg21.link/P0307
  - Update to requirements of http://wg21.link/P0032
  - Extension: Implement trivial copy/move construction/assignment for `optional<T>` when `T` is trivially copyable.

Audit P/Rs for optional LWG issues:
  - 2756 "C++ WP optional<T> should 'forward' T's implicit conversions" Implemented, which also resolves 2753 "Optional's constructors and assignments need constraints" (modulo my refusal to explicitly delete the move operations, which is a design error that I'm working on correcting in the 2756 P/R).
  - 2736 "nullopt_t insufficiently constrained" Already conforming. I've added a test ensuring that `nullopt_t` is not copy-initializable from an empty braced-init-list, which I believe is the root intent of the issue, to avoid regression.
  - 2740 "constexpr optional<T>::operator->" Already conforming.
  - 2746 "Inconsistency between requirements for emplace between optional and variant" No P/R, but note that the author's '"suggested resolution" is already implemented.
  - 2748 "swappable traits for optionals" Already conforming.
  - 2753 "Optional's constructors and assignments need constraints" Implemented.

Most of the work for this patch was done by Casey Carter @ Microsoft. Thank you Casey!



Reviewers: mclow.lists, CaseyCarter, EricWF

Differential Revision: https://reviews.llvm.org/D22741

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283980 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 07:46:20 +00:00
Eric Fiselier
ead5d404cc Revert Add <optional>. Will recommit with better commit message
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283978 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 06:48:31 +00:00
Eric Fiselier
fbc80168bb Add <optional> header.
This patch is largely thanks to Casey Carter @ Microsoft. He did the initial
work of porting our experimental implementation and tests over to namespace
std.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283977 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 06:45:11 +00:00
Eric Fiselier
159b460868 Fix two more tests that hang when testing against libstdc++
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283976 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 04:56:23 +00:00
Eric Fiselier
4432d3f204 Prevent the test suite from hanging when run against libstdc++
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283975 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-12 04:29:50 +00:00