Skip to content

Commit 66be057

Browse files
authored
[libc++][test] disable all atomic<long double> tests (#74201)
Clang's support for atomic operations on long doubles is currently broken, so these tests don't work everywhere. This is a long standing condition and the goal of this patch is to get the CI green again on all platforms. The actual Clang fixes will be pursued separately. Fixes #73791
1 parent ea3a3b2 commit 66be057

17 files changed

+42
-45
lines changed

libcxx/test/libcxx/atomics/atomics.types.generic/atomics.types.float/lockfree.pass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ void test() {
4545
int main(int, char**) {
4646
test<float>();
4747
test<double>();
48-
test<long double>();
48+
// TODO https://github.com/llvm/llvm-project/issues/47978
49+
// test<long double>();
4950

5051
return 0;
5152
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/assign.pass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ void test() {
5656
int main(int, char**) {
5757
test<float>();
5858
test<double>();
59-
test<long double>();
59+
// TODO https://github.com/llvm/llvm-project/issues/47978
60+
// test<long double>();
6061

6162
return 0;
6263
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_strong.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ void test() {
220220
int main(int, char**) {
221221
test<float>();
222222
test<double>();
223-
// https://github.com/llvm/llvm-project/issues/47978
223+
// TODO https://github.com/llvm/llvm-project/issues/47978
224224
// test<long double>();
225225

226226
return 0;

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_weak.pass.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ void testBasic(MemoryOrder... memory_order) {
6868
assert(a.load() == T(1.2));
6969

7070
// bug
71-
// https://github.com/llvm/llvm-project/issues/47978
71+
// TODO https://github.com/llvm/llvm-project/issues/47978
7272
if constexpr (!std::same_as<T, long double>) {
7373
assert(expected == T(1.2));
7474
}
@@ -236,10 +236,8 @@ int main(int, char**) {
236236
test<float>();
237237
test<double>();
238238

239-
// https://github.com/llvm/llvm-project/issues/47978
240-
#ifndef TEST_COMPILER_CLANG
241-
test<long double>();
242-
#endif
239+
// TODO https://github.com/llvm/llvm-project/issues/47978
240+
// test<long double>();
243241

244242
return 0;
245243
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/ctor.pass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ constexpr void testOne() {
5656
constexpr bool test() {
5757
testOne<float>();
5858
testOne<double>();
59-
testOne<long double>();
59+
// TODO https://github.com/llvm/llvm-project/issues/47978
60+
// testOne<long double>();
6061
return true;
6162
}
6263

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/exchange.pass.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
//
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
9-
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
10-
// XFAIL: target={{x86_64-.*}} && tsan
11-
// XFAIL: target={{x86_64-.*}} && msan
129
// XFAIL: !has-64-bit-atomics
1310
// UNSUPPORTED: !non-lockfree-atomics
1411

@@ -72,7 +69,8 @@ void test() {
7269
int main(int, char**) {
7370
test<float>();
7471
test<double>();
75-
test<long double>();
72+
// TODO https://github.com/llvm/llvm-project/issues/47978
73+
// test<long double>();
7674

7775
return 0;
7876
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/fetch_add.pass.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// UNSUPPORTED: LIBCXX-AIX-FIXME
10-
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
11-
// XFAIL: target={{x86_64-.*}} && tsan
12-
// Hangs with msan.
13-
// UNSUPPORTED: msan
1410
// XFAIL: !has-64-bit-atomics
1511
// UNSUPPORTED: !non-lockfree-atomics
1612

13+
// https://github.com/llvm/llvm-project/issues/72893
14+
// XFAIL: target={{x86_64-.*}} && tsan
15+
1716
// floating-point-type fetch_add(floating-point-type,
1817
// memory_order = memory_order::seq_cst) volatile noexcept;
1918
// floating-point-type fetch_add(floating-point-type,
@@ -114,7 +113,8 @@ void test() {
114113
int main(int, char**) {
115114
test<float>();
116115
test<double>();
117-
test<long double>();
116+
// TODO https://github.com/llvm/llvm-project/issues/47978
117+
// test<long double>();
118118

119119
return 0;
120120
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/fetch_sub.pass.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// UNSUPPORTED: LIBCXX-AIX-FIXME
10-
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
11-
// XFAIL: target={{x86_64-.*}} && tsan
12-
// Hangs with msan.
13-
// UNSUPPORTED: msan
1410
// XFAIL: !has-64-bit-atomics
1511
// UNSUPPORTED: !non-lockfree-atomics
1612

13+
// https://github.com/llvm/llvm-project/issues/72893
14+
// XFAIL: target={{x86_64-.*}} && tsan
15+
1716
// floating-point-type fetch_sub(floating-point-type,
1817
// memory_order = memory_order::seq_cst) volatile noexcept;
1918
// floating-point-type fetch_sub(floating-point-type,
@@ -115,7 +114,8 @@ void test() {
115114
int main(int, char**) {
116115
test<float>();
117116
test<double>();
118-
test<long double>();
117+
// TODO https://github.com/llvm/llvm-project/issues/47978
118+
// test<long double>();
119119

120120
return 0;
121121
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/load.pass.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
9-
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
109
// XFAIL: !has-64-bit-atomics
11-
// XFAIL: target={{x86_64-.*}} && tsan
1210
// UNSUPPORTED: !non-lockfree-atomics
1311

1412
// floating-point-type load(memory_order = memory_order::seq_cst) volatile noexcept;
@@ -134,7 +132,8 @@ void test() {
134132
int main(int, char**) {
135133
test<float>();
136134
test<double>();
137-
test<long double>();
135+
// TODO https://github.com/llvm/llvm-project/issues/47978
136+
// test<long double>();
138137

139138
return 0;
140139
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/lockfree.pass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ void test() {
5555
int main(int, char**) {
5656
test<float>();
5757
test<double>();
58-
test<long double>();
58+
// TODO https://github.com/llvm/llvm-project/issues/47978
59+
// test<long double>();
5960

6061
return 0;
6162
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/notify_all.pass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ void test() {
9393
int main(int, char**) {
9494
test<float>();
9595
test<double>();
96-
test<long double>();
96+
// TODO https://github.com/llvm/llvm-project/issues/47978
97+
// test<long double>();
9798

9899
return 0;
99100
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/notify_one.pass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ void test() {
7777
int main(int, char**) {
7878
test<float>();
7979
test<double>();
80-
test<long double>();
80+
// TODO https://github.com/llvm/llvm-project/issues/47978
81+
// test<long double>();
8182

8283
return 0;
8384
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.float.pass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ void test() {
5252
int main(int, char**) {
5353
test<float>();
5454
test<double>();
55-
test<long double>();
55+
// TODO https://github.com/llvm/llvm-project/issues/47978
56+
// test<long double>();
5657

5758
return 0;
5859
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.minus_equals.pass.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66
//
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
9-
// XFAIL: !has-64-bit-atomics
109
// UNSUPPORTED: LIBCXX-AIX-FIXME
10+
// XFAIL: !has-64-bit-atomics
1111
// UNSUPPORTED: !non-lockfree-atomics
12-
// Hangs with msan.
13-
// UNSUPPORTED: msan
1412

1513
// floating-point-type operator-=(floating-point-type) volatile noexcept;
1614
// floating-point-type operator-=(floating-point-type) noexcept;
@@ -98,7 +96,8 @@ void test() {
9896
int main(int, char**) {
9997
test<float>();
10098
test<double>();
101-
test<long double>();
99+
// TODO https://github.com/llvm/llvm-project/issues/47978
100+
// test<long double>();
102101

103102
return 0;
104103
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.plus_equals.pass.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66
//
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
9-
// XFAIL: !has-64-bit-atomics
109
// UNSUPPORTED: LIBCXX-AIX-FIXME
10+
// XFAIL: !has-64-bit-atomics
1111
// UNSUPPORTED: !non-lockfree-atomics
12-
// Hangs with msan.
13-
// UNSUPPORTED: msan
1412

1513
// floating-point-type operator+=(floating-point-type) volatile noexcept;
1614
// floating-point-type operator+=(floating-point-type) noexcept;
@@ -98,7 +96,8 @@ void test() {
9896
int main(int, char**) {
9997
test<float>();
10098
test<double>();
101-
test<long double>();
99+
// TODO https://github.com/llvm/llvm-project/issues/47978
100+
// test<long double>();
102101

103102
return 0;
104103
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/store.pass.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
9-
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
109
// XFAIL: !has-64-bit-atomics
11-
// XFAIL: target={{x86_64-.*}} && tsan
1210
// UNSUPPORTED: !non-lockfree-atomics
1311

1412
// void store(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;
@@ -109,7 +107,8 @@ void test() {
109107
int main(int, char**) {
110108
test<float>();
111109
test<double>();
112-
test<long double>();
110+
// TODO https://github.com/llvm/llvm-project/issues/47978
111+
// test<long double>();
113112

114113
return 0;
115114
}

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/wait.pass.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// XFAIL: availability-synchronization_library-missing
10-
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
11-
// XFAIL: target={{x86_64-.*}} && tsan
12-
// XFAIL: target={{x86_64-.*}} && msan
1310
// XFAIL: !has-64-bit-atomics
1411
// UNSUPPORTED: !non-lockfree-atomics
1512

@@ -120,7 +117,8 @@ void test() {
120117
int main(int, char**) {
121118
test<float>();
122119
test<double>();
123-
test<long double>();
120+
// TODO https://github.com/llvm/llvm-project/issues/47978
121+
// test<long double>();
124122

125123
return 0;
126124
}

0 commit comments

Comments
 (0)