[PATCH 1/4] libstdc++: Reduce the size of an unbounded iota_view

Jonathan Wakely jwakely@redhat.com
Mon Sep 28 09:31:55 GMT 2020


On 28/09/20 00:48 -0400, Patrick Palka via Libstdc++ wrote:
>libstdc++-v3/ChangeLog:
>
>	* include/std/ranges (iota_view::_M_bound): Give it
>	[[no_unique_address]].
>	* testsuite/std/ranges/iota/iota_view.cc: Check that an
>	unbounded iota_view has minimal size.

OK.

> libstdc++-v3/include/std/ranges                     | 2 +-
> libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc | 3 +++
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
>diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
>index ed04fa0001d..964a2b616a6 100644
>--- a/libstdc++-v3/include/std/ranges
>+++ b/libstdc++-v3/include/std/ranges
>@@ -511,7 +511,7 @@ namespace ranges
>       };
>
>       _Winc _M_value = _Winc();
>-      _Bound _M_bound = _Bound();
>+      [[no_unique_address]] _Bound _M_bound = _Bound();
>
>     public:
>       iota_view() = default;
>diff --git a/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc b/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
>index 65d166fbd3b..8a33e10a093 100644
>--- a/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
>+++ b/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
>@@ -77,6 +77,9 @@ test04()
>   VERIFY( it == v.end() );
> }
>
>+// Verify we optimize away the 'bound' data member of an unbounded iota_view.
>+static_assert(sizeof(std::ranges::iota_view<char>) == 1);
>+
> int
> main()
> {
>-- 
>2.28.0.618.g9bc233ae1c
>



More information about the Gcc-patches mailing list