This change is conceptual, since the actual masking is only applied
after constexpr-if branch on _S_is_partial.

Signed-off-by: Matthias Kretz <[email protected]>

libstdc++-v3/ChangeLog:

        * include/bits/simd_mask.h (_M_concat_data): Default to sanitize
        only when the mask is partial. Don't force (unused) sanitize on
        the power-of-2 mask member.
---
 libstdc++-v3/include/bits/simd_mask.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/simd_mask.h b/libstdc++-v3/include/
bits/simd_mask.h
index 1bf74e5ae599..41477cbc9b94 100644
--- a/libstdc++-v3/include/bits/simd_mask.h
+++ b/libstdc++-v3/include/bits/simd_mask.h
@@ -581,7 +581,7 @@ _S_recursive_bit_cast(const basic_mask<_UBytes, _UAbi>& 
__x)
 
       [[__gnu__::__always_inline__]]
       constexpr auto
-      _M_concat_data(bool __do_sanitize = true) const
+      _M_concat_data(bool __do_sanitize = _S_is_partial) const
       {
        if constexpr (_S_is_scalar)
          return __vec_builtin_type<__integer_from<_Bytes>, 
1>{__integer_from<_Bytes>(-_M_data)};
@@ -1501,18 +1501,18 @@ struct _Tmp
 
       [[__gnu__::__always_inline__]]
       constexpr auto
-      _M_concat_data(bool __do_sanitize = true) const
+      _M_concat_data(bool __do_sanitize = _S_is_partial) const
       {
        if constexpr (_S_use_bitmask)
          {
            static_assert(_S_size <= numeric_limits<unsigned long 
long>::digits,
                          "cannot concat more than 64 bits");
            using _Up = _Bitmask<_S_size>;
-           return _Up(_M_data0._M_concat_data(true) | 
(_Up(_M_data1._M_concat_data(__do_sanitize)) << _N0));
+           return _Up(_M_data0._M_concat_data() | 
(_Up(_M_data1._M_concat_data(__do_sanitize)) << _N0));
          }
        else
          {
-           auto __lo = _M_data0._M_concat_data(true);
+           auto __lo = _M_data0._M_concat_data();
            auto __hi = 
__vec_zero_pad_to<sizeof(__lo)>(_M_data1._M_concat_data(__do_sanitize));
            return __vec_concat(__lo, __hi);
          }
-- 
──────────────────────────────────────────────────────────────────────────
 Dr. Matthias Kretz                           https://mattkretz.github.io
 GSI Helmholtz Center for Heavy Ion Research               https://gsi.de
 std::simd
──────────────────────────────────────────────────────────────────────────

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to