Hi Tomasz, Thank you for the review! Sorry about the missing parens, even after "Ctrl+F"ing each of the emails I can't find the requires clause (the two I found both need the parens).
Do you think it's possible to merge this series before the other two outstanding patch series? There's some risk of collision; making changes to this patch series is much more time consuming than rebasing (and retesting the other two patch series). Thank you, Luc On 8/4/25 12:43, Tomasz Kaminski wrote:
Hi, I this time I made a quick pass through all changes, before commenting on first commits, and they look solid to me, and I haven't noticed anything I would like to change (except parentheses around requires, but I will handle that locally). I will try to do a full review during this week. Regards, Tomasz On Sun, Aug 3, 2025 at 10:59 PM Luc Grosheintz <[email protected]> wrote:The combined effect of this sequence of change is: * a reduction in the number of template instantiations, by - avoiding needless dependency of IndexType, - special formulas for low-rank extents, - special formulas for (nearly) fully dynamic extents. * improved code quality, by - precomputing partial products of the static extents, - special cases for low-rank extents, - rewriting the condition E[i] == dynamic_extent in a more optimizer friendly manner. - effectively loop-unrolling extents::operator==. While simplistic micro-benchmarking shows the effectiveness of these changes, likely the stronger argument is presented in each commit: a) each change removes needless complexity, b) before/after examples of generated code show the effectiveness. Luc Grosheintz (8): libstdc++: Reduce template instantiations in <mdspan>. libstdc++: Precompute products of static extents. libstdc++: Improve low-rank layout_{left,right}::stride. libstdc++: Improve fully dynamic extents in mdspan. libstdc++: Improve nearly fully dynamic extents in mdspan. libstdc++: Reduce indirection in extents::extent. libstdc++: Improve extents::operator==. libstdc++: Replace numeric_limit with __int_traits in mdspan. libstdc++-v3/include/std/mdspan | 282 +++++++++++++----- .../mdspan/extents/class_mandates_neg.cc | 3 + 2 files changed, 208 insertions(+), 77 deletions(-) -- 2.50.0
