diff --git a/.clang-tidy b/.clang-tidy index fd1ddf2..ebba2b9 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,4 +1,4 @@ -Checks: '-*,clang-diagnostic-*,google-readability-casting,readability-else-after-return,performance-unnecessary-copy-initialization,bugprone-use-after-move,modernize-use-nullptr,modernize-redundant-void-arg,modernize-return-braced-init-list,modernize-use-default-member-init,modernize-use-equals-default,modernize-use-equals-delete,modernize-use-nodiscard,modernize-use-override,cppcoreguidelines-avoid-goto,misc-unconventional-assign-operator,cppcoreguidelines-narrowing-conversions,bugprone-assert-side-effect,bugprone-bool-pointer-implicit-conversion,bugprone-copy-constructor-init,bugprone-forward-declaration-namespace,bugprone-forwarding-reference-overload,bugprone-macro-parentheses' +Checks: '-clang-analyzer-security.insecureAPI.bzero,clang-diagnostic-*,google-readability-casting,readability-else-after-return,performance-unnecessary-copy-initialization,bugprone-use-after-move,modernize-use-nullptr,modernize-redundant-void-arg,modernize-return-braced-init-list,modernize-use-default-member-init,modernize-use-equals-default,modernize-use-equals-delete,modernize-use-nodiscard,modernize-use-override,cppcoreguidelines-avoid-goto,misc-unconventional-assign-operator,cppcoreguidelines-narrowing-conversions,bugprone-assert-side-effect,bugprone-bool-pointer-implicit-conversion,bugprone-copy-constructor-init,bugprone-forward-declaration-namespace,bugprone-forwarding-reference-overload,bugprone-macro-parentheses,bugprone-macro-repeated-side-effects,bugprone-move-forwarding-reference,bugprone-misplaced-widening-cast,bugprone-swapped-arguments' # It would be nice to enable: # - readability-magic-numbers # - modernize-avoid-c-arrays diff --git a/src/ds/bits.h b/src/ds/bits.h index 29e3863..59cd7c3 100644 --- a/src/ds/bits.h +++ b/src/ds/bits.h @@ -42,6 +42,15 @@ #define UNUSED(x) ((void)(x)) +#if __has_builtin(__builtin_assume) +# define SNMALLOC_ASSUME(x) __builtin_assume(x) +#else +# define SNMALLOC_ASSUME(x) \ + do \ + { \ + } while (0) +#endif + // #define USE_LZCNT #include "address.h" diff --git a/src/mem/pagemap.h b/src/mem/pagemap.h index 0eada66..efc0f68 100644 --- a/src/mem/pagemap.h +++ b/src/mem/pagemap.h @@ -281,6 +281,7 @@ namespace snmalloc for (; ix < last; ix++) { + SNMALLOC_ASSUME(leaf_ix.first != nullptr); leaf_ix.first->values[ix] = x; }