Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions .github/workflows/ci.cpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@ jobs:
include:
- { name: "CPU (clang 16, Debug)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++" }
- { name: "CPU (clang 16, Debug, c++23)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "23", cxxflags: "-stdlib=libc++" }
- { name: "CPU (clang 16, Debug, TSAN)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
- { name: "CPU (clang 16, Release)", build: "Release", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++" }
- { name: "CPU (clang 16, Release, ASAN)", build: "Release", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++ -fsanitize=address -fsanitize-ignorelist=/home/coder/stdexec/sanitizer-ignorelist.txt" }
- { name: "CPU (clang 22, Debug)", build: "Debug", tag: llvm22-cuda13.2, cxxstd: "23", cxxflags: "-stdlib=libc++" }
# Clang built from source at a pinned llvm-project commit, for the
# modular build only. Pinned to the merge of llvm/llvm-project#224528,
Expand All @@ -36,23 +34,32 @@ jobs:
- { name: "CPU (clang trunk, Debug, modules)", build: "Debug", tag: llvm22-cuda13.2, cxxstd: "23", cxxflags: "-stdlib=libc++", llvm_sha: f970f59a9d4e6b8738547d01bc33e8a12df5244b }
- { name: "CPU (clang 22, Release)", build: "Release", tag: llvm22-cuda13.2, cxxstd: "23", cxxflags: "-stdlib=libc++" }
- { name: "CPU (clang 22, Release, noexcept)", build: "Release", tag: llvm22-cuda13.2, cxxstd: "23", cxxflags: "-stdlib=libc++ -fno-exceptions" }
# TSan in Clang < 18 and GCC < 15 aborts at startup ("unexpected
# memory mapping") when high-entropy ASLR places the executable
# outside its fixed shadow layout; newer runtimes re-exec without
# ASLR instead. Keep TSan jobs on toolchains at least that new.
- { name: "CPU (clang 22, Debug, TSAN)", build: "Debug", tag: llvm22-cuda13.2, cxxstd: "20", cxxflags: "-fsanitize=thread" }
# Clang 16's ASan segfaults at startup under the same high-entropy
# ASLR; Clang 22's re-execs without ASLR instead.
- { name: "CPU (clang 22, Release, ASAN)", build: "Release", tag: llvm22-cuda13.2, cxxstd: "20", cxxflags: "-stdlib=libc++ -fsanitize=address -fsanitize-ignorelist=/home/coder/stdexec/sanitizer-ignorelist.txt" }
- { name: "CPU (gcc 12, Debug)", build: "Debug", tag: gcc12-cuda12.9, cxxstd: "20", cxxflags: "", }
- { name: "CPU (gcc 12, Release)", build: "Release", tag: gcc12-cuda12.9, cxxstd: "20", cxxflags: "", }
# With the following config, 2 tests mysteriously time out, but only in CI and not locally.
# - { name: "CPU (gcc 12, Release, ASAN)", build: "Release", tag: gcc12-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=address" }
- { name: "CPU (gcc 12, Release, TSAN)", build: "Release", tag: gcc12-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
- { name: "CPU (gcc 13, Debug)", build: "Debug", tag: gcc13-cuda12.9, cxxstd: "20", cxxflags: "", }
- { name: "CPU (gcc 14, Debug)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "", }
- { name: "CPU (gcc 14, Debug, 32-bit)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-m32 -D_GLIBCXX_USE_TBB_PAR_BACKEND=0", arch: 32 }
- { name: "CPU (gcc 14, Debug, ASAN)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=address" }
- { name: "CPU (gcc 14, Debug, TSAN)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
- { name: "CPU (gcc 14, Release, ASAN)", build: "Release", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=address" }
- { name: "CPU (gcc 14, Release, LEAK)", build: "Release", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=leak", }
- { name: "CPU (gcc 14, Release, c++23)", build: "Release", tag: gcc14-cuda12.9, cxxstd: "23", cxxflags: "", }
- { name: "CPU (gcc 15, Release, c++23)", build: "Release", tag: gcc15-cuda12.9, cxxstd: "23", cxxflags: "", }
- { name: "CPU (gcc 15, Release, c++23,noexcept)", build: "Release", tag: gcc15-cuda12.9, cxxstd: "23", cxxflags: "-fno-exceptions", }
# See the note on the Clang TSan job above.
- { name: "CPU (gcc 15, Debug, TSAN)", build: "Debug", tag: gcc15-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
- { name: "CPU (gcc 15, Release, TSAN)", build: "Release", tag: gcc15-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
container:
options: -u root
options: -u root --cap-add SYS_PTRACE --security-opt label=disable --security-opt seccomp=unconfined
image: rapidsai/devcontainers:26.08-cpp-${{ matrix.tag }}
permissions:
id-token: write # This is required for configure-aws-credentials
Expand Down
6 changes: 6 additions & 0 deletions include/stdexec/__detail/__static_vector.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,13 @@ namespace STDEXEC
STDEXEC_ASSERT(__last >= __first && __last <= end());
if (__first != __last)
{
STDEXEC_PRAGMA_PUSH()
// Disable a false positive on gcc-14 in Release ASAN mode.
STDEXEC_PRAGMA_IGNORE_GNU("-Warray-bounds")
STDEXEC_PRAGMA_IGNORE_GNU("-Wstringop-overread")
std::move(const_cast<iterator>(__last), end(), const_cast<iterator>(__first));
STDEXEC_PRAGMA_POP()

resize(size() - (__last - __first));
}
return const_cast<iterator>(__first);
Expand Down
Loading