Skip to content

Commit 8aeaceb

Browse files
mplatingsldionne
authored andcommitted
[libc++] Add initial support for picolibc
Picolibc is a C Standard Library that is commonly used in embedded environments. This patch adds initial support for this configuration along with pre-commit CI. As of this patch, the test suite only builds the tests and nothing is run. A follow-up patch will make the test suite actually run the tests. Differential Revision: https://reviews.llvm.org/D154246
1 parent 7eb3103 commit 8aeaceb

File tree

63 files changed

+441
-14
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+441
-14
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
set(CMAKE_ASM_COMPILER_TARGET "armv7m-none-eabi" CACHE STRING "")
2+
set(CMAKE_CXX_COMPILER_TARGET "armv7m-none-eabi" CACHE STRING "")
3+
set(CMAKE_CXX_FLAGS "-mfloat-abi=soft" CACHE STRING "")
4+
set(CMAKE_C_COMPILER_TARGET "armv7m-none-eabi" CACHE STRING "")
5+
set(CMAKE_C_FLAGS "-mfloat-abi=soft" CACHE STRING "")
6+
set(CMAKE_SYSTEM_NAME Generic CACHE STRING "")
7+
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "")
8+
set(COMPILER_RT_BAREMETAL_BUILD ON CACHE BOOL "")
9+
set(COMPILER_RT_BUILD_LIBFUZZER OFF CACHE BOOL "")
10+
set(COMPILER_RT_BUILD_PROFILE OFF CACHE BOOL "")
11+
set(COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "")
12+
set(COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "")
13+
set(COMPILER_RT_DEFAULT_TARGET_ONLY ON CACHE BOOL "")
14+
set(LIBCXXABI_BAREMETAL ON CACHE BOOL "")
15+
set(LIBCXXABI_ENABLE_ASSERTIONS OFF CACHE BOOL "")
16+
set(LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
17+
set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
18+
set(LIBCXXABI_ENABLE_STATIC ON CACHE BOOL "")
19+
set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "")
20+
set(LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "")
21+
set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
22+
set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
23+
set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE STRING "")
24+
set(LIBCXX_ENABLE_MONOTONIC_CLOCK OFF CACHE BOOL "")
25+
set(LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
26+
set(LIBCXX_ENABLE_RTTI OFF CACHE BOOL "")
27+
set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
28+
set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
29+
set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
30+
set(LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
31+
set(LIBCXX_INCLUDE_BENCHMARKS OFF CACHE BOOL "")
32+
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
33+
set(LIBUNWIND_ENABLE_SHARED OFF CACHE BOOL "")
34+
set(LIBUNWIND_ENABLE_STATIC ON CACHE BOOL "")
35+
set(LIBUNWIND_ENABLE_THREADS OFF CACHE BOOL "")
36+
set(LIBUNWIND_IS_BAREMETAL ON CACHE BOOL "")
37+
set(LIBUNWIND_REMEMBER_HEAP_ALLOC ON CACHE BOOL "")
38+
set(LIBUNWIND_USE_COMPILER_RT ON CACHE BOOL "")

libcxx/docs/index.rst

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,16 +124,17 @@ GCC 12 In C++11 or later only latest stable release pe
124124

125125
Libc++ also supports common platforms and architectures:
126126

127-
=============== ========================= ============================
128-
Target platform Target architecture Notes
129-
=============== ========================= ============================
130-
macOS 10.13+ i386, x86_64, arm64
131-
FreeBSD 12+ i386, x86_64, arm
132-
Linux i386, x86_64, arm, arm64 Only glibc-2.24 and later and no other libc is officially supported
133-
Android 5.0+ i386, x86_64, arm, arm64
134-
Windows i386, x86_64 Both MSVC and MinGW style environments, ABI in MSVC environments is :doc:`unstable <DesignDocs/ABIVersioning>`
135-
AIX 7.2TL5+ powerpc, powerpc64
136-
=============== ========================= ============================
127+
===================== ========================= ============================
128+
Target platform Target architecture Notes
129+
===================== ========================= ============================
130+
macOS 10.13+ i386, x86_64, arm64
131+
FreeBSD 12+ i386, x86_64, arm
132+
Linux i386, x86_64, arm, arm64 Only glibc-2.24 and later and no other libc is officially supported
133+
Android 5.0+ i386, x86_64, arm, arm64
134+
Windows i386, x86_64 Both MSVC and MinGW style environments, ABI in MSVC environments is :doc:`unstable <DesignDocs/ABIVersioning>`
135+
AIX 7.2TL5+ powerpc, powerpc64
136+
Embedded (picolibc) arm Support for building with picolibc is currently work-in-progress
137+
===================== ========================= ============================
137138

138139
Generally speaking, libc++ should work on any platform that provides a fairly complete
139140
C Standard Library. It is also possible to turn off parts of the library for use on
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
2+
3+
libc_linker_script = '@CMAKE_INSTALL_PREFIX@/lib/picolibcpp.ld'
4+
5+
config.substitutions.append(('%{flags}', '--sysroot=@CMAKE_INSTALL_PREFIX@'))
6+
7+
config.substitutions.append(('%{compile_flags}',
8+
'-nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support'
9+
10+
# Disable warnings in cxx_atomic_impl.h:
11+
# "large atomic operation may incur significant performance penalty; the
12+
# access size (4 bytes) exceeds the max lock-free size (0 bytes)"
13+
' -Wno-atomic-alignment'
14+
15+
# Various libc++ headers check for the definition of _NEWLIB_VERSION
16+
# which for picolibc is defined in picolibc.h.
17+
' -include picolibc.h'
18+
))
19+
config.substitutions.append(('%{link_flags}',
20+
'-nostdlib -nostdlib++ -L %{lib} -lc++ -lc++abi'
21+
' -lc -lm -lclang_rt.builtins -lsemihost -lcrt0-semihost' +
22+
' -T {}'.format(libc_linker_script) +
23+
' -Wl,--defsym=__flash=0x0'
24+
' -Wl,--defsym=__flash_size=0x400000'
25+
' -Wl,--defsym=__ram=0x21000000'
26+
' -Wl,--defsym=__ram_size=0x1000000'
27+
' -Wl,--defsym=__stack_size=0x1000'
28+
))
29+
config.substitutions.append(('%{exec}',
30+
'true' # TODO use qemu-system-arm
31+
))
32+
config.available_features.add('libcxx-fake-executor')
33+
34+
import os, site
35+
site.addsitedir(os.path.join('@LIBCXX_SOURCE_DIR@', 'utils'))
36+
import libcxx.test.params, libcxx.test.config
37+
libcxx.test.config.configure(
38+
libcxx.test.params.DEFAULT_PARAMETERS,
39+
libcxx.test.features.DEFAULT_FEATURES,
40+
config,
41+
lit_config
42+
)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// UNSUPPORTED: target={{.+}}-windows-gnu
1010
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
11+
// XFAIL: !has-64-bit-atomics
1112

1213
// static constexpr bool is_always_lock_free = implementation-defined;
1314
// bool is_lock_free() const volatile noexcept;

libcxx/test/libcxx/clang_modules_include.gen.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@
3939
// TODO: Investigate this failure
4040
// UNSUPPORTED{BLOCKLIT}: LIBCXX-FREEBSD-FIXME
4141
42+
// TODO: Investigate this failure
43+
// UNSUPPORTED{BLOCKLIT}: LIBCXX-PICOLIBC-FIXME
44+
4245
{lit_header_restrictions.get(header, '')}
4346
4447
#include <{header}>

libcxx/test/libcxx/selftest/dsl/dsl.sh.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#
77
# ===----------------------------------------------------------------------===##
88

9+
# XFAIL: libcxx-fake-executor
10+
911
# Note: We prepend arguments with 'x' to avoid thinking there are too few
1012
# arguments in case an argument is an empty string.
1113
# RUN: %{python} %s x%S x%T x%{substitutions}

libcxx/test/libcxx/selftest/pass.cpp/run-error.pass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// UNSUPPORTED: libcxx-fake-executor
910
// XFAIL: *
1011

1112
// Make sure the test DOES NOT pass if it fails at runtime.

libcxx/test/libcxx/selftest/pass.mm/run-error.pass.mm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
// REQUIRES: objective-c++
10+
// UNSUPPORTED: libcxx-fake-executor
1011

1112
// XFAIL: *
1213

libcxx/test/libcxx/system_reserved_names.gen.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@
6363
#endif
6464
6565
// Test that libc++ doesn't use names that collide with FreeBSD system macros.
66-
#ifndef __FreeBSD__
66+
// newlib and picolibc also define these macros
67+
#if !defined(__FreeBSD__) && !defined(_NEWLIB_VERSION)
6768
# define __null_sentinel SYSTEM_RESERVED_NAME
6869
# define __generic SYSTEM_RESERVED_NAME
6970
#endif
@@ -101,7 +102,10 @@
101102
# define __pre SYSTEM_RESERVED_NAME
102103
#endif
103104
104-
#define __input SYSTEM_RESERVED_NAME
105+
// Newlib & picolibc use __input as a parameter name of a64l & l64a
106+
#ifndef _NEWLIB_VERSION
107+
# define __input SYSTEM_RESERVED_NAME
108+
#endif
105109
#define __output SYSTEM_RESERVED_NAME
106110
107111
#define __acquire SYSTEM_RESERVED_NAME

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// UNSUPPORTED: target={{.+}}-windows-gnu
1010
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
11+
// XFAIL: !has-64-bit-atomics
1112

1213
// floating-point-type operator=(floating-point-type) volatile noexcept;
1314
// floating-point-type operator=(floating-point-type) noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
10+
// XFAIL: !has-64-bit-atomics
1011

1112
// bool compare_exchange_strong(T& expected, T desired,
1213
// memory_order success, memory_order failure) volatile noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
10+
// XFAIL: !has-64-bit-atomics
1011

1112
// bool compare_exchange_weak(T& expected, T desired,
1213
// memory_order success, memory_order failure) volatile noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// UNSUPPORTED: target={{.+}}-windows-gnu
1010
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
11+
// XFAIL: !has-64-bit-atomics
1112

1213
// constexpr atomic() noexcept;
1314
// constexpr atomic(floating-point-type) noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
// XFAIL: tsan
1212
// XFAIL: target={{x86_64-.*}} && msan
1313
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
14+
// XFAIL: !has-64-bit-atomics
1415

1516
// T exchange(T, memory_order = memory_order::seq_cst) volatile noexcept;
1617
// T exchange(T, memory_order = memory_order::seq_cst) noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// Hangs with msan.
1414
// UNSUPPORTED: msan
1515
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
16+
// XFAIL: !has-64-bit-atomics
1617

1718
// floating-point-type fetch_add(floating-point-type,
1819
// memory_order = memory_order::seq_cst) volatile noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// Hangs with msan.
1414
// UNSUPPORTED: msan
1515
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
16+
// XFAIL: !has-64-bit-atomics
1617

1718
// floating-point-type fetch_sub(floating-point-type,
1819
// memory_order = memory_order::seq_cst) volatile noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
1111
// XFAIL: tsan
1212
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
13+
// XFAIL: !has-64-bit-atomics
1314

1415
// floating-point-type load(memory_order = memory_order::seq_cst) volatile noexcept;
1516
// floating-point-type load(memory_order = memory_order::seq_cst) noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// UNSUPPORTED: target={{.+}}-windows-gnu
1010
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
11+
// XFAIL: !has-64-bit-atomics
1112

1213
// static constexpr bool is_always_lock_free = implementation-defined;
1314
// bool is_lock_free() const volatile noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// XFAIL: availability-synchronization_library-missing
1010
// UNSUPPORTED: c++03, c++11, c++14, c++17
1111
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
12+
// XFAIL: !has-64-bit-atomics
1213

1314
// void notify_all() volatile noexcept;
1415
// void notify_all() noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// XFAIL: availability-synchronization_library-missing
1010
// UNSUPPORTED: c++03, c++11, c++14, c++17
1111
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
12+
// XFAIL: !has-64-bit-atomics
1213

1314
// void notify_one() volatile noexcept;
1415
// void notify_one() noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// UNSUPPORTED: c++03, c++11, c++14, c++17
99
// UNSUPPORTED: target={{.+}}-windows-gnu
1010
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
11+
// XFAIL: !has-64-bit-atomics
1112

1213
// operator floating-point-type() volatile noexcept;
1314
// operator floating-point-type() noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// UNSUPPORTED: target={{.+}}-windows-gnu
1010
// XFAIL: LIBCXX-AIX-FIXME
1111
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
12+
// XFAIL: !has-64-bit-atomics
1213
// Hangs with msan.
1314
// UNSUPPORTED: msan
1415

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// UNSUPPORTED: target={{.+}}-windows-gnu
1010
// XFAIL: LIBCXX-AIX-FIXME
1111
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
12+
// XFAIL: !has-64-bit-atomics
1213
// Hangs with msan.
1314
// UNSUPPORTED: msan
1415

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// Clang's support for atomic operations on long double is broken. See https://github.com/llvm/llvm-project/issues/72893
1010
// XFAIL: tsan
1111
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
12+
// XFAIL: !has-64-bit-atomics
1213

1314
// void store(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;
1415
// void store(floating-point-type, memory_order = memory_order::seq_cst) noexcept;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
// XFAIL: tsan
1212
// XFAIL: target={{x86_64-.*}} && msan
1313
// ADDITIONAL_COMPILE_FLAGS(has-latomic): -latomic
14+
// XFAIL: !has-64-bit-atomics
1415

1516
// void wait(T old, memory_order order = memory_order::seq_cst) const volatile noexcept;
1617
// void wait(T old, memory_order order = memory_order::seq_cst) const noexcept;

libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template <>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// XFAIL: !has-64-bit-atomics
10+
911
// <atomic>
1012

1113
// template<class T>

0 commit comments

Comments
 (0)