https://gcc.gnu.org/g:3a41229f92022bfb388911854d597721fce76714

commit r16-7911-g3a41229f92022bfb388911854d597721fce76714
Author: Tomasz Kamiński <[email protected]>
Date:   Thu Mar 5 08:57:24 2026 +0100

    libstdc++: Fix atomic/cons/zero_padding.cc test for arm-none-eabi [PR124124]
    
    The test uses dg-require-atomic-cmpxchg-word that checks if atomic compare
    exchange is available for pointer sized integers, and then test types that
    are eight bytes in size. This causes issue for targets for which pointers
    are four byte and libatomic is not present, like arm-none-eabi.
    
    This patch addresses by using short member in TailPadding and MidPadding,
    instead of int. This reduces the size of types to four bytes, while keeping
    padding bytes present.
    
            PR libstdc++/124124
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/29_atomics/atomic/cons/zero_padding.cc: Limit size of
            test types to four bytes.
    
    Reviewed-by: Jonathan Wakely <[email protected]>
    Signed-off-by: Tomasz Kamiński <[email protected]>

Diff:
---
 libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc 
b/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc
index f85ac4859ec5..4418b6c07e60 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc
@@ -6,12 +6,12 @@
 #include <cstring>
 #include <testsuite_hooks.h>
 
-struct TailPadding { int i; char c; };
+struct TailPadding { short i; char c; };
 TailPadding ztail{1, 2}; // zeroed-padding
 constexpr std::atomic<TailPadding> ctail(TailPadding{1,2});
 std::atomic<TailPadding> gtail(TailPadding{1,2});
 
-struct MidPadding { char c; int x; };
+struct MidPadding { char c; short i; };
 MidPadding zmid{1, 2}; // zeroed-padding
 constexpr std::atomic<MidPadding> cmid(MidPadding{1,2});
 std::atomic<MidPadding> gmid(MidPadding{1,2});
@@ -25,12 +25,12 @@ struct Ctor
 {
   Ctor() = default;
 
-  constexpr Ctor(char pc, char pi)
+  constexpr Ctor(char pc, short pi)
     : c(pc), i(pi)
   {}
 
   char c;
-  int i;
+  short i;
 };
 
 Ctor zctor{1, 2}; // zeroed-padding

Reply via email to