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
