Commit Graph

4795 Commits

Author SHA1 Message Date
Eric Fiselier
e14f03815b Workaround bug in GCC trunk.
For some reason GCC ToT is failing to deduce the auto type for
a static data member from its initializer in some cases.

Though I'm sure the bug will be short lived, there is a trivial workaround for it.
So we might as well get the bot passing again.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337661 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-22 21:56:40 +00:00
Eric Fiselier
fb03277e63 Harden copy_file even more.
This patch removes the O_CREAT open flag when we first
attempt to open the destination file but we expect it to
already exist.

This theoretically avoids the possibility that it was removed
between when we first stat'ed it, and when we attempt to open it.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337659 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-22 21:15:15 +00:00
Eric Fiselier
1061b65e6e fix test failures with older clang versions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337658 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-22 20:50:16 +00:00
Eric Fiselier
70c866bfc1 Implement a better copy_file.
This patch improves both the performance, and the safety of the
copy_file implementation.

The performance improvements are achieved by using sendfile on
Linux and copyfile on OS X when available.

The TOCTOU hardening is achieved by opening the source and
destination files and then using fstat to check their attributes to
see if we can copy them.

Unfortunately for the destination file, there is no way to open
it without accidentally creating it, so we first have to use
stat to determine if it exists, and if we should copy to it.
Then, once we're sure we should try to copy, we open the dest
file and ensure it names the same entity we previously stat'ed.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337649 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-22 02:00:53 +00:00
Petr Hosek
4d34ec0850 [CMake] Install C++ ABI headers into the right location
This is a follow-up to r335809 and r337118. While libc++ headers are now
installed into the right location in both standard as well as multiarch
runtimes layout, turned out C++ ABI headers are still installed into the
old location in the latter case. This change addresses that.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337630 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 22:45:24 +00:00
Eric Fiselier
7b1b6ca284 adjust incorrect comment
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337532 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 08:36:45 +00:00
Eric Fiselier
77c9cf44e3 Fix two test failures in <experimental/filesystem>
First, <experimental/filesystem> didn't correctly guard
against min/max macros. This adds the proper push/pop macro guards.

Second, an internal time helper had been renamed but the test for
it hadn't been updated. This patch updates those tests.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337520 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 01:51:48 +00:00
Eric Fiselier
0f8ee948c3 Use _LIBCPP_UNREACHABLE to convince GCC that non-void functions actually always return
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337519 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 01:44:33 +00:00
Eric Fiselier
f8bfc79ac5 cleanup test assertion inside library
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337517 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 01:25:06 +00:00
Eric Fiselier
e274f439c6 [libc++] Implement Directory Entry Caching -- Sort of.
Summary:
This patch implements directory_entry caching *almost* as specified in P0317r1. However, I explicitly chose to deviate from the standard as I'll explain below.

The approach I decided to take is a fully caching one. When `refresh()` is called, the cache is populated by calls to `stat` and `lstat` as needed.
During directory iteration the cache is only populated with the `file_type` as reported by `readdir`.
The cache can be in the following states:

* `_Empty`: There is nothing in the cache (likely due to an error)
* `_IterSymlink`: Created by directory iteration when we walk onto a symlink only the symlink file type is known.
* `_IterNonSymlink`: Created by directory iteration when we walk onto a non-symlink. Both the regular file type and symlink file type are known.
* `_RefreshSymlink` and `_RefreshNonSymlink`: A full cache created by `refresh()`.  This case includes dead symlinks.
* `_RefreshSymlinkUnresolved`: A partial cache created by refresh when we fail to resolve the file pointed to by a symlink (likely due to permissions). Symlink attributes are cached, but attributes about the linked entity are not.

As mentioned, this implementation purposefully deviates from the standard. According to some readings of the specification, and the Windows filesystem implementation, the constructors and modifiers which don't pass an `error_code` must throw when the `directory_entry` points to a entity which doesn't exist. or when attribute resolution fails for another reason. 

@BillyONeal  has proposed a more reasonable set of requirements, where modifiers other than refresh ignore errors. This is the behavior libc++ currently implements, with the expectation some form of the new language will be accepted into the standard.

Some additional semantics which differ from the Windows implementation:

1. `refresh` will not throw when the entry doesn't exist. In this case we can still meet the functions specification, so we don't treat it as an error.
2. We don't clear the path name when a constructor fails via refresh (this will hopefully be changed in the standard as well).

It should be noted that libstdc++'s current implementation has the same behavior as libc++, except for point (2).

If the changes to the specification don't get accepted, we'll be able to make the changes later.

[1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0317r1.html

Reviewers: mclow.lists, gromer, ldionne, aaron.ballman

Subscribers: BillyONeal, christof, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337516 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 01:22:32 +00:00
Louis Dionne
c69e1a0615 [libc++] Allow running ABI list tests with different ABI versions
Summary:
Currently, the ABI list test only works for ABI version 1. This commit
allows running the ABI list test with ABI version 2. It also adds an
ABI list file for ABI v2 on Mac OS X.

Reviewers: EricWF

Subscribers: mgorny, christof, dexonsmith, llvm-commits, mclow.lists

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337477 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-19 18:02:50 +00:00
Marshall Clow
f1f54dc0fb Update the synopsis for <chrono> for C++20. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337406 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-18 17:37:51 +00:00
Eric Fiselier
ffbb91bb64 Address "always inline function is not always inlinable" warning with GCC.
When an always_inline function is used prior to the functions definition,
the compiler may not be able to inline it as requested by the attribute.
GCC flags the `basic_string(CharT const*)` function as one such example.

This patch supresses the warning, and the problem, by moving the
definition of the string constructor to the inline declaration.
This ensures the body is available when it is first ODR used.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337235 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-17 05:48:48 +00:00
Eric Fiselier
6e089f8b10 Fix PR38160 - init_priority attribute not supported by GCC on Apple.
This patch guards the use of __attribute__((init_priority(101)))
within memory_resource.cpp when building with compilers that don't
support it. Specifically GCC on Apple platforms, and MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337205 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-16 20:01:59 +00:00
Petr Hosek
a40a6b3f6e [CMake] Use correct variable as header install prefix
This variable is already set in CMakeLists.txt but it wasn't used
which means that the headers get installed into a wrong location
when the per target runtime directory option is being used.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337118 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-15 04:09:35 +00:00
Marshall Clow
0d0b972927 Mark __equal_to 's operations as constexpr.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337087 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-14 04:15:19 +00:00
Marshall Clow
d7d3d8bc18 Mark one more __wrap_iter operation as constexpr.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337085 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-14 03:06:11 +00:00
Marshall Clow
1548d77c82 wrap _LIBCPP_HAS_NO_CXX14_CONSTEXPR in defined(...)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337028 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-13 17:31:36 +00:00
Marshall Clow
e585baf371 Shot in the dark to fix gcc 4.9 / c++11 build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337027 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-13 17:24:59 +00:00
Marshall Clow
c005c7e34c Make internal class __wrap_iter constexpr when not using libc++'s debugging mode. Introduce a new macro _LIBCPP_CONSTEXPR_IF_NODEBUG to mark this.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337019 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-13 16:35:26 +00:00
Marshall Clow
9765ed0367 Fix a couple of 'unused variable' warnings in a vector test. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337016 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-13 16:26:16 +00:00
Marshall Clow
fbb1e6166a Turns out that wide literals U"xxx" and u"xxx" are c++11 and later.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336880 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-12 02:55:01 +00:00
Louis Dionne
54238057d6 [libc++] Take 2: Replace uses of _LIBCPP_ALWAYS_INLINE by _LIBCPP_INLINE_VISIBILITY
Summary:
We never actually mean to always inline a function -- all the uses of
the macro I could find are actually attempts to control the visibility
of symbols. This is better described by _LIBCPP_INLINE_VISIBILITY, which
is actually always defined the same.

This change is orthogonal to the decision of what we're actually going
to do with _LIBCPP_INLINE_VISIBILITY -- it just simplifies things by
having one canonical way of doing things.

Note that this commit had originally been applied in r336369 and then
reverted in r336382 because of unforeseen problems. Both of these problems
have now been fixed.

Reviewers: EricWF, mclow.lists

Subscribers: christof, dexonsmith, erikvanderpoel

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336866 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-11 23:14:33 +00:00
Marshall Clow
88709a3f4e Same reversed ifdef happened twice. Test fix only, NFC to the library.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336856 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-11 21:22:13 +00:00
Marshall Clow
839b1a6ebd Fix a test #ifdef that was reversed. NFC to the library.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336855 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-11 21:20:42 +00:00
Petr Hosek
f51cf5e75e [CMake] Set per-runtime library directory suffix in runtimes build
Do not use LLVM_RUNTIMES_LIBDIR_SUFFIX variable which is an internal
variable used by the runtimes build from individual runtimes, instead
set per-runtime librarhy directory suffix variable which is necessary
for the sanitized runtimes build to install libraries into correct
location.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336713 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-10 19:13:33 +00:00
Louis Dionne
bb716549f1 [libc++] Declare noop_coroutine() with _LIBCPP_INLINE_VISIBILITY
Summary:
It was defined with the right visibility, but declared without any visibility.
This function was left out of a prior revision that did the same to several
functions in <compare> (r336665) because the compiler I used didn't support
coroutines. This reinforces the need for automated checks -- there might
still be several cases of this throughout the library.

Reviewers: EricWF

Subscribers: modocache, christof, dexonsmith, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336709 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-10 17:38:30 +00:00
Eric Fiselier
7a0f119777 Remove BUILD file from google-benchmark
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336666 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-10 13:25:26 +00:00
Louis Dionne
4a5f61abcb [libc++] Declare <compare> operators with the proper visibility attribute
Summary:
Many operators in <compare> were _defined_ with the proper visibility attribute,
but they were _declared_ without any. This is not a problem until we change the
definition of _LIBCPP_INLINE_VISIBILITY to something that requires the
declaration to be decorated.

I also marked `strong_equality::operator weak_equality()` as
`_LIBCPP_INLINE_VISIBILITY`, since it seems like it had been forgotten.

This came up while trying to get rid of `__attribute__((__always_inline__))`
in favor of `__attribute__((internal_linkage))`.

Reviewers: EricWF, mclow.lists

Subscribers: christof, dexonsmith, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336665 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-10 13:21:03 +00:00
Eric Fiselier
97d4134fbc Add new string benchmarks
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336636 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-10 04:11:22 +00:00
Eric Fiselier
ffc31db661 Update google-benchark to trunk
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336635 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-10 04:02:00 +00:00
Casey Carter
8df0521f96 [test] two small cleanups:
* Remove unused type from is_assignable.pass.cpp

* Don't specialize `common_type<::X<float>>` in common_type.pass.cpp, which violates the requirements of [meta.trans.other]/5

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336618 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-09 23:45:09 +00:00
Casey Carter
57288eb81d type_traits: aligned_union is NOT the same as __uncvref [NFC]
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336502 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-08 00:06:27 +00:00
Louis Dionne
4e7ffcaae6 Revert "[libc++] Replace uses of _LIBCPP_ALWAYS_INLINE by _LIBCPP_INLINE_VISIBILITY"
This reverts commit r336369. The commit had two problems:
1. __pbump was marked as _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY instead of
   _LIBCPP_INLINE_VISIBILITY, which lead to two symbols being added in the
   dylib and the check-cxx-abilist failing.

2. The LLDB tests started failing because they undefine
   `_LIBCPP_INLINE_VISIBILITY`. I need to figure out why they do that and
   fix the tests before we can go forward with this change.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336382 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-05 18:41:50 +00:00
Marshall Clow
1f655099cf Fix HTML blunder
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336381 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-05 17:44:12 +00:00
Louis Dionne
79aa4f32d0 [libc++] Replace uses of _LIBCPP_ALWAYS_INLINE by _LIBCPP_INLINE_VISIBILITY
Summary:
We never actually mean to always inline a function -- all the uses of
the macro I could find are actually attempts to control the visibility
of symbols. This is better described by _LIBCPP_INLINE_VISIBILITY, which
is actually always defined the same.

This change is orthogonal to the decision of what we're actually going
to do with _LIBCPP_INLINE_VISIBILITY -- it just simplifies things by
having one canonical way of doing things.

Reviewers: EricWF

Subscribers: christof, llvm-commits, dexonsmith, erikvanderpoel, mclow.lists

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336369 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-05 16:49:38 +00:00
Louis Dionne
50e0c14078 [NFC] Add <initializer_list> to the synopsis of <utility>
Summary:
It is part of the synopsis in the Standard and <utility> does include it,
but it was left out of the synopsis comment.

Reviewers: EricWF, mclow.lists

Subscribers: christof, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336368 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-05 16:16:03 +00:00
Eric Fiselier
e5a3de1bd1 Remove old workaround that is no longer needed
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336297 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-04 20:16:05 +00:00
Zhihao Yuan
8fdc491860 [libc++] Install the missing header __errc
Summary: Omitted from D41347.

Reviewers: EricWF

Subscribers: mgorny, christof, ldionne, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336165 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-03 04:01:44 +00:00
Zhihao Yuan
8deb2dd30a [libc++] Lift std::errc into a separated header
Summary: This is needed to implement `<charconv>`, otherwise `<charconv>` would need to include `<system_error>`, which pulls in `<string>` -- a header which the `<charconv>` proposal intends to keep away from.

Reviewers: mclow.lists, EricWF

Reviewed By: mclow.lists

Subscribers: christof, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336164 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-03 03:25:10 +00:00
Pirama Arumuga Nainar
03295feea2 [Win32] Overload ==, != for locale_t and long long
Summary:
_is_chartype_l (needed for isxdigit_l) in MinGW compares locale_t and NULL.
NULL is 'long long' for 64-bit, and this results in ambiguous overloads when
compiled with Clang.  Define a concrete overload for the operators to fix the
ambiguity.

Reviewers: mstorsjo, EricWF, srhines, danalbert

Subscribers: christof, cfe-commits, ldionne

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336141 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-02 20:11:15 +00:00
Marshall Clow
64c10d00c3 Implement LWG 2946, 3075 and 3076. Reviewed as https://reviews.llvm.org/D48616
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336132 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-02 18:41:15 +00:00
Pirama Arumuga Nainar
b525131913 Configure ELAST for MinGW
Summary:
Use _LIBCPP_MSVCRT_LIKE while configuring ELAST, so MinGW gets the same
configuration as MSVC.

Reviewers: compnerd, srhines, danalbert, mstorsjo

Subscribers: christof, ldionne, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@335916 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-28 20:16:45 +00:00
Ahmed Bougacha
92f1507ade [CMake] Rename cxx_headers back to cxx-headers.
r334477 renamed the cxx-headers target to cxx_headers, but various
pieces sort-of expect the target names to match the component (e.g.,
LLVM_DISTRIBUTION_COMPONENTS in the various bootstrap caches, which, via
some magic foreign to me, seems to expect cxx-headers,
install-cxx-headers, and install-cxx-headers-stripped to exist.)

Revert back to cxx-headers.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@335899 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-28 18:35:35 +00:00
Petr Hosek
4d66f0966a Support for multiarch runtimes layout
This change adds a support for multiarch style runtimes layout, so in
addition to the existing layout where runtimes get installed to:

lib/clang/$version/lib/$os

Clang now allows runtimes to be installed to:

lib/clang/$version/$target/lib

This also includes libc++, libc++abi and libunwind; today those are
assumed to be in Clang library directory built for host, with the
new layout it is possible to install libc++, libc++abi and libunwind
into the runtime directory built for different targets.

The use of new layout is enabled by setting the
LLVM_ENABLE_RUNTIME_TARGET_DIR CMake variable and is supported by both
projects and runtimes layouts. The runtimes CMake build has been further
modified to use the new layout when building runtimes for multiple
targets.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@335809 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-28 03:11:52 +00:00
Matt Morehouse
1639392a4a [CMake] Fix install-cxx target.
Was broken by r334477.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@335507 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-25 18:01:51 +00:00
Martin Storsjo
7ef8270dda [CMake] Convert paths to the right form in standalone builds on Windows
The paths output from llvm-config --cmakedir and from clang
--print-libgcc-file-name can contain backslashes, while CMake
can't handle the paths in this form.

This matches what compiler-rt already does (since SVN r203789
and r293195).

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@335172 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-20 21:03:34 +00:00
Richard Smith
5aa278078e Fix libcxx tests after clang r334677.
Feature test macro versions may have a trailing L.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334917 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-17 19:58:45 +00:00
Marshall Clow
8d00e543f4 Remove P0771, which was not passed in Rapperswil
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334894 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-16 18:03:29 +00:00
Stephan T. Lavavej
9165f9d181 [libcxx] [test] Strip trailing whitespace. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334676 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-14 00:12:20 +00:00