Commit Graph

2070 Commits

Author SHA1 Message Date
Mehdi Amini
6dcde2cf11 Use alternate string layout for ARMv7k
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299606 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-06 01:10:22 +00:00
Eric Fiselier
0867373a5c Work around recent -Wshadow changes in Clang
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299407 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-04 01:05:59 +00:00
Eric Fiselier
6547dc88b4 Fix C++17 dylib build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299401 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-03 23:23:44 +00:00
Shoaib Meenai
9dcbb46826 [libc++] Explicitly mark specializations as dllexport
Method specializations don't get exported even if there's an exported
extern template instantiation on Windows. Explicitly mark the methods
for export. They're already exported on Linux and Darwin, so there's no
ABI change on those platforms.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299348 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-03 04:04:24 +00:00
Duncan P. N. Exon Smith
ed3c0e6b3f string: Remove always_inline from basic_string::__init
This is effectively a partial revert of r278356, which started inlining
basic_string::__init.  Even if we want to help the compiler along with
an inlinehint, we shouldn't hamstring it by forcing it to inline all the
time.

Libc++ uses always_inline widely as a limit-the-ABI-hack, but since
__init is already on the dylib boundary, it makes no sense here and just
harms the debugging experience at -O0.

rdar://problem/31013102

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299290 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-01 03:20:48 +00:00
Duncan P. N. Exon Smith
cc6415930b Use strong enums independently of -fobjc-arc
r145698 introduced _LIBCPP_HAS_NO_STRONG_ENUMS by copy-pasting the
__has_feature check from objc_arc_weak/_LIBCPP_HAS_OBJC_ARC_WEAK, and
accidentally started defining _LIBCPP_HAS_NO_STRONG_ENUMS whenever
__has_feature(objc_arc_weak).  This is totally bogus, and means that
Libc++ thinks Objective-C++ compilations with -fobjc-arc don't have
strong enums.

Delete the accidental line.

I thought about adding a test, but it would be entirely duplicative of
the patch (if has-feature strong enums, check that has-no-strong-enums
is not defined).

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299236 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-31 17:39:56 +00:00
Eric Fiselier
2b3c1c4d9b Fix LWG 2934 - optional<const T> doesn't compare with T
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299105 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-30 20:06:52 +00:00
Eric Fiselier
5612bd42dc Implement LWG 2842 - optional(U&&) needs to SFINAE on decay_t<in_place_t>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299100 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-30 19:43:50 +00:00
Shoaib Meenai
f012f260c3 [libc++] Add a key function for bad_function_call
Summary:
bad_function_call is currently an empty class, so any object files using
that class will end up with their own copy of its typeinfo, typeinfo
name and vtable, leading to unnecessary duplication that has to be
resolved by the dynamic linker. Instead, give bad_function_call a key
function and put a definition for that key function in libc++ itself, to
centralize the typeinfo and vtable.

This is consistent with the behavior for other exception classes. The
key functions are defined in libc++ rather than libc++abi since the
class is defined in the libc++ versioning namespace, so ABI
compatibility with libstdc++ is not a concern.

Guard this change behind an ABI macro, since it isn't backwards
compatible (i.e., clients built against the new libc++ headers wouldn't
be able to run against an older libc++ library).

Reviewers: mclow.lists, EricWF

Subscribers: mgorny, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298937 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-28 19:33:31 +00:00
Marshall Clow
21ae16e203 Implement P0298R3: 'std::byte'. Reviewed as https://reviews.llvm.org/D31022
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298689 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24 05:45:39 +00:00
Marshall Clow
0c70c79106 Move the scoped_lock inside the '#ifndef NO_THREADS' block to fix the no-threading build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298686 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24 05:19:15 +00:00
Marshall Clow
59bcc879ab Implement Pp0156r2: 'Variadic Lock Guard, version 5' Reviewed as https://reviews.llvm.org/D31163.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298681 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24 03:40:36 +00:00
Bruce Mitchener
50145cc3e9 [libcxx] Improve code generation for vector::clear().
Summary:
By manipulating a local variable in the loop, when the loop can
be optimized away (due to no non-trivial destructors), this lets
it be fully optimized away and we modify the __end_ separately.

This results in a substantial improvement in the generated code.

Prior to this change, this would be generated (on x86_64):

    movq    (%rdi), %rdx
    movq    8(%rdi), %rcx
    cmpq    %rdx, %rcx
    je    LBB2_2
    leaq    -12(%rcx), %rax
    subq    %rdx, %rax
    movabsq    $-6148914691236517205, %rdx ## imm = 0xAAAAAAAAAAAAAAAB
    mulq    %rdx
    shrq    $3, %rdx
    notq    %rdx
    leaq    (%rdx,%rdx,2), %rax
    leaq    (%rcx,%rax,4), %rax
    movq    %rax, 8(%rdi)

And after:

    movq    (%rdi), %rax
    movq    %rax, 8(%rdi)

This brings this in line with what other implementations do.

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298601 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 14:39:23 +00:00
Marshall Clow
a901b56e77 One more file for the random_shuffle removal
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298598 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 13:44:06 +00:00
Marshall Clow
03b862f6ea Remove random_shuffle in C++17. Please use shuffle instead. If you have to, you cant get it back by defining _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE before including any libc++ headers.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298597 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 13:43:37 +00:00
Marshall Clow
570f32c8dd Can't test for noexcept on C++03; std::hash<nullptr_t> isn't available until C++17
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298580 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 06:20:18 +00:00
Marshall Clow
af552ba05a Implement P0599: 'noexcept for hash functions'. Fix a couple of hash functions (optional<T> and unique_ptr<T>) which were mistakenly marked as 'noexcept'. Reviewed as https://reviews.llvm.org/D31234
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298573 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 02:40:28 +00:00
Marshall Clow
faf14a571a Fix test failure I introduced
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298438 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-21 21:05:28 +00:00
Marshall Clow
6b6874c8e2 Fix a couple of 'C++11'-isms from the last checkin, which broke the '03 bot.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298422 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-21 19:12:21 +00:00
Marshall Clow
cf6e0db0b9 Implement P0548: 'common_type and duration' This involves a subtle change in the return type of the unary +/- operators for std::chrono::duration, though I expect that no one will notice.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298416 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-21 18:38:57 +00:00
Marshall Clow
2d4c3fa48a Implement LWG#2761: 'basic_string should require that charT match traits::char_type'. Tests for string_view, too
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@297872 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-15 18:41:11 +00:00
Marshall Clow
abba685fcd Implement LWG2784, and mark 2786, 2795, 2804, 2812, 2826, 2834, 2837 and 2838 as complete - since we do them already
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@297752 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-14 17:08:47 +00:00
Eric Fiselier
3b7c1348ca Disable unsigned integer sanitizer for basic_string::replace(). Patch from tomcherry@google.com
basic_string::replace() has the below line

__sz += __n2 - __n1;

which fails overflow checks if __n1 > __n2, as the negative result
from the subtraction then overflows the original __sz when added to
it.

This behavior is valid as unsigned integer overflow is defined to wrap
around the maximum value and that produces the correct final value for
__sz.  Therefore, we disable this check on this function.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@297355 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09 01:54:13 +00:00
Shoaib Meenai
15da97cb66 [libc++] Avoid double defining macro on Windows
Put proper guards around _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS.
No functional change on non-Windows. Avoids incorrect macro redefinition
on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@297330 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09 00:18:00 +00:00
Eric Fiselier
7c7df6461c Implement LWG 2787 - [file_status.cons] is inconsistent
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@297071 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-06 21:02:06 +00:00
Eric Fiselier
c1b1d7f0bb Fix hash requirements check in __hash_table.
r296565 attempted to add better diagnostics when an unordered container
is instantiated with a hash that doesn't meet the Hash requirements.

However I mistakenly checked the wrong set of requirements. Specifically
it checked if the hash met the requirements for specializations of
std::hash. However these requirements are stricter than the generic
Hash requirements.

This patch fixes the assertions to only check the Hash requirements.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296919 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-03 22:35:58 +00:00
Eric Fiselier
92dbfc48cc remove max_size() extension from polymorphic_allocator. It is unneeded
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296831 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-02 22:10:14 +00:00
Shoaib Meenai
6b7349243e [libc++] Make _LIBCPP_TYPE_VIS export members
Summary:
Most classes annotated with _LIBCPP_TYPE_VIS need to have at least some
of their members exported, otherwise we have a lot of link errors when
linking against a libc++ built with hidden visibility. This also makes
_LIBCPP_TYPE_VIS be consistent across platforms, since on Windows it
already exports members.

With this change made, any template methods of a class marked
_LIBCPP_TYPE_VIS will also get default visibility when instantiatied,
which is not desirable for clients of libc++ headers who wish to control
their visibility; this is the same issue as PR30642. Annotate all
problematic methods with an explicit visibility specifier to avoid this.

The problematic methods were found by running bad-visibility-finder [1]
against the libc++ headers after making the _LIBCPP_TYPE_VIS change. The
small methods were marked for inlining; the larger ones hidden.

[1] https://github.com/smeenai/bad-visibility-finder

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296732 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-02 03:22:18 +00:00
Shoaib Meenai
24e8dbdd2d [libc++] Make _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS export members
When building libc++ with hidden visibility, we want explicit template
instantiations to export members. This is consistent with existing
Windows behavior, and is necessary for clients to be able to link
against a hidden visibility built libc++ without running into lots of
missing symbols.

An unfortunate side effect, however, is that any template methods of a
class with an explicit instantiation will get default visibility when
instantiated, unless the methods are explicitly marked inline or hidden
visibility. This is not desirable for clients of libc++ headers who wish
to control their visibility, and led to PR30642.

Annotate all problematic methods with an explicit visibility specifier
to avoid this. The problematic methods were found by running
https://github.com/smeenai/bad-visibility-finder against the libc++
headers after making the _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS change. The
methods were marked with the new _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
macro, which was created for this purpose.

It should be noted that _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS was originally
intended to expand to default visibility, and was changed to expanding
to default type visibility to fix PR30642. The visibility macro
documentation was not updated accordingly, however, so this change makes
the macro consistent with its documentation again, while explicitly
fixing the methods which resulted in that PR.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296731 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-02 03:02:50 +00:00
Shoaib Meenai
4795f130eb [libc++] Mark some std::num_get method templates inline
D29157 will make explicit template instantiations expand to default
visibility, at which point these method templates will need to be
explicitly marked hidden visibility to avoid leaking into other DSOs.
Unfortunately, because of clang PR32114, they must be marked inline (in
conjunction with `-fvisibility-inlines-hidden`) to actually hide them,
since clang doesn't respect the hidden visibility annotation.

Since this involves an ABI change, mark these methods inline in a
separate change, so that the ABI changes can be reviewed separately and
verified to be safe.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296729 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-02 02:51:27 +00:00
Eric Fiselier
c6422362d5 Improve diagnostics when an invalid hash is used in an unordered container.
This patch adds a static assertion that the specified hash meets
the requirements of an enabled hash, and it ensures that the static
assertion is evaluated before __compressed_pair is instantiated.
That way the static assertion diagnostic is emitted first.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296565 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-01 02:02:28 +00:00
Eric Fiselier
67f7a78126 Fix PR32097 - is_abstract doesn't work on class templates.
This patch fixes llvm.org/PR32097 by using the __is_abstract
builtin type-trait instead of the previous library-only implementation.

All supported compilers provide this trait. I've tested as far
back as Clang 3.2, GCC 4.6 and MSVC trunk.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296561 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-01 01:27:14 +00:00
Asiri Rathnayake
3f017a82a2 Fix LIBCXX_HAS_EXTERNAL_THREAD_API builds. NFC.
Add the missing check in the __config header.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296351 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-27 16:10:57 +00:00
Asiri Rathnayake
62aeff93e9 Fix typo in error message. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296346 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-27 15:49:51 +00:00
Saleem Abdulrasool
e891cc8c09 Revert "threading_support: make __thread_sleep_for be alertable"
This reverts SVN r295329.  Although `__libcpp_thread_sleep_for` should
be alertable, the implementation causes a large regression in the test
suite.  Add a FIXME item there for now to get the test suite in a better
state before attempting to fix that behaviour.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295561 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-18 19:28:43 +00:00
Saleem Abdulrasool
1eab168286 math: add type promoting template definition on MSVCRT
When building with MSVCRT, we need to manually provide the type
promoting overloads to allow the correct type deduced invocation for
signbit(Int) and fpclassify(int).

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295559 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-18 19:28:38 +00:00
Saleem Abdulrasool
29a8300460 math: fix typo in macro
MAJOR was misspelt as NAJOR.  Fix the spelling.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295510 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 23:08:44 +00:00
Saleem Abdulrasool
e72cf6de5a cmath: Use c99 math on a new enough msvcrt
MSVCRT 14+ supports the C99 math routines that we need.  Use them
accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295509 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 23:08:42 +00:00
Eric Fiselier
b7fd0be370 Update all bug URL's to point to https://bugs.llvm.org/...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295434 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 08:37:03 +00:00
Eric Fiselier
ba5f008f88 Use inline namespaces with GCC instead of __attribute__((__strong__)).
GCC 7.0.1 started warning that __attribute__((__strong__)) is depricated.
This patch switches to using inline namespace with GCC instead. I believe
this wasn't done originally in order to support older GCC versions w/o
support for inline namespaces, or because earlier versions of GCC warned
users that the STL was using an inline namespace (even though it shouldn't affect users).

However I believe all of the above problems are gone for GCC 4.9 and greater.
Therefore switching to using inline namespaces instead of using __strong__
is the most correct behavior.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295428 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 07:31:38 +00:00
Eric Fiselier
6ebcc5c9c4 Add doc for _LIBCPP_ENABLE_CXX17_DISABLED_AUTO_PTR and make it work under _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295407 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 03:30:25 +00:00
Eric Fiselier
515ba559b9 [libcxx] Remove unexpected handlers in C++17
Summary:
This patch implements [P0003R5](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0003r5.html) which removes exception specifications from C++17.

The only changes to the library are removing `set_unexpected`, `get_unexpected`, `unexpected`, and `unexpected_handler`. These functions can be re-enabled in C++17 using `_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS`.

@mclow.lists what do you think about removing stuff is this way?

Reviewers: mclow.lists

Reviewed By: mclow.lists

Subscribers: mclow.lists, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295406 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 03:25:08 +00:00
Eric Fiselier
f9aeac6b4e Mark a couple for basic_string member templates as inline. no ABI change this time.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295403 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 02:31:56 +00:00
Eric Fiselier
25380e401c Remove more basic_string member function templates from the dylib exports
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295398 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 01:53:16 +00:00
Eric Fiselier
0eaf2e8474 [libc++] Fix PR 31938 - std::basic_string constructors use non-deductible parameter types.
Summary:
This patch fixes http://llvm.org/PR31938. The description below is copy/pasted from the bug:

The standard says:

template<class charT, class traits = char_traits<charT>,
         class Allocator = allocator<charT>>
class basic_string {
  using value_type = typename traits::char_type;
  // ...
  basic_string(const charT* s, const Allocator& a = Allocator());
};

libc++ actually chooses to declare the constructor as

  basic_string(const value_type* s, const Allocator& a = Allocator());

The implicit deduction guides from class template argument deduction make what was previously an implementation detail visible:

std::basic_string s = "foo"; // error, can't deduce charT.

The constructor in question is in the libc++ DSO, but fortunately it looks like fixing this will not result in an ABI break.


@rsmith How does this look? I did more than just the constructors mentioned in the PR, but IDK how far to take it.


Reviewers: mclow.lists, rsmith

Reviewed By: rsmith

Subscribers: cfe-commits, rsmith

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295393 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 01:17:10 +00:00
Saleem Abdulrasool
af5f91fd19 math: correct the MSVCRT condition
Fixes a number of tests in the testsuite on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295330 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-16 15:47:50 +00:00
Saleem Abdulrasool
e80bd1ab0b threading_support: make __thread_sleep_for be alertable
On Windows, we were using `Sleep` which is not alertable.  This means
that if the thread was used for a user APC or WinProc handling and
thread::sleep was used, we could potentially dead lock.  Use `SleepEx`
with an alertable sleep, resuming until the time has expired if we are
awoken early.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@295329 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-16 15:47:45 +00:00
Saleem Abdulrasool
5748d2b404 config: disable thread safety analysis on COFF
clang cannot properly handle __declspec and __attribute__ on classes
right now.  This prevents the shared_mutex tests from working.  Disable
the use of the annotation on COFF targets.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294958 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-13 15:26:51 +00:00
Saleem Abdulrasool
766ba68107 math: actually pull the declarations/overloads into std
The previous changes missed the change to include/cmath.  These changes
allow some of the rand.distribution tests to pass on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294957 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-13 15:26:50 +00:00
Saleem Abdulrasool
bacb35f5ae math: follow up to SVN r294902
Pull in the math functions from ucrt 14+ after auditing the library.  It
seems that they are now complete for C99 math.  Fixes more windows
tests!

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294918 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-12 21:42:37 +00:00