In D141748#4060636, @efriedma wrote:The explanation makes sense.
Can we make this specifically apply to _Interlocked* functions, instead of all atomics on Windows targets? I'd prefer not to impose this performance penalty on other users of atomics if we can avoid it.
Please use GitHub pull requests for new patches. Phabricator shutdown timeline
- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Feed Advanced Search
Advanced Search
Advanced Search
Jan 17 2023
Jan 17 2023
Jan 5 2022
Jan 5 2022
BillyONeal added a comment to D116712: [libc++] [test] Remove `UNSUPPORTED: stdlib=msvc` from lock.pass.cpp.
There should probably be a note here that this test isn't testing
standard guarantee; it's testing that Howard's dining philosophers
rebooted algorithm is implemented.
Jan 5 2022, 5:46 PM · Restricted Project
Dec 8 2020
Dec 8 2020
In D87974#2439043, @jwakely wrote:In D87974#2438723, @zoecarver wrote:In D87974#2438682, @BillyONeal wrote:Are they actually the same, with the same handling of corner cases like unions and tail padding?
There's more to this than just the name, and if they aren't the same, it seems better to have two names.They are both implementing the same C++ feature, with the same desired semantics of zeroing out any bits in the object representation that aren't in the value representation. If they differ, one or the other would have a bug.
Do they support non-trivially copyable types? That isn't required for the atomic compare exchange feature, but is relevant for a feature exposed to users. What about extensions like zero-sized arrays or C99 flexible array members?
Dec 7 2020
Dec 7 2020
Are they actually the same, with the same handling of corner cases like unions and tail padding?
There's more to this than just the name, and if they aren't the same, it seems better to have two names.
Dec 6 2020
Dec 6 2020
In D87974#2432793, @zoecarver wrote:So, it looks like GCC already uses __builtin_clear_padding and MSVC already uses __builtin_zero_non_value_bits. This patch (obviously) is currently implementing __builtin_zero_non_value_bits but, I had planned to update it to use __builtin_clear_padding. Maybe that's not the best course of action, though.
We should all try to agree on _one_ name. CC @BillyONeal @jwakely thoughts?
May 14 2020
May 14 2020
BTW ThreadPoolExecutor has undefined behavior since there's a detached thread touching the standard library when the program exits violating [basic.start.term]/6. Detached threads are almost never safe.
May 14 2020, 4:21 PM · Restricted Project
Feb 22 2020
Feb 22 2020
BillyONeal committed rGe48849a24041: [libcxx] [test] Suppress MSVC++ warning 4640 under /Zc:threadSafeInit- (authored by BillyONeal).
[libcxx] [test] Suppress MSVC++ warning 4640 under /Zc:threadSafeInit-
Feb 18 2020
Feb 18 2020
BillyONeal added a comment to D73138: [libcxx] [test] Correct asserted type in subspan test; subspan with count should never produce dynamic_extent.
Thanks!
Feb 18 2020, 12:35 PM · Restricted Project
BillyONeal added a comment to D73138: [libcxx] [test] Correct asserted type in subspan test; subspan with count should never produce dynamic_extent.
@ldionne I think you're correct, though the test there is more complex than it needs to be (because the ==Count cases are the only ever encountered here).
Feb 18 2020, 11:58 AM · Restricted Project
Jan 22 2020
Jan 22 2020
BillyONeal added a comment to rG45f630d729e2: [libcxx] [test] Don't assert that moved-from containers with non-POCMA….
This was https://reviews.llvm.org/D61366
BillyONeal committed rG45f630d729e2: [libcxx] [test] Don't assert that moved-from containers with non-POCMA… (authored by BillyONeal).
[libcxx] [test] Don't assert that moved-from containers with non-POCMA…
@BillyONeal has proposed a more reasonable set of requirements
Jan 21 2020
Jan 21 2020
BillyONeal abandoned D61365: [libcxx] [test] Suppress float->int narrowing warning in vector range-construction test..
It looks like someone already fixed this.
BillyONeal created D73138: [libcxx] [test] Correct asserted type in subspan test; subspan with count should never produce dynamic_extent.
Jan 21 2020, 1:37 PM · Restricted Project
Jan 14 2020
Jan 14 2020
BillyONeal committed rG6d8abe424a77: [libcxx] [test] Add casts to avoid signed/unsigned mismatch warnings on MSVC++ (authored by BillyONeal).
[libcxx] [test] Add casts to avoid signed/unsigned mismatch warnings on MSVC++
Jan 8 2020
Jan 8 2020
BillyONeal committed rG85ee4ff4e474: [libcxx] [test] Disable refwrap/weak_result.pass.cpp in C++20 mode (broken by… (authored by BillyONeal).
[libcxx] [test] Disable refwrap/weak_result.pass.cpp in C++20 mode (broken by…
Oct 11 2019
Oct 11 2019
Oct 11 2019, 9:19 AM · Restricted Project
Oct 10 2019
Oct 10 2019
Oct 10 2019, 9:28 PM · Restricted Project
Sep 6 2019
Sep 6 2019
I have not run either through tests yet...
Sep 6 2019, 6:26 PM · Restricted Project
Sep 6 2019, 10:10 AM · Restricted Project
That's worse; it replaced 2n assignments with n assignments, n constructions, and n destructions. Interestingly, assigning over __saved is an optimization I should put into MSVC.
Sep 6 2019, 9:28 AM · Restricted Project
Jul 26 2019
Jul 26 2019
(In fact I observe many patterns in this review like:
In D65249#1603335, @jfb wrote:@rnk: how about I add a bit of code that wraps aligned_storage on all platforms except MSVC (where I'd implement it as Billy suggests). That would mean updating all the uses of aligned_storage to this LLVM one, but that's not a big deal.
@BillyONeal do you know if 19.11 has the aligned_storage issue on x86?
Jul 3 2019
Jul 3 2019
BillyONeal added a comment to D61366: [libcxx] [test] Don't assert that moved-from containers with non-POCMA allocators are empty..
In D61366#1569151, @mclow.lists wrote:Is there a reason this hasn't been committed?
Jul 1 2019
Jul 1 2019
BillyONeal committed rG0384a780549a: [libcxx] [test] Add void cast to result of compare_exchange_weak to suppress… (authored by BillyONeal).
[libcxx] [test] Add void cast to result of compare_exchange_weak to suppress…
May 14 2019
May 14 2019
BillyONeal added inline comments to D61364: [libcxx] [test] Fix incorrect allocator::construct assertions in associative container tests.
May 14 2019, 3:58 PM · Restricted Project
BillyONeal added a comment to D61364: [libcxx] [test] Fix incorrect allocator::construct assertions in associative container tests.
In D61364#1502200, @EricWF wrote:From Billy and my last discussion, I think we came to the agreement that it's not clear exactly what the "standard behavior" is.
May 14 2019, 3:56 PM · Restricted Project
BillyONeal added a comment to D61364: [libcxx] [test] Fix incorrect allocator::construct assertions in associative container tests.
In D61364#1502172, @ldionne wrote:Do you know *why* the tests are failing with libc++? I see this overload for insert and it seems like it should be a better match?
May 14 2019, 3:37 PM · Restricted Project
BillyONeal added a comment to D61366: [libcxx] [test] Don't assert that moved-from containers with non-POCMA allocators are empty..
In D61366#1502170, @Quuxplusone wrote:you are indeed allowed to move the elements
BillyONeal added a comment to D61366: [libcxx] [test] Don't assert that moved-from containers with non-POCMA allocators are empty..
In D61366#1502073, @EricWF wrote:I'm not sure I agree with your design decision, but this patch LGTM.
May 10 2019
May 10 2019
In D59676#1498167, @aganea wrote:@BillyONeal do you think your new parallel algorithm(s) will give a better throughput?
May 10 2019, 11:37 AM · Restricted Project
May 6 2019
May 6 2019
BillyONeal added inline comments to D61365: [libcxx] [test] Suppress float->int narrowing warning in vector range-construction test..
May 1 2019
May 1 2019
BillyONeal updated the diff for D61366: [libcxx] [test] Don't assert that moved-from containers with non-POCMA allocators are empty..
Also fixed vector<bool> test.
BillyONeal updated the summary of D61364: [libcxx] [test] Fix incorrect allocator::construct assertions in associative container tests.
May 1 2019, 12:10 AM · Restricted Project
Apr 30 2019
Apr 30 2019
BillyONeal created D61364: [libcxx] [test] Fix incorrect allocator::construct assertions in associative container tests.
Apr 30 2019, 11:59 PM · Restricted Project
Apr 18 2019
Apr 18 2019
BillyONeal committed rGbd7db5ac958d: [libc++] [test] Add missing required headers to midpoint.integer.pass.cpp (authored by BillyONeal).
[libc++] [test] Add missing required headers to midpoint.integer.pass.cpp
Apr 2 2019
Apr 2 2019
BillyONeal committed rG4c1581e2da81: [libcxx] [test] Add missing <stdexcept> to name std::out_of_range to string. (authored by BillyONeal).
[libcxx] [test] Add missing <stdexcept> to name std::out_of_range to string.
BillyONeal committed rG2bb0f75a8015: [libcxx] [test] Use ptrdiff_t rather than int in splice_after_range.pass.cpp to… (authored by BillyONeal).
[libcxx] [test] Use ptrdiff_t rather than int in splice_after_range.pass.cpp to…
BillyONeal committed rG7b9e4ebb033e: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp. (authored by BillyONeal).
[libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp.
BillyONeal closed D60104: [libcxx] [test] Use ptrdiff_t rather than int in splice_after_range.pass.cpp to avoid narrowing from pointer subtraction to int warnings..
Committed r357546
Committed r357545
Apr 2 2019, 5:04 PM · Restricted Project
BillyONeal updated the diff for D60023: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp..
Apr 2 2019, 5:04 PM · Restricted Project
BillyONeal added a comment to D60023: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp..
Tim Song suggests that http://eel.is/c++draft/string.require#2 indicates that basic_string actually does need to provide the strong guarantee here. While I think that wording is a mess I think I'll fix our basic_string to do that instead of that part of this change.
Apr 2 2019, 4:36 PM · Restricted Project
Apr 1 2019
Apr 1 2019
BillyONeal updated the diff for D60023: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp..
Fixed misspelled test macro.
Apr 1 2019, 6:41 PM · Restricted Project
BillyONeal updated the diff for D60023: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp..
Fix asserts for the strong EH guarantee.
Apr 1 2019, 1:05 PM · Restricted Project
Mar 30 2019
Mar 30 2019
BillyONeal added inline comments to D60023: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp..
Mar 30 2019, 2:51 AM · Restricted Project
BillyONeal added inline comments to D60023: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp..
Mar 30 2019, 2:44 AM · Restricted Project
BillyONeal added inline comments to D60023: [libcxx] [test] Fix test bugs in string.cons/copy_alloc.pass.cpp..
Mar 30 2019, 2:22 AM · Restricted Project
Mar 29 2019
Mar 29 2019
Mar 29 2019, 7:02 PM · Restricted Project
Mar 22 2019
Mar 22 2019
f you happen to have pointers to the APIs to use here… :)
Mar 22 2019, 3:50 PM · Restricted Project
I think this is a good change regardless:
Mar 22 2019, 12:52 PM · Restricted Project
'assumes' in what way? If concrt140.dll uses msvcp140.dll internally but no STL objects are passed from user code (built with libc++) to ppl functions to concrt140.dll, things should be fine for example.
Mar 22 2019, 12:25 PM · Restricted Project
BillyONeal abandoned D59621: [libcxx] [test] Add (void) casts to operator new calls, to suppress warnings generated by [[nodiscard]]..
This didn't work out, we'll just skip the tests for MSVC++ for now.
Mar 21 2019
Mar 21 2019
We (MSVC++) could just fix pplwin.h to not have this assumption, since clang doesn't need the workaround that forces us to reinterperet_cast void*, but that fix probably wouldn't make it shipped until VS 2019 Update 1 at the earliest (I'd have to go through ship room) and Update 2 more likely.
Mar 21 2019, 7:15 PM · Restricted Project
Attempting to use ConcRT powered machinery (like the Concurrency:: primitives in this file) with a different STL like libc++ is likely to be non-functional, since that calls into concrt140.dll which assumes MSVC++'s STL. There's also an issue here that this code is using std::mutex with ConcRT powered machinery like Concurrency::parallel_for_each, which is not supported and is likely to result in deadlocks. ConcRT assumes that everything you give to it is non-blocking, so you can't use Concurrency::parallel_for_each with platform synchronization primitives. (This is the biggest reason we, MSVC++, are moving away from ConcRT as a technoligy and did not use it to power our parallel algorithms implementation)
Mar 21 2019, 7:04 PM · Restricted Project
Mar 20 2019
Mar 20 2019
BillyONeal added a comment to D59621: [libcxx] [test] Add (void) casts to operator new calls, to suppress warnings generated by [[nodiscard]]..
This broke all the build bots, so I reverted the SVN change. I thought the nodiscard-ness was tested elsewhere but I'm not sure about interaction between this and -faligned-allocation.
BillyONeal committed rG277cf30d6c80: [libcxx] [test] Revert r356632 add (void) casts to operator new calls, to… (authored by BillyONeal).
[libcxx] [test] Revert r356632 add (void) casts to operator new calls, to…
BillyONeal committed rG49fc2655819f: [libcxx] [test] Add (void) casts to operator new calls, to suppress warnings… (authored by BillyONeal).
[libcxx] [test] Add (void) casts to operator new calls, to suppress warnings…
BillyONeal added a comment to D59621: [libcxx] [test] Add (void) casts to operator new calls, to suppress warnings generated by [[nodiscard]]..
As an FYI, I committed this to subversion as r356632 since I haven't figured out the new git world order yet.....
Oct 19 2018
Oct 19 2018
Thank you! :D
BillyONeal abandoned D53468: [libcxx] [test] Don't silence MSVC STL deprecation warnings when testing _LIBCPP_ENABLE_DEPRECATION_WARNINGS.
Actually this doesn't work -- because we /FI this thing, this file is included before the test gets to say _LIBCPP_ENABLE_DEPRECATION_WARNINGS.
BillyONeal updated the diff for D53466: [libcxx] [test] Don't detect Windows' UCRT with TEST_COMPILER_C1XX.
Also fixed cstdlib tests.
Committed r344821
Committed r344820
Aug 13 2018
Aug 13 2018
Remove changes to detach tests.
Aug 10 2018
Aug 10 2018
In D50549#1194852, @EricWF wrote:We should add some TSAN folks to this review, since I think these are also TSAN false negatives; perhaps correctly, perhaps not.
Aug 9 2018
Aug 9 2018
Aug 7 2018
Aug 7 2018
BillyONeal added a reviewer for D47400: [libcxx] [test] Allow a standard library that implements LWG 1203 in istream.rvalue/rvalue.pass.cpp: ldionne.
Adding ldionne as suggested by Eric.
BillyONeal added a reviewer for D47395: [libcxx] [test] Remove nonportable locale assumption in basic.ios.members/narrow.pass.cpp: ldionne.
Adding ldionne as suggested by Eric.
BillyONeal added a comment to D47400: [libcxx] [test] Allow a standard library that implements LWG 1203 in istream.rvalue/rvalue.pass.cpp.
Committed r339214
BillyONeal added a comment to D47395: [libcxx] [test] Remove nonportable locale assumption in basic.ios.members/narrow.pass.cpp.
Committed r339213
BillyONeal closed D50421: [libcxx] [test] Remove assertion that <bitset> includes <cstddef> and <stdexcept>..
Committed r339212
BillyONeal updated the diff for D50421: [libcxx] [test] Remove assertion that <bitset> includes <cstddef> and <stdexcept>..
Remove comma.
Committed r339209
BillyONeal added inline comments to D50421: [libcxx] [test] Remove assertion that <bitset> includes <cstddef> and <stdexcept>..
Jul 25 2018
Jul 25 2018
In D49774#1175650, @ldionne wrote:In D49774#1175543, @BillyONeal wrote:In D49774#1175131, @mclow.lists wrote:Another problem (that Eric and I discussed last night) is that filesystem is part of C++17, and file_clock is C++20. So we need a solution for C++17 as well.
It seems like we need to fix C++20 to allow that to be a typedef to a type in std::filesystem or that will be ABI breaking for MSVC++. IMO we should fix the spec to allow that rather than make libc++ jump through insane hoops.
We could also just provide file_clock "early" in C++17. Strictly speaking that may make our implementation non-conforming, but IDK how big of a deal this would be?
In D49774#1175131, @mclow.lists wrote:Another problem (that Eric and I discussed last night) is that filesystem is part of C++17, and file_clock is C++20. So we need a solution for C++17 as well.
May 25 2018
May 25 2018
Apr 26 2018
Apr 26 2018
BillyONeal updated subscribers of D34331: func.wrap.func.con: Unset function before destroying anything.
Why did tests for this this go into std? [reentrancy]/1 says this isn't required to work. Moreover, assignments in the dtor like this *can't* work in the general case because they would try to overwrite the SSO space. e.g. what do you expect this to do?