@@ -33,19 +33,20 @@ TEST(LlvmLibcAtomicTest, CompareExchangeStrong) {
3333 ASSERT_EQ (aint.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED), 100 );
3434}
3535
36- struct TrivialData {
37- int a;
38- int b;
36+ struct alignas (void *) TrivialData {
37+ char a;
38+ char b;
39+ char padding[sizeof (void *) - 2 ];
3940};
4041
4142TEST (LlvmLibcAtomicTest, TrivialCompositeData) {
42- LIBC_NAMESPACE::cpp::Atomic<TrivialData> data ({1 , 2 });
43- ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).a , 1 );
44- ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).b , 2 );
45-
46- auto old = data.exchange ({3 , 4 });
47- ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).a , 3 );
48- ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).b , 4 );
49- ASSERT_EQ (old.a , 1 );
50- ASSERT_EQ (old.b , 2 );
43+ LIBC_NAMESPACE::cpp::Atomic<TrivialData> data ({' a ' , ' b ' , {} });
44+ ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).a , ' a ' );
45+ ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).b , ' b ' );
46+
47+ auto old = data.exchange ({' c ' , ' d ' , {} });
48+ ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).a , ' c ' );
49+ ASSERT_EQ (data.load (LIBC_NAMESPACE::cpp::MemoryOrder::RELAXED).b , ' d ' );
50+ ASSERT_EQ (old.a , ' a ' );
51+ ASSERT_EQ (old.b , ' b ' );
5152}
0 commit comments