-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initially use [[msvc::no_unique_address]]
for some C++23 components
#4960
base: main
Are you sure you want to change the base?
Initially use [[msvc::no_unique_address]]
for some C++23 components
#4960
Conversation
- `in_value_result` - `out_value_result` - `mdspan` - `join_with_view`'s sentinel - `enumerate_view`'s iterator and sentinel - `chunk_view`'s iterator - `slide_view`'s sentinel
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This is blocked by DevCom-10754777 VSO-2266748 "Wrong code generation when initializing a variable of class type that contains multiple instances of the same empty class in its layout", fixed by MSVC-PR-583942 on 2024-10-10, shipping in 17.13p2. Click to expand fully reduced repro:
#include <cassert>
using Extents = signed char;
struct Holder {
constexpr Holder(const Extents& e) : exts(e) {}
[[msvc::no_unique_address]] Extents exts;
};
struct Empty {};
struct Mdspan {
[[msvc::no_unique_address]] Holder holder;
[[msvc::no_unique_address]] Empty acc{};
[[msvc::no_unique_address]] int val{1729};
};
int main() {
Extents extents{7};
Mdspan md{extents};
assert(md.holder.exts == extents);
} 17.12 Preview 3 x64:
Current
We talked about this in Discord, and I now agree with @AlexGuteniev that all use of
|
Resolved a trivial merge conflict in |
Towards #1364.
Applied:
in_value_result
out_value_result
mdspan
join_with_view
's sentinelenumerate_view
's iterator and sentinelchunk_view
's iteratorslide_view
's sentinelelements_of
Not yet applied due to DevCom-10588147 and possibly related issues.
view_interface
as their empty bases.iterator_category
.chunk_by_view
's iterator, possibly because the non-potentially-overlapping member is listed first.Not yet applied because it's unclear to me how to reuse padding bytes in
tuple
zip
-familyNot yet applied due to another unclear reasons
expected
Other changes:
/* [[no_unique_address]] */
for_Index_type
ofrepeat_view
's iterator because the_Index_type
never has padding bytes<mdspan>
: More EBO #3847 to a separated test fileattempt to test NVCC for these changesfailed and reverted.