File 495a387.patch of Package xsimd

From 495a387ec6c15a095e91e3d0f75f752d28c8cf43 Mon Sep 17 00:00:00 2001
From: serge-sans-paille <sergesanspaille@free.fr>
Date: Wed, 7 Jan 2026 08:34:53 +0100
Subject: [PATCH] Simplify test using a stack allocated array

This also happens to fix #1232, although this makes little sense to me.
---
 test/test_api.cpp   | 20 +++++++++++---------
 test/test_utils.hpp |  7 +++++++
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/test/test_api.cpp b/test/test_api.cpp
index 73f74619a..2ffbc26e2 100644
--- a/test/test_api.cpp
+++ b/test/test_api.cpp
@@ -138,29 +138,31 @@ struct xsimd_api_test
         batch_type b = batch_type::load(v.data(), xsimd::aligned_mode());
         V res(size);
 
-        bool* b_data = new bool[size];
+        std::array<bool, size> b_data;
+
+        std::array<bool, size> b_ref;
+        std::fill(b_ref.begin(), b_ref.end(), true);
 
         xsimd::store_as(res.data(), b, xsimd::unaligned_mode());
         INFO(name, " unaligned");
         CHECK_VECTOR_EQ(res, v);
 
-        std::fill(b_data, b_data + size, false);
+        std::fill(b_data.begin(), b_data.end(), false);
         batch_bool_type bb = (b == b);
-        xsimd::store_as(b_data, bb, xsimd::unaligned_mode());
+        xsimd::store_as(&b_data[0], bb, xsimd::unaligned_mode());
+
         INFO(name, " batch_bool unaligned");
-        CHECK_UNARY(std::accumulate(b_data, b_data + size, true, std::logical_and<bool>()));
+        CHECK_ARRAY_EQ(b_ref, b_data);
 
         xsimd::store_as(res.data(), b, xsimd::aligned_mode());
         INFO(name, " aligned");
         CHECK_VECTOR_EQ(res, v);
 
-        std::fill(b_data, b_data + size, false);
+        std::fill(b_data.begin(), b_data.end(), false);
         bb = (b == b);
-        xsimd::store_as(b_data, bb, xsimd::aligned_mode());
+        xsimd::store_as(&b_data[0], bb, xsimd::aligned_mode());
         INFO(name, " batch_bool aligned");
-        CHECK_UNARY(std::accumulate(b_data, b_data + size, true, std::logical_and<bool>()));
-
-        delete[] b_data;
+        CHECK_ARRAY_EQ(b_ref, b_data);
     }
 
     template <class T>
diff --git a/test/test_utils.hpp b/test/test_utils.hpp
index 0da0c6f12..b22cca8ac 100644
--- a/test/test_utils.hpp
+++ b/test/test_utils.hpp
@@ -538,6 +538,13 @@ namespace detail
         INFO(#v2 ":", v2);                                 \
         CHECK_UNARY(::detail::expect_vector_near(v1, v2)); \
     } while (0)
+#define CHECK_ARRAY_EQ(v1, v2)                            \
+    do                                                    \
+    {                                                     \
+        INFO(#v1 ":", v1);                                \
+        INFO(#v2 ":", v2);                                \
+        CHECK_UNARY(::detail::expect_array_near(v1, v2)); \
+    } while (0)
 
 namespace xsimd
 {
openSUSE Build Service is sponsored by