forked from weaselab/conflict-set
Compare commits
7
Commits
1ea909217d
...
c80cfedf58
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c80cfedf58 | ||
|
|
6f71ff086b | ||
|
|
2d8508b9fd | ||
|
|
92b67f572f | ||
|
|
7eaac2a184 | ||
|
|
e9c904a86b | ||
|
|
789ae8cbb9 |
+33
-8
@@ -19,9 +19,15 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
. /etc/os-release
|
||||||
|
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
|
||||||
|
echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-21 main" | sudo tee /etc/apt/sources.list.d/llvm.list
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get install -y \
|
sudo apt-get install -y \
|
||||||
clang git nodejs pre-commit
|
clang-21 git nodejs pre-commit
|
||||||
|
for tool in clang clang++; do
|
||||||
|
sudo update-alternatives --install /usr/bin/${tool} ${tool} /usr/bin/${tool}-21 100
|
||||||
|
done
|
||||||
|
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
@@ -57,12 +63,18 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
. /etc/os-release
|
||||||
|
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
|
||||||
|
echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-21 main" | sudo tee /etc/apt/sources.list.d/llvm.list
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get install -y \
|
sudo apt-get install -y \
|
||||||
build-essential ccache clang cmake gcc g++ \
|
build-essential ccache clang-21 cmake gcc g++ \
|
||||||
libc6-dbg llvm mold ninja-build python3 valgrind zstd
|
libc6-dbg llvm-21 lld-21 mold ninja-build python3 valgrind zstd
|
||||||
sudo curl -Ls "https://dl.min.io/client/mc/release/linux-amd64/mc" \
|
sudo curl -Ls "https://dl.min.io/client/mc/release/linux-amd64/mc" \
|
||||||
-o /usr/local/bin/mc && sudo chmod +x /usr/local/bin/mc
|
-o /usr/local/bin/mc && sudo chmod +x /usr/local/bin/mc
|
||||||
|
for tool in clang clang++ llvm-ar llvm-nm llvm-ranlib llvm-objcopy llvm-cov llvm-symbolizer lld ld.lld; do
|
||||||
|
sudo update-alternatives --install /usr/bin/${tool} ${tool} /usr/bin/${tool}-21 100
|
||||||
|
done
|
||||||
|
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
@@ -124,14 +136,20 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
. /etc/os-release
|
||||||
|
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
|
||||||
|
echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-21 main" | sudo tee /etc/apt/sources.list.d/llvm.list
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get install -y \
|
sudo apt-get install -y \
|
||||||
biber build-essential ccache clang cmake devscripts \
|
biber build-essential ccache clang-21 cmake devscripts \
|
||||||
latexmk libc6-dbg llvm mold ninja-build rpm \
|
latexmk libc6-dbg llvm-21 lld-21 mold ninja-build rpm \
|
||||||
texlive-bibtex-extra texlive-fonts-recommended \
|
texlive-bibtex-extra texlive-fonts-recommended \
|
||||||
texlive-latex-extra texlive-pictures valgrind zstd
|
texlive-latex-extra texlive-pictures valgrind zstd
|
||||||
sudo curl -Ls "https://dl.min.io/client/mc/release/linux-$(dpkg --print-architecture)/mc" \
|
sudo curl -Ls "https://dl.min.io/client/mc/release/linux-$(dpkg --print-architecture)/mc" \
|
||||||
-o /usr/local/bin/mc && sudo chmod +x /usr/local/bin/mc
|
-o /usr/local/bin/mc && sudo chmod +x /usr/local/bin/mc
|
||||||
|
for tool in clang clang++ llvm-ar llvm-nm llvm-ranlib llvm-objcopy llvm-cov llvm-symbolizer lld ld.lld; do
|
||||||
|
sudo update-alternatives --install /usr/bin/${tool} ${tool} /usr/bin/${tool}-21 100
|
||||||
|
done
|
||||||
|
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
@@ -212,12 +230,18 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
. /etc/os-release
|
||||||
|
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
|
||||||
|
echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-21 main" | sudo tee /etc/apt/sources.list.d/llvm.list
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get install -y \
|
sudo apt-get install -y \
|
||||||
build-essential ccache clang cmake gcovr \
|
build-essential ccache clang-21 cmake gcovr \
|
||||||
libc6-dbg llvm mold ninja-build python3 valgrind zstd
|
libc6-dbg llvm-21 lld-21 mold ninja-build python3 valgrind zstd
|
||||||
sudo curl -Ls "https://dl.min.io/client/mc/release/linux-amd64/mc" \
|
sudo curl -Ls "https://dl.min.io/client/mc/release/linux-amd64/mc" \
|
||||||
-o /usr/local/bin/mc && sudo chmod +x /usr/local/bin/mc
|
-o /usr/local/bin/mc && sudo chmod +x /usr/local/bin/mc
|
||||||
|
for tool in clang clang++ llvm-ar llvm-nm llvm-ranlib llvm-objcopy llvm-cov llvm-symbolizer lld ld.lld; do
|
||||||
|
sudo update-alternatives --install /usr/bin/${tool} ${tool} /usr/bin/${tool}-21 100
|
||||||
|
done
|
||||||
|
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
@@ -232,7 +256,8 @@ jobs:
|
|||||||
rm -rf build
|
rm -rf build
|
||||||
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
-DCMAKE_C_FLAGS=--coverage -DCMAKE_CXX_FLAGS=--coverage \
|
-DCMAKE_C_FLAGS=--coverage -DCMAKE_CXX_FLAGS=--coverage \
|
||||||
-DCMAKE_BUILD_TYPE=Debug -DDISABLE_TSAN=ON
|
-DCMAKE_BUILD_TYPE=Debug -DDISABLE_TSAN=ON \
|
||||||
|
-DUSE_SIMD_FALLBACK=ON
|
||||||
ninja -C build
|
ninja -C build
|
||||||
ccache -s
|
ccache -s
|
||||||
|
|
||||||
|
|||||||
+18
-19
@@ -383,27 +383,26 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND BUILD_TESTING)
|
|||||||
if(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
find_program(HARDENING_CHECK hardening-check)
|
find_program(HARDENING_CHECK hardening-check)
|
||||||
if(HARDENING_CHECK)
|
if(HARDENING_CHECK)
|
||||||
# Not all versions of hardening-check support the same options, so query
|
# Control flow integrity (CET) is x86-only and branch protection (PAC/BTI)
|
||||||
# the help output before using architecture-specific skips.
|
# is arm64-only, so ignore whichever doesn't apply. Newer hardening-check
|
||||||
|
# versions spell some of these flags with hyphens, so pick a supported
|
||||||
|
# form at configure time.
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${HARDENING_CHECK} --help
|
COMMAND ${HARDENING_CHECK} --help
|
||||||
OUTPUT_VARIABLE hardening_check_help
|
OUTPUT_VARIABLE _hardening_help
|
||||||
ERROR_VARIABLE hardening_check_help
|
ERROR_QUIET)
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64 OR CMAKE_SYSTEM_PROCESSOR
|
||||||
RESULT_VARIABLE hardening_check_help_result)
|
STREQUAL arm64)
|
||||||
set(hardening_check_arch_flags "")
|
if(_hardening_help MATCHES "--nocfprotection")
|
||||||
if(hardening_check_help_result EQUAL 0)
|
set(hardening_check_arch_flags --nocfprotection)
|
||||||
# Control flow integrity (CET) is x86-only and branch protection
|
elseif(_hardening_help MATCHES "--no-cf-protection")
|
||||||
# (PAC/BTI) is arm64-only, so ignore whichever doesn't apply.
|
set(hardening_check_arch_flags --no-cf-protection)
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64 OR CMAKE_SYSTEM_PROCESSOR
|
endif()
|
||||||
STREQUAL arm64)
|
else()
|
||||||
if(hardening_check_help MATCHES "nocfprotection")
|
if(_hardening_help MATCHES "--nobranchprotection")
|
||||||
list(APPEND hardening_check_arch_flags --nocfprotection)
|
set(hardening_check_arch_flags --nobranchprotection)
|
||||||
endif()
|
elseif(_hardening_help MATCHES "--no-branch-protection")
|
||||||
else()
|
set(hardening_check_arch_flags --no-branch-protection)
|
||||||
if(hardening_check_help MATCHES "nobranchprotection")
|
|
||||||
list(APPEND hardening_check_arch_flags --nobranchprotection)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
add_test(
|
add_test(
|
||||||
|
|||||||
+17
-15
@@ -3080,7 +3080,7 @@ Node *firstGeqPhysical(Node *n, const TrivialSpan key) {
|
|||||||
#define PRESERVE_NONE
|
#define PRESERVE_NONE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __has_attribute(musttail) && __has_attribute(preserve_none)
|
#if __has_attribute(musttail)
|
||||||
constexpr bool kEnableInterleaved = true;
|
constexpr bool kEnableInterleaved = true;
|
||||||
#else
|
#else
|
||||||
constexpr bool kEnableInterleaved = false;
|
constexpr bool kEnableInterleaved = false;
|
||||||
@@ -5040,20 +5040,22 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
|||||||
assert(allPointWrites || sorted);
|
assert(allPointWrites || sorted);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (kEnableInterleaved && count > 1) {
|
if constexpr (kEnableInterleaved) {
|
||||||
interleavedWrites(writes, count, InternalVersionT(writeVersion));
|
if (count > 1) {
|
||||||
} else {
|
interleavedWrites(writes, count, InternalVersionT(writeVersion));
|
||||||
for (int i = 0; i < count; ++i) {
|
return;
|
||||||
const auto &w = writes[i];
|
}
|
||||||
auto begin = TrivialSpan(w.begin.p, w.begin.len);
|
}
|
||||||
auto end = TrivialSpan(w.end.p, w.end.len);
|
for (int i = 0; i < count; ++i) {
|
||||||
if (w.end.len > 0) {
|
const auto &w = writes[i];
|
||||||
addWriteRange(rootParent->children[0], begin, end,
|
auto begin = TrivialSpan(w.begin.p, w.begin.len);
|
||||||
InternalVersionT(writeVersion), &writeContext);
|
auto end = TrivialSpan(w.end.p, w.end.len);
|
||||||
} else {
|
if (w.end.len > 0) {
|
||||||
addPointWrite(rootParent->children[0], begin,
|
addWriteRange(rootParent->children[0], begin, end,
|
||||||
InternalVersionT(writeVersion), &writeContext);
|
InternalVersionT(writeVersion), &writeContext);
|
||||||
}
|
} else {
|
||||||
|
addPointWrite(rootParent->children[0], begin,
|
||||||
|
InternalVersionT(writeVersion), &writeContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,6 +132,13 @@ struct __attribute__((__visibility__("default"))) ConflictSet {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Impl *impl;
|
Impl *impl;
|
||||||
|
#if defined(__cplusplus) && __cplusplus <= 199711L
|
||||||
|
/* Declared private and left undefined to prevent copying in C++98/C++03.
|
||||||
|
The compiler would otherwise implicitly generate public copy operations,
|
||||||
|
which share the opaque Impl* and cause a double-free. */
|
||||||
|
ConflictSet(const ConflictSet &);
|
||||||
|
ConflictSet &operator=(const ConflictSet &);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
} /* namespace weaselab */
|
} /* namespace weaselab */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user