[PATCH v5 0/8] Implement layouts from mdspan.

Luc Grosheintz luc.grosheintz@gmail.com
Fri Jun 13 11:17:36 GMT 2025


Thank you both for the tips and information:

   * In that case I can update the auxiliary files after mdspan.
   * I use gcc-commit-mklog, but during rebasing / fixups, I edit
   the changelog manually (and mistakes creep in). Just tried
   gcc-verify it found a mistake in a patch I was preparing and
   haven't sent yet, very nice!
   * I've tried the one to check formatting, but it complained
   about whitespace I was quite sure I'd gotten right. Is there
   a C++ format checker?

On 6/12/25 12:06, Tomasz Kaminski wrote:
> Hi,
> 
> I have landed all the layout patches on master. Thank you very much for
> your continued contributions.
> 
> While submitting, I noticed that few of the commit messages do not match
> the format (space vs tabulator), and I fixed them up.
> and realized that I haven't shared tools that we use to
> automatically verify that (sorry for bringing it late).
> 
> If you call contrib/gcc-git-customization.sh in the main director of gcc
> sources, you will get git aliases added:
>   - git gcc-verify commit - will check format for given commit
>   - git gcc-commit-mklog - will create a commit message with changelog files
> listed
> Hope that this helps.
> 
> Regards,
> Tomasz
> 
> 
> On Wed, Jun 11, 2025 at 7:28 PM Jonathan Wakely <jwakely@redhat.com> wrote:
> 
>> On Tue, 3 Jun 2025 at 18:00, Luc Grosheintz <luc.grosheintz@gmail.com>
>> wrote:
>>>
>>> Today I found a file called `gcc/cp/cxxapi-data.csv` that contains
>>>
>>> # unimplemented <mdspan>,extents,1,no
>>> # unimplemented <mdspan>,dextents,1,no
>>> # unimplemented <mdspan>,layout_left,1,no
>>> # unimplemented <mdspan>,layout_right,1,no
>>> # unimplemented <mdspan>,layout_stride,1,no
>>> # unimplemented <mdspan>,default_accessor,1,no
>>> # unimplemented <mdspan>,mdspan,1,cxx23
>>>
>>> I have a feeling I should have been updating this file (and maybe
>>> regenerate a file).
>>>
>>> This might be a reason for a fixup for std::extents and a v6
>>> for the layouts.
>>
>> Changing that file can be done separately.
>>
>> It's used to get the compiler to give the diagnostics "std::mdspan is
>> not available before C++23" or "mdspan not declared, maybe you meant
>> to include <mdspan>?"
>>
>> We also thought about using it to auto-generate the std.cc module
>> definition, but we haven't used it for that.
>>
>>
>>
>>
>>>
>>> On 6/3/25 18:50, Luc Grosheintz wrote:
>>>> Thank you Tomasz for the round of review. IIUC we have several
>>>> cases of if there's a v6, please change this, and no mandatory
>>>> changes.
>>>>
>>>> Would you like me to submit a v6?
>>>>
>>>> On 5/30/25 18:42, Luc Grosheintz wrote:
>>>>> The discussion for v4 is here:
>>>>> https://gcc.gnu.org/pipermail/libstdc++/2025-May/061665.html
>>>>>
>>>>> The non-trivial changes are:
>>>>>
>>>>>     * Fixed bug in __offset that called m(0...) even for empty
>> extents; added a
>>>>>       test.
>>>>>     * Fixed buggy tests for class mandates.
>>>>>     * Fix layout_stride::is_{,always_}exhaustive.
>>>>>     * Fix missing private (2x).
>>>>>     * Use cmp_equal in layout_stride::operator==
>>>>>     * Use cmp_equal in tests for std::extents (added to first commit).
>>>>>
>>>>> Additionally:
>>>>>
>>>>>     * added __empty,
>>>>>     * cleaned up parens near `requires`,
>>>>>     * changed __mapping_like to __mapping_alike,
>>>>>     * use extents_type instead of _Extents,
>>>>>     * don't comment on deviation.
>>>>>
>>>>> Luc Grosheintz (8):
>>>>>     libstdc++: Improve naming, whitespace and silence warnings for
>>>>>       extents.
>>>>>     libstdc++: Implement layout_left from mdspan.
>>>>>     libstdc++: Add tests for layout_left.
>>>>>     libstdc++: Implement layout_right from mdspan.
>>>>>     libstdc++: Add tests for layout_right.
>>>>>     libstdc++: Implement layout_stride from mdspan.
>>>>>     libstdc++: Add tests for layout_stride.
>>>>>     libstdc++: Make layout_left(layout_stride) noexcept.
>>>>>
>>>>>    libstdc++-v3/include/std/mdspan               | 725
>> +++++++++++++++++-
>>>>>    libstdc++-v3/src/c++23/std.cc.in              |   5 +-
>>>>>    .../mdspan/extents/ctor_default.cc            |   2 +-
>>>>>    .../mdspan/layouts/class_mandate_neg.cc       |  42 +
>>>>>    .../23_containers/mdspan/layouts/ctors.cc     | 438 +++++++++++
>>>>>    .../23_containers/mdspan/layouts/empty.cc     |  69 ++
>>>>>    .../23_containers/mdspan/layouts/mapping.cc   | 568 ++++++++++++++
>>>>>    .../23_containers/mdspan/layouts/stride.cc    | 526 +++++++++++++
>>>>>    8 files changed, 2360 insertions(+), 15 deletions(-)
>>>>>    create mode 100644
>> libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
>>>>>    create mode 100644
>> libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
>>>>>    create mode 100644
>> libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
>>>>>    create mode 100644
>> libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
>>>>>    create mode 100644
>> libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
>>>>>
>>>>
>>>
>>
>>
> 



More information about the Libstdc++ mailing list