diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 5b58794..7b61844 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -232,7 +232,8 @@ jobs: rm -rf build cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -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 ccache -s diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 26d173d..9472cb6 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -3080,7 +3080,7 @@ Node *firstGeqPhysical(Node *n, const TrivialSpan key) { #define PRESERVE_NONE #endif -#if __has_attribute(musttail) && __has_attribute(preserve_none) +#if __has_attribute(musttail) constexpr bool kEnableInterleaved = true; #else constexpr bool kEnableInterleaved = false; @@ -5040,20 +5040,22 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl { assert(allPointWrites || sorted); #endif - if (kEnableInterleaved && count > 1) { - interleavedWrites(writes, count, InternalVersionT(writeVersion)); - } else { - for (int i = 0; i < count; ++i) { - const auto &w = writes[i]; - auto begin = TrivialSpan(w.begin.p, w.begin.len); - auto end = TrivialSpan(w.end.p, w.end.len); - if (w.end.len > 0) { - addWriteRange(rootParent->children[0], begin, end, - InternalVersionT(writeVersion), &writeContext); - } else { - addPointWrite(rootParent->children[0], begin, - InternalVersionT(writeVersion), &writeContext); - } + if constexpr (kEnableInterleaved) { + if (count > 1) { + interleavedWrites(writes, count, InternalVersionT(writeVersion)); + return; + } + } + for (int i = 0; i < count; ++i) { + const auto &w = writes[i]; + auto begin = TrivialSpan(w.begin.p, w.begin.len); + auto end = TrivialSpan(w.end.p, w.end.len); + if (w.end.len > 0) { + addWriteRange(rootParent->children[0], begin, end, + InternalVersionT(writeVersion), &writeContext); + } else { + addPointWrite(rootParent->children[0], begin, + InternalVersionT(writeVersion), &writeContext); } } }