aboutsummaryrefslogtreecommitdiff
path: root/libcxx
AgeCommit message (Collapse)Author
2019-01-16Move internal usages of `alignof`/`__alignof` to use `_LIBCPP_ALIGNOF`. Eric Fiselier
Summary: Starting in Clang 8.0 and GCC 8.0, `alignof` and `__alignof` return different values in same cases. Specifically `alignof` and `_Alignof` return the minimum alignment for a type, where as `__alignof` returns the preferred alignment. libc++ currently uses `__alignof` but means to use `alignof`. See llvm.org/PR39713 This patch introduces the macro `_LIBCPP_ALIGNOF` so we can control which spelling gets used. This patch does not introduce any ABI guard to provide the old behavior with newer compilers. However, if we decide that is needed, this patch makes it trivial to implement. I think we should commit this change immediately, and decide what we want to do about the ABI afterwards. Reviewers: ldionne, EricWF Reviewed By: ldionne, EricWF Subscribers: jyknight, christof, libcxx-commits Differential Revision: https://reviews.llvm.org/D54814 llvm-svn: 351289
2019-01-16Implement feature test macros using a script.Eric Fiselier
Summary: This patch implements all the feature test macros libc++ currently supports, as specified by the standard or cppreference prior to C++2a. The tests and `<version>` header are generated using a script. The script contains a table of each feature test macro, the headers it should be accessible from, and its values of each dialect of C++. When a new feature test macro is added or needed, the table should be updated and the script re-run. Reviewers: mclow.lists, jfb, serge-sans-paille Reviewed By: mclow.lists Subscribers: arphaman, jfb, ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D56750 llvm-svn: 351286
2019-01-15Fix size_t/off_t mixup in std::filesystem.Dan Albert
Summary: ftruncate takes an off_t, not a size_t. Reviewers: EricWF, mclow.lists Reviewed By: EricWF Subscribers: christof, ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D56578 llvm-svn: 351226
2019-01-15Add large file support to create_file for 32-bit.Dan Albert
Summary: The tests need to create files larger than 2GB, but size_t is 32-bit on a 32-bit system. Make use of explicit off64_t APIs so we can still use a default off_t for the tests while enabling 64-bit file offsets for create_file. Reviewers: mclow.lists, EricWF Reviewed By: EricWF Subscribers: christof, ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D56619 llvm-svn: 351225
2019-01-15[libc++] Support different libc++ namespaces in the iterator testPetr Hosek
libc++ allows changing the namespace, don't assume __1 in the test to avoid the test failure if different namespace is being used. Differential Revision: https://reviews.llvm.org/D56698 llvm-svn: 351220
2019-01-15Update year in license filesHans Wennborg
In last year's update (D48219) it was suggested that the release manager might want to do this, so here we go. llvm-svn: 351194
2019-01-15[test] Fix logic error in <compare> tests; enable for MSVC Dev16Casey Carter
Submitted upstream as https://reviews.llvm.org/D53763. llvm-svn: 351148
2019-01-15Generalize the comparison test structure to support cross-type comparisons. ↵Marshall Clow
NFC to the library llvm-svn: 351140
2019-01-13[libcxx] Mark do_open, do_get and do_close parameters unused when catopen is ↵Petr Hosek
missing When catopen is missing, do_open, do_get and do_close end up being no-op, and as such their parameters will be unused which triggers a warning/error when building with -Wunused-parameter. Differential Revision: https://reviews.llvm.org/D56023 llvm-svn: 351027
2019-01-11Change from a to a . Fixes PR#39871.Marshall Clow
llvm-svn: 350972
2019-01-11[libcxx] Call __count_bool_true for bitset countAdhemerval Zanella
This patch aims to help clang with better information so it can inline __bit_reference count function usage for both std::biset. Current clang inliner can not infer that the passed typed will be used only to select the optimized variant, it evaluates the type argument and type check as a load plus compare (although later optimization phases correctly optimized this out). It is mainly to help llvm inliner to generate better code for std::bitset count for aarch64. It helps on both runtime and code size, since if inline decides that _VSTD::count should not be inlined the vectorization will create both aligned and unaligned variants (which add both code size and runtime costs) llvm-svn: 350936
2019-01-11Don't use the form '2017y' in tests, since some gcc versions don't allow itMarshall Clow
llvm-svn: 350930
2019-01-11Implement the 'sys_time' portions of the C++20 calendaring stuff. Reviewed ↵Marshall Clow
as D56494 llvm-svn: 350929
2019-01-10[libcxx] Reorganize tests since the application of P0602R4Louis Dionne
Summary: P0602R4 makes the special member functions of optional and variant conditionally trivial based on the types in the optional/variant. We already implemented that, but the tests were organized as if this were a non-standard extension. This patch reorganizes the tests in a way that makes more sense since this is not an extension anymore. Reviewers: EricWF, mpark, mclow.lists Subscribers: christof, jkorous, dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D54772 llvm-svn: 350884
2019-01-10Filesystem tests: fix fs.op.relativeJF Bastien
Summary: The test wasn't using the testing infrastructure properly. Reviewers: ldionne, mclow.lists, EricWF Subscribers: christof, jkorous, dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D56519 llvm-svn: 350872
2019-01-09[NFC] Always lock free test: add indirectionJF Bastien
I have a big patch coming up, and this indirection is required to avoid hitting the following after my big change: error: empty struct has size 0 in C, size 1 in C++ [-Werror,-Wextern-c-compat] llvm-svn: 350772
2019-01-09[NFC] Normalize some test 'main' signaturesJF Bastien
There were 3 tests with 'int main(void)', and 6 with the return type on a different line. I'm about to send a patch for main in tests, and this NFC change is unrelated. llvm-svn: 350770
2019-01-09[libcxx] Add a script to run CI on older MacOS versionsLouis Dionne
This script can be used by CI systems to test things like availability markup and binary compatibility on older MacOS versions. This is still a bit rough on the edges, for example we don't test libc++abi yet. llvm-svn: 350752
2019-01-09[libcxx] Add a script to run CI on MacOSLouis Dionne
CI systems like Green Dragon should use this script so as to make reproducing errors easy locally. llvm-svn: 350740
2019-01-09Mark two UDL tests as being unsupported with Clang 7Eric Fiselier
llvm-svn: 350739
2019-01-09[libcxx] Remove outdated XFAILs for aligned deallocationLouis Dionne
AppleClang 10 has been fixed and so these tests don't fail anymore. llvm-svn: 350736
2019-01-09Mark two more tests as FLAKYEric Fiselier
llvm-svn: 350692
2019-01-08[Sema] Teach Clang that aligned allocation is not supported with macosx10.13Louis Dionne
Summary: r306722 added diagnostics when aligned allocation is used with deployment targets that do not support it, but the first macosx supporting aligned allocation was incorrectly set to 10.13. In reality, the dylib shipped with macosx10.13 does not support aligned allocation, but the dylib shipped with macosx10.14 does. Reviewers: ahatanak Subscribers: christof, jkorous, dexonsmith, cfe-commits Differential Revision: https://reviews.llvm.org/D56445 llvm-svn: 350649
2019-01-08Set the buffer of an fstream to empty when the underlying file is closed. ↵Marshall Clow
This 'fixes' PR#38052 - std::fstream still good after closing and updating content. llvm-svn: 350603
2019-01-08[libcxx] Optimize vectors construction of trivial types from an iterator ↵Volodymyr Sapsai
range with const-ness mismatch. We already have a specialization that will use memcpy for construction of trivial types from an iterator range like std::vector<int>(int *, int *); But if we have const-ness mismatch like std::vector<int>(const int *, const int *); we would use a slow path that copies each element individually. This change enables the optimal specialization for const-ness mismatch. Fixes PR37574. Contributions to the patch are made by Arthur O'Dwyer, Louis Dionne. rdar://problem/40485845 Reviewers: mclow.lists, EricWF, ldionne, scanon Reviewed By: ldionne Subscribers: christof, ldionne, howard.hinnant, cfe-commits Differential Revision: https://reviews.llvm.org/D48342 llvm-svn: 350583
2019-01-07Mark more tests as flakyEric Fiselier
llvm-svn: 350550
2019-01-07Add the feature test macros that were defined in p1353r0 to the headers of ↵Marshall Clow
the appropriate tests. No actual tests yet, so NFC. llvm-svn: 350535
2019-01-06[libcxx] Support building hermetic static libraryPetr Hosek
This is useful when static libc++ library is being linked into shared libraries that may be used in combination with libraries. We want to avoid we exporting libc++ symbols in those cases where this option is useful. This is provided as a CMake option and can be enabled by libc++ vendors as needed. Differential Revision: https://reviews.llvm.org/D55404 llvm-svn: 350489
2019-01-06Fix PR39749 - Headers containing just #error harm __has_include.Eric Fiselier
This patch changes <experimental/foo> to use #warning instead of is harmful to common feature detection idioms. We should also consider only emitting the warning when __DEPRECATED is defined, like we do in the <ext/foo> headers. Users may want to specify "-Werror=-W#warnings" while still ignoring the libc++ warnings. llvm-svn: 350485
2019-01-05Fix flaky symlink access time test.Eric Fiselier
last_write_time(sym, new_time) changes the modification time of the file referenced by the symlink. But reading through the symlink may change the symlinks's access time. This meant the previous test that checked that the symlinks access time was unchanged was incorrect and made the test flaky. This patch removes this test (there really is no non-flaky way to test that the new access time coorisponds to the time at which the symlink was last dereferenced). This should unflake the test. llvm-svn: 350478
2019-01-05Revert "D56064: More tolerance for flaky tests in libc++ on NetBSD"Kamil Rytarowski
Requested by EricWF. llvm-svn: 350477
2019-01-03De-tab a couple tests. NFCMarshall Clow
llvm-svn: 350330
2018-12-30More tolerance for flaky tests in libc++ on NetBSDKamil Rytarowski
Summary: Tests marked with the flaky attribute ("FLAKY_TEST.") can still report false positives in local tests and on the NetBSD buildbot. Additionally a number of tests (probably all threaded ones) unmarked with the flaky attribute is flaky on NetBSD. An ideal solution on the libcxx side would be to raise max retries for NetBSD and mark failing tests with the flaky flag, however this adds more maintenance burden and constant monitoring of flaky tests. Reduce the work and handle flaky tests as more flaky on NetBSD and allow flakiness of other tests on NetBSD. Reviewers: mgorny, EricWF Reviewed By: mgorny Subscribers: christof, llvm-commits, libcxx-commits Differential Revision: https://reviews.llvm.org/D56064 llvm-svn: 350170
2018-12-21[libcxx] Remove unused macro _LIBCPP_HAS_UNIQUE_TYPEINFOLouis Dionne
Summary: We already have the negation of that as _LIBCPP_HAS_NONUNIQUE_TYPEINFO. Having both defined is confusing, since only one of them is used. Reviewers: EricWF, mclow.lists Subscribers: christof, jkorous, dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D54537 llvm-svn: 349947
2018-12-21[NFC] Fix typo in commentLouis Dionne
llvm-svn: 349932
2018-12-21Fix test case breakages caused by lexically_relative changeEric Fiselier
llvm-svn: 349888
2018-12-21Don't forward declare _FilesystemClock in C++03Eric Fiselier
llvm-svn: 349887
2018-12-21Fix copy paste error in file_clock testsEric Fiselier
llvm-svn: 349886
2018-12-21Implement LWG 3096: path::lexically_relative is confused by trailing slashesEric Fiselier
path("/dir/").lexically_relative("/dir"); now returns "." instead of "" llvm-svn: 349885
2018-12-21Implement LWG 3065: Make path operators friends.Eric Fiselier
This prevents things like: using namespace std::filesystem; auto x = L"a/b" == std::string("a/b"); llvm-svn: 349884
2018-12-21Implement LWG 3145: file_clock breaks ABI for C++17 implementations.Eric Fiselier
This patch adds std::chrono::file_clock, but without breaking the existing ABI for std::filesystem. llvm-svn: 349883
2018-12-21Implement LWG 2936: Path comparison is defined in terms of the generic formatEric Fiselier
This patch implements path::compare according to the current spec. The only observable change is the ordering of "/foo" and "foo", which orders the two paths based on having or not having a root directory (instead of lexically comparing "/" to "foo"). llvm-svn: 349881
2018-12-21Mark two filesystem LWG issues as complete - nothing to doEric Fiselier
llvm-svn: 349877
2018-12-20[libcxx] Fix order checking in unordered_multimap tests.Louis Dionne
Some tests assume that iteration through an unordered multimap elements will return them in the same order as at the container creation. This assumption is not true since the container is unordered, so that no specific order of elements is ever guaranteed for such container. This patch introduces checks verifying that any iteration will return elements exactly from a set of valid values and without repetition, but in no particular order. Reviewed as https://reviews.llvm.org/D54838. Thanks to Andrey Maksimov for the patch. llvm-svn: 349780
2018-12-19[libcxx] Use custom allocator's `construct` in C++03 when available.Volodymyr Sapsai
Makes libc++ behavior consistent between C++03 and C++11. Can use `decltype` in C++03 because `include/__config` defines a macro when `decltype` is not available. Reviewers: mclow.lists, EricWF, erik.pilkington, ldionne Reviewed By: ldionne Subscribers: dexonsmith, cfe-commits, howard.hinnant, ldionne, christof, jkorous, Quuxplusone Differential Revision: https://reviews.llvm.org/D48753 llvm-svn: 349676
2018-12-19Work around GCC 9.0 regressionEric Fiselier
llvm-svn: 349663
2018-12-19Add missing include to test. NFCMarshall Clow
llvm-svn: 349639
2018-12-18Portability fix: add missing includes and static_casts. Reviewed as ↵Marshall Clow
https://reviews.llvm.org/D55777. Thanks to Andrey Maksimov for the patch. llvm-svn: 349566
2018-12-18Rework the C strings tests to use ASSERT_SAME_TYPE. NFC there. Also change ↵Marshall Clow
cwchar.pass.cpp to avoid constructing a couple things from zero - since apparently they can be enums in some weird C library. NFC there, either, since the values were never used. llvm-svn: 349522
2018-12-18[libcxx] Remove XFAILs for older macOS versionsLouis Dionne
That test doesn't fail anymore since r349378, since the assertions that r349378 removed must have been bugs in the dylib at some point. llvm-svn: 349484