Adapted from test by Lasse Collin <[email protected]> in
<https://lists.gnu.org/archive/html/bug-gnulib/2026-03/msg00094.html>.
* modules/stdc_store8_aligned-tests (Depends-on):
Depend on stdc_load8_aligned.
* tests/test-stdc_store8_aligned.c (test_strict_aliasing): New test.
(main): Use it.
---
 ChangeLog                         | 10 ++++++++++
 modules/stdc_store8_aligned-tests |  1 +
 tests/test-stdc_store8_aligned.c  | 21 +++++++++++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index fc1b251d27..4f198ee89e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2026-03-13  Paul Eggert  <[email protected]>
+
+       stdbit-h: add test for recent aligned issue.
+       Adapted from test by Lasse Collin <[email protected]> in
+       <https://lists.gnu.org/archive/html/bug-gnulib/2026-03/msg00094.html>.
+       * modules/stdc_store8_aligned-tests (Depends-on):
+       Depend on stdc_load8_aligned.
+       * tests/test-stdc_store8_aligned.c (test_strict_aliasing): New test.
+       (main): Use it.
+
 2026-03-13  Bruno Haible  <[email protected]>
 
        stdc_load8_aligned, stdc_store8_aligned: Fix strict aliasing violations.
diff --git a/modules/stdc_store8_aligned-tests 
b/modules/stdc_store8_aligned-tests
index b55e4cfb66..9d2ecebf3f 100644
--- a/modules/stdc_store8_aligned-tests
+++ b/modules/stdc_store8_aligned-tests
@@ -3,6 +3,7 @@ tests/test-stdc_store8_aligned.c
 tests/macros.h
 
 Depends-on:
+stdc_load8_aligned
 
 configure.ac:
 
diff --git a/tests/test-stdc_store8_aligned.c b/tests/test-stdc_store8_aligned.c
index 97bc4d174a..e7e62386a0 100644
--- a/tests/test-stdc_store8_aligned.c
+++ b/tests/test-stdc_store8_aligned.c
@@ -194,6 +194,26 @@ test_stdc_store8_aligned_les64 (void)
   ASSERT (data.bytes[7] == (unsigned char) 0xDF);
 }
 
+static void
+test_strict_aliasing (void)
+{
+  unsigned char *buf = malloc (8);
+  ASSERT (buf);
+  stdc_store8_aligned_leu32 (0x13121110, buf);
+  stdc_store8_aligned_leu32 (0x17161514, buf + 4);
+  stdc_store8_aligned_leu16 (0xF3F2, buf + 2);
+  ASSERT (stdc_load8_aligned_leu32 (buf) == 0xF3F21110);
+  ASSERT (stdc_load8_aligned_leu32 (buf + 4) == 0x17161514);
+  ASSERT (buf[0] == 0x10);
+  ASSERT (buf[1] == 0x11);
+  ASSERT (buf[2] == 0xF2);
+  ASSERT (buf[3] == 0xF3);
+  ASSERT (buf[4] == 0x14);
+  ASSERT (buf[5] == 0x15);
+  ASSERT (buf[6] == 0x16);
+  ASSERT (buf[7] == 0x17);
+}
+
 int
 main ()
 {
@@ -213,6 +233,7 @@ main ()
   test_stdc_store8_aligned_les16 ();
   test_stdc_store8_aligned_les32 ();
   test_stdc_store8_aligned_les64 ();
+  test_strict_aliasing ();
 
   return test_exit_status;
 }
-- 
2.53.0


Reply via email to