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
7 changes: 4 additions & 3 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,17 @@
# unfixable signatures
# - cppcoreguidelines-avoid-c-arrays: duplicated by modernize-avoid-c-arrays
# - cppcoreguidelines-macro-usage: does not respect __LINE__ in macro definition
# - cppcoreguidelines-pro-bounds-pointer-arithmetic: because leaf nodes are
# std::byte arrays
# - cppcoreguidelines-pro-type-const-cast: because VALGRIND_MALLOCLIKE_BLOCK
# expands a to C-style cast, and we have -Wold-style-cast anyway
# - hicpp-avoid-c-arrays: duplicated by modernize-avoid-c-arrays
# - hicpp-explicit-conversions: duplicated by google-explicit-constructor
# - hicpp-no-assembler: Valgrind client requests
# - modernize-use-equals-default: until foo() noexcept = default is accepted by
# clang
Checks: '*,-altera-id-dependent-backward-branch,-altera-struct-pack-align,-altera-unroll-loops,-boost-use-ranges,-bugprone-easily-swappable-parameters,-bugprone-use-after-move,-clang-diagnostic-error,-clang-analyzer-core.CallAndMessage,-clang-analyzer-core.NonNullParamChecker,-clang-analyzer-cplusplus.Move,-clang-analyzer-unix.Malloc,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-init-variables,-cppcoreguidelines-macro-usage,-cppcoreguidelines-non-private-member-variables-in-classes,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-cstyle-cast,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-union-access,-fuchsia-default-arguments-calls,-fuchsia-default-arguments-declarations,-fuchsia-overloaded-operator,-google-readability-braces-around-statements,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-explicit-conversions,-hicpp-invalid-access-moved,-hicpp-member-init,-hicpp-named-parameter,-hicpp-no-array-decay,-hicpp-no-assembler,-hicpp-use-equals-default,-llvm-include-order,-llvmlibc*,-misc-no-recursion,-misc-non-private-member-variables-in-classes,-modernize-use-equals-default,-modernize-use-trailing-return-type,-portability-simd-intrinsics,-readability-braces-around-statements,-readability-function-cognitive-complexity,-readability-identifier-length,-readability-named-parameter,-readability-magic-numbers'
# - modernize-use-scoped-lock: std::lock_guard is perfectly fine for its use
# cases
# - llvm-prefer-static-over-anonymous-namespace: I prefer anonymous namespace
Checks: '*,-altera-id-dependent-backward-branch,-altera-struct-pack-align,-altera-unroll-loops,-boost-use-ranges,-bugprone-easily-swappable-parameters,-bugprone-use-after-move,-clang-diagnostic-error,-clang-analyzer-core.CallAndMessage,-clang-analyzer-core.NonNullParamChecker,-clang-analyzer-cplusplus.Move,-clang-analyzer-unix.Malloc,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-init-variables,-cppcoreguidelines-macro-usage,-cppcoreguidelines-non-private-member-variables-in-classes,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-cstyle-cast,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-union-access,-fuchsia-default-arguments-calls,-fuchsia-default-arguments-declarations,-fuchsia-overloaded-operator,-google-readability-braces-around-statements,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-explicit-conversions,-hicpp-invalid-access-moved,-hicpp-member-init,-hicpp-named-parameter,-hicpp-no-array-decay,-hicpp-no-assembler,-hicpp-use-equals-default,-llvm-include-order,-llvmlibc*,-llvm-prefer-static-over-anonymous-namespace,-misc-no-recursion,-misc-non-private-member-variables-in-classes,-modernize-use-equals-default,-modernize-use-scoped-lock,-modernize-use-trailing-return-type,-portability-simd-intrinsics,-readability-braces-around-statements,-readability-function-cognitive-complexity,-readability-identifier-length,-readability-named-parameter,-readability-magic-numbers'
WarningsAsErrors: '*'
CheckOptions:
- key: performance-unnecessary-value-param.AllowedTypes
Expand Down
48 changes: 24 additions & 24 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,59 +99,59 @@ jobs:
os: ubuntu-latest
COMPILER: gcc

- name: clang 20 Release (Linux Intel)
- name: clang 21 Release (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Release
COMPILER: clang

- name: clang 20 Release with ASan (Linux Intel)
- name: clang 21 Release with ASan (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang

- name: clang 20 Release with TSan (Linux Intel)
- name: clang 21 Release with TSan (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang

- name: clang 20 Release with UBSan (Linux Intel)
- name: clang 21 Release with UBSan (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang

- name: clang 20 Debug (Linux Intel)
- name: clang 21 Debug (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Debug
COMPILER: clang

- name: clang 20 Debug with ASan (Linux Intel)
- name: clang 21 Debug with ASan (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang

- name: clang 20 Debug with TSan (Linux Intel)
- name: clang 21 Debug with TSan (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang

- name: clang 20 Debug with UBSan (Linux Intel)
- name: clang 21 Debug with UBSan (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang

- name: clang 20 Release static analysis (Linux Intel)
- name: clang 21 Release static analysis (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Release
COMPILER: clang
STATIC_ANALYSIS: ON

- name: clang 20 Debug static analysis (Linux Intel)
- name: clang 21 Debug static analysis (Linux Intel)
os: ubuntu-latest
BUILD_TYPE: Debug
COMPILER: clang
Expand Down Expand Up @@ -313,41 +313,41 @@ jobs:
COMPILER: gcc
SANITIZE_UB: ON

- name: clang 20 Release (Linux ARM64)
- name: clang 21 Release (Linux ARM64)
os: ubuntu-24.04-arm
BUILD_TYPE: Release
COMPILER: clang

- name: clang 20 Release with TSan (Linux ARM64)
- name: clang 21 Release with TSan (Linux ARM64)
os: ubuntu-24.04-arm
BUILD_TYPE: Release
COMPILER: clang
SANITIZE_THREAD: ON

- name: clang 20 Release with UBSan (Linux ARM64)
- name: clang 21 Release with UBSan (Linux ARM64)
os: ubuntu-24.04-arm
BUILD_TYPE: Release
COMPILER: clang
SANITIZE_UB: ON

- name: clang 20 Debug (Linux ARM64)
- name: clang 21 Debug (Linux ARM64)
os: ubuntu-24.04-arm
BUILD_TYPE: Debug
COMPILER: clang

- name: clang 20 Debug with ASan (Linux ARM64)
- name: clang 21 Debug with ASan (Linux ARM64)
os: ubuntu-24.04-arm
BUILD_TYPE: Debug
COMPILER: clang
SANITIZE_ADDRESS: ON

- name: clang 20 Debug with TSan (Linux ARM64)
- name: clang 21 Debug with TSan (Linux ARM64)
os: ubuntu-24.04-arm
BUILD_TYPE: Debug
COMPILER: clang
SANITIZE_THREAD: ON

- name: clang 20 Debug with UBSan (Linux ARM64)
- name: clang 21 Debug with UBSan (Linux ARM64)
os: ubuntu-24.04-arm
BUILD_TYPE: Debug
COMPILER: clang
Expand Down Expand Up @@ -389,25 +389,25 @@ jobs:
curl 'https://apt.llvm.org/llvm-snapshot.gpg.key' \
| sudo apt-key add -
sudo add-apt-repository -y \
"deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main"
"deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main"
sudo apt-get update
sudo apt-get install -y clang-20 iwyu
sudo apt-get install -y clang-21 iwyu
if: runner.os == 'Linux' && env.COMPILER == 'clang'

- name: Setup dependencies for Linux LLVM (Release)
run: sudo apt-get install -y libomp5-20 llvm-20 lld-20
run: sudo apt-get install -y libomp5 llvm-21 lld-21
Comment thread
coderabbitai[bot] marked this conversation as resolved.
if: >
runner.os == 'Linux' && env.COMPILER == 'clang'
&& env.BUILD_TYPE == 'Release'

- name: Setup dependencies for Linux LLVM (static analysis)
run: sudo apt-get install -y clang-tools-20
run: sudo apt-get install -y clang-tools-21
if: >
runner.os == 'Linux' && env.COMPILER == 'clang'
&& env.STATIC_ANALYSIS == 'ON'

- name: Setup dependencies for Linux LLVM (not static analysis)
run: sudo apt-get install -y clang-tidy-20
run: sudo apt-get install -y clang-tidy-21
Comment on lines +392 to +410
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if commit 42f61a1 exists and what it changed
echo "=== Checking commit 42f61a1 ===" 
git log --all --oneline | grep -i "42f61a1" || echo "Searching for commit..."
git show 42f61a1 --stat 2>/dev/null || echo "Commit 42f61a1 not found in history"

echo ""
echo "=== Current state of libomp in workflow ===" 
grep -n "libomp" .github/workflows/build.yml || echo "No libomp references found"

echo ""
echo "=== LLVM version references context ===" 
sed -n '390,415p' .github/workflows/build.yml

Repository: laurynas-biveinis/unodb

Length of output: 1345


🌐 Web query:

libomp5 LLVM 21 Ubuntu Noble package name

💡 Result:

Use the versioned package libomp5-21 (runtime) — the development package is libomp-21-dev. [1][2]

Sources: apt.llvm.org package list and Ubuntu llvm-toolchain-21 tracker. [1] [2]


Fix libomp5 to use versioned package for consistency with other LLVM 21 dependencies.

Line 398 installs unversioned libomp5 while other packages are correctly versioned to 21. Change libomp5 to libomp5-21 to maintain consistency.

Note: The original review comment referenced commit 42f61a1 as the resolution, but this commit does not exist in the repository history. The issue remains unfixed.

🤖 Prompt for AI Agents
In .github/workflows/build.yml around lines 392 to 410, the Linux LLVM Release
dependency step installs unversioned libomp5 while all other LLVM 21 packages
are versioned; update that step to install libomp5-21 instead of libomp5 to keep
package versions consistent with llvm-21 and lld-21 and avoid mismatched
ABI/versions during the build.

if: >
runner.os == 'Linux' && env.COMPILER == 'clang'
&& env.STATIC_ANALYSIS != 'ON'
Expand Down Expand Up @@ -444,7 +444,7 @@ jobs:
export CC=gcc-$V
export CXX=g++-$V
elif [[ $COMPILER == "clang" ]]; then
V=20
V=21
export CC=clang-$V
export CXX=clang++-$V
if [[ $BUILD_TYPE == "Release" ]]; then
Expand Down Expand Up @@ -497,7 +497,7 @@ jobs:
- name: clang static analysis
working-directory: ${{github.workspace}}/build
run: |
/usr/bin/scan-build-20 --status-bugs -stats -analyze-headers \
/usr/bin/scan-build-21 --status-bugs -stats -analyze-headers \
--force-analyze-debug-code make -j3 -k;
if: env.STATIC_ANALYSIS == 'ON' && env.COMPILER == 'clang'

Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/old-compilers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,52 @@ jobs:
COMPILER: clang
VERSION: 19

- name: clang 20 Release
BUILD_TYPE: Release
COMPILER: clang
VERSION: 20

- name: clang 20 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 20

- name: clang 20 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 20

- name: clang 20 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang
VERSION: 20

- name: clang 20 Debug
BUILD_TYPE: Debug
COMPILER: clang
VERSION: 20

- name: clang 20 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 20

- name: clang 20 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 20

- name: clang 20 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang
VERSION: 20

- name: GCC 10 Release
BUILD_TYPE: Release
COMPILER: gcc
Expand Down
26 changes: 25 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ set(CLANG_LT_13_CXX_WARNING_FLAGS "-Wreserved-id-macro")
set(CLANG_GE_13_CXX_WARNING_FLAGS "-Wreserved-identifier")
# Do not enable clang 16+ -Wunsafe-buffer-usage because it warns on all memcpy
# calls and our pointer- and span-like class implementations.
set(CLANG_GE_21_CXX_WARNING_FLAGS "-Wnrvo" "-Wunique-object-duplication"
"-Wshift-bool" "-Wc99-designator" "-Wms-bitfield-padding")

set(GCC_CXX_WARNING_FLAGS
# Warning groups
Expand Down Expand Up @@ -296,10 +298,17 @@ if(SANITIZE_UB)
if(is_clang AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)
list(APPEND SANITIZER_CXX_FLAGS "-fsanitize=implicit-bitfield-conversion")
endif()
if(is_clang AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 21.0)
list(APPEND SANITIZER_CXX_FLAGS "-fsanitize=vptr")
endif()
Comment thread
coderabbitai[bot] marked this conversation as resolved.
endif()

set(SANITIZER_LD_FLAGS "-fsanitize=undefined")

if(is_clang AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 21.0)
list(APPEND SANITIZER_LD_FLAGS "-fsanitize=vptr")
endif()

string(CONCAT UBSAN_ENV "UBSAN_OPTIONS="
"print_stacktrace=1:halt_on_error=1:abort_on_error=1")

Expand Down Expand Up @@ -402,9 +411,13 @@ set(cxx_ge_12 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,12.0>")
set(cxx_lt_13 "$<VERSION_LESS:$<CXX_COMPILER_VERSION>,13.0>")
set(cxx_ge_13 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,13.0>")
set(cxx_ge_14 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,14.0>")
set(cxx_ge_21 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,21.0>")
set(is_clang_lt_13_not_windows "$<AND:${is_clang_not_windows},${cxx_lt_13}>")
set(is_clang_ge_13_not_windows "$<AND:${is_clang_not_windows},${cxx_ge_13}>")
set(is_clang_ge_14_not_windows "$<AND:${is_clang_not_windows},${cxx_ge_14}>")
set(is_clang_ge_21_not_windows "$<AND:${is_clang_not_windows},${cxx_ge_21}>")
set(is_darwin_clang_ge_21_x86_64 "$<AND:$<PLATFORM_ID:Darwin>,${is_clang_ge_21_not_windows},${is_not_windows_x86_64}>")
set(is_darwin_clang_ge_21_arm64 "$<AND:$<PLATFORM_ID:Darwin>,${is_clang_ge_21_not_windows},$<NOT:${is_not_windows_x86_64}>>")
set(is_gxx_ge_11 "$<AND:${is_gxx_genex},${cxx_ge_11}>")
set(is_gxx_ge_12 "$<AND:${is_gxx_genex},${cxx_ge_12}>")
set(is_gxx_ge_14 "$<AND:${is_gxx_genex},${cxx_ge_14}>")
Expand Down Expand Up @@ -616,6 +629,10 @@ else()
else()
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-p=${CMAKE_BINARY_DIR}")
# Add suppression for unknown warning options when clang-tidy might not
# recognize all compiler warning flags (e.g., when scan-build from LLVM 21
# wraps the build)
list(APPEND DO_CLANG_TIDY "--extra-arg=-Wno-unknown-warning-option")
endif()
endif()

Expand Down Expand Up @@ -674,7 +691,9 @@ if(IWYU)
IWYU_VERSION_OUTPUT)
message(STATUS
"include-what-you-use found: ${IWYU_EXE}, --version: ${IWYU_VERSION_OUTPUT}")
set(DO_IWYU "${IWYU_EXE}")
# IWYU is not necessarily based on the same version clang is and might not
# understand newer options
set(DO_IWYU "${IWYU_EXE};-Wno-unknown-warning-option")
Comment thread
laurynas-biveinis marked this conversation as resolved.
Comment on lines +694 to +696
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

IWYU workaround comment is adequate but could be more detailed.

The comment explains why -Wno-unknown-warning-option is needed for IWYU. However, a past review (marked as addressed) suggested including clang/IWYU version numbers and a TODO with a reference for when this can be removed. The current comment is brief but functional.

🤖 Prompt for AI Agents
In CMakeLists.txt around lines 694-696, the IWYU workaround comment is too
minimal; update it to mention the clang and IWYU versions that required the
-Wno-unknown-warning-option flag and add a TODO with a reference (issue/PR or
upstream bug link) and a target date or condition for removal; reword the
comment to explain that IWYU may use a different clang version which can emit
unknown-warning-option warnings, include the specific versions tested (e.g.,
clang X.Y and iwyu A.B) and add "TODO: remove when IWYU upgrades to >= <version>
or when <link-to-issue> is fixed" so future maintainers know when to revisit
this workaround.

endif()
endif()
endif()
Expand Down Expand Up @@ -709,6 +728,7 @@ function(COMMON_TARGET_PROPERTIES TARGET)
"$<$<AND:${is_standalone},${is_any_clang_genex},${is_not_windows}>:${CLANG_CXX_WARNING_FLAGS}>"
"$<$<AND:${is_standalone},${is_clang_lt_13_not_windows}>:${CLANG_LT_13_CXX_WARNING_FLAGS}>"
"$<$<AND:${is_standalone},${is_clang_ge_13_not_windows}>:${CLANG_GE_13_CXX_WARNING_FLAGS}>"
"$<$<AND:${is_standalone},${is_clang_ge_21_not_windows}>:${CLANG_GE_21_CXX_WARNING_FLAGS}>"
"$<$<AND:${is_standalone},${is_gxx_genex}>:${GCC_CXX_WARNING_FLAGS}>"
"$<$<AND:${is_standalone},${is_gxx_ge_11}>:${GCC_GE_11_CXX_WARNING_FLAGS}>"
"$<$<AND:${is_standalone},${is_gxx_ge_12}>:${GCC_GE_12_CXX_WARNING_FLAGS}>"
Expand All @@ -721,6 +741,10 @@ function(COMMON_TARGET_PROPERTIES TARGET)
target_link_options(${TARGET} INTERFACE "$<${coverage_on}:--coverage>")
target_link_options(${TARGET} PRIVATE
"$<${is_apple_clang_genex}:-Wl,-no_warn_duplicate_libraries>"
"$<${is_darwin_clang_ge_21_x86_64}:-L/usr/local/opt/llvm/lib/c++>"
"$<${is_darwin_clang_ge_21_x86_64}:-Wl,-rpath,/usr/local/opt/llvm/lib/c++>"
"$<${is_darwin_clang_ge_21_arm64}:-L/opt/homebrew/opt/llvm/lib/c++>"
"$<${is_darwin_clang_ge_21_arm64}:-Wl,-rpath,/opt/homebrew/opt/llvm/lib/c++>"
"${SANITIZER_LD_FLAGS}"
)
target_link_libraries(${TARGET} PRIVATE
Expand Down
2 changes: 2 additions & 0 deletions art_internal_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1444,6 +1444,7 @@ class basic_inode_4 : public basic_inode_4_parent<ArtPolicy> {
keys.byte_array.cbegin(), keys.byte_array.cbegin() + children_count_));
}

UNODB_DETAIL_DISABLE_CLANG_21_WARNING("-Wnrvo")
[[nodiscard]] constexpr auto leave_last_child(std::uint8_t child_to_delete,
db_type &db_instance) noexcept {
UNODB_DETAIL_ASSERT(this->is_min_size());
Expand All @@ -1465,6 +1466,7 @@ class basic_inode_4 : public basic_inode_4_parent<ArtPolicy> {
}
return child_to_leave_ptr;
}
UNODB_DETAIL_RESTORE_CLANG_21_WARNINGS()

[[nodiscard, gnu::pure]] find_result find_child(std::byte key_byte) noexcept {
#ifdef UNODB_DETAIL_X86_64
Expand Down
4 changes: 2 additions & 2 deletions benchmark/micro_benchmark_node_utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,8 @@ number_to_full_node_tree_with_gaps_key(std::uint64_t i) noexcept {
// Key vectors

template <typename NumberToKeyFn>
[[nodiscard]] auto generate_keys_to_limit(std::uint64_t key_limit,
NumberToKeyFn number_to_key_fn) {
[[nodiscard]] std::vector<std::uint64_t> generate_keys_to_limit(
std::uint64_t key_limit, NumberToKeyFn number_to_key_fn) {
std::vector<std::uint64_t> result;
std::uint64_t i = 0;
while (true) {
Expand Down
2 changes: 2 additions & 0 deletions fuzz_deepstate/test_art_fuzz_deepstate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ void op_with_oom_test(oracle_type &oracle, std::vector<std::uint64_t> &keys,

UNODB_START_DEEPSTATE_TESTS()

// NOLINTBEGIN(clang-analyzer-security.ArrayBound)
TEST(ART, DeepStateFuzz) {
Comment thread
laurynas-biveinis marked this conversation as resolved.
const auto limit_max_key = DeepState_Bool();
const auto max_key_value =
Expand Down Expand Up @@ -308,3 +309,4 @@ TEST(ART, DeepStateFuzz) {
#endif // UNODB_DETAIL_WITH_STATS
ASSERT(test_db.empty());
}
// NOLINTEND(clang-analyzer-security.ArrayBound)
2 changes: 2 additions & 0 deletions fuzz_deepstate/test_qsbr_fuzz_deepstate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -611,6 +611,7 @@ void do_or_dispatch_op(std::size_t thread_i, thread_operation op) {

UNODB_START_DEEPSTATE_TESTS()

// NOLINTBEGIN(clang-analyzer-security.ArrayBound)
TEST(QSBR, DeepStateFuzz) {
const auto test_length = DeepState_ShortInRange(0, 2000);
LOG(TRACE) << "Test length " << test_length;
Expand Down Expand Up @@ -758,5 +759,6 @@ TEST(QSBR, DeepStateFuzz) {
ASSERT(unodb::this_thread().previous_interval_requests_empty());
ASSERT(unodb::this_thread().current_interval_requests_empty());
}
// NOLINTEND(clang-analyzer-security.ArrayBound)

} // namespace
Loading
Loading