From eed770b3a18f485d48a562dd3dc9ee766af9f0a6 Mon Sep 17 00:00:00 2001 From: Daniel Martinez Date: Fri, 3 Nov 2023 17:49:25 -0400 Subject: [PATCH] clazy: rebuild for llvm17 --- srcpkgs/clazy/patches/llvm16.patch | 83 ++++++++++++++++++++++++++++++ srcpkgs/clazy/patches/llvm17.patch | 28 ++++++++++ srcpkgs/clazy/template | 4 +- 3 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/clazy/patches/llvm16.patch create mode 100644 srcpkgs/clazy/patches/llvm17.patch diff --git a/srcpkgs/clazy/patches/llvm16.patch b/srcpkgs/clazy/patches/llvm16.patch new file mode 100644 index 00000000000..a5759060c11 --- /dev/null +++ b/srcpkgs/clazy/patches/llvm16.patch @@ -0,0 +1,83 @@ +From a05ac7eb6f6198c3f478bd7b5b4bfc062a8d63cc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ivan=20=C4=8Cuki=C4=87?= +Date: Tue, 7 Feb 2023 11:06:19 +0100 +Subject: [PATCH] Adapt to API changes in clang/llvm 16 + +--- + src/SourceCompatibilityHelpers.h | 17 ++++++++++++----- + src/checkbase.h | 1 + + src/checks/level0/lambda-in-connect.cpp | 2 +- + 3 files changed, 14 insertions(+), 6 deletions(-) + +diff --git a/src/SourceCompatibilityHelpers.h b/src/SourceCompatibilityHelpers.h +index c1a23a4b..5e2dc606 100644 +--- a/src/SourceCompatibilityHelpers.h ++++ b/src/SourceCompatibilityHelpers.h +@@ -107,7 +107,11 @@ inline clang::tooling::Replacements& DiagnosticFix(clang::tooling::Diagnostic &d + + inline auto getBuffer(const clang::SourceManager &sm, clang::FileID id, bool *invalid) + { +-#if LLVM_VERSION_MAJOR >= 12 ++#if LLVM_VERSION_MAJOR >= 16 ++ auto buffer = sm.getBufferOrNone(id); ++ *invalid = !buffer.has_value(); ++ return buffer; ++#elif LLVM_VERSION_MAJOR >= 12 + auto buffer = sm.getBufferOrNone(id); + *invalid = !buffer.hasValue(); + return buffer; +@@ -116,11 +120,12 @@ inline auto getBuffer(const clang::SourceManager &sm, clang::FileID id, bool *in + #endif + } + +-#if LLVM_VERSION_MAJOR >= 12 +- ++#if LLVM_VERSION_MAJOR >= 16 ++#define GET_LEXER(id, inputFile, sm, lo) \ ++clang::Lexer(id, inputFile.value(), sm, lo) ++#elif LLVM_VERSION_MAJOR >= 12 + #define GET_LEXER(id, inputFile, sm, lo) \ + clang::Lexer(id, inputFile.getValue(), sm, lo) +- + #else + #define GET_LEXER(id, inputFile, sm, lo) \ + clang::Lexer(id, inputFile, sm, lo) +@@ -144,7 +149,9 @@ inline bool contains_lower(clang::StringRef haystack, clang::StringRef needle) + #endif + } + +-#if LLVM_VERSION_MAJOR >= 15 ++#if LLVM_VERSION_MAJOR >= 16 ++using OptionalFileEntryRef = clang::CustomizableOptional; ++#elif LLVM_VERSION_MAJOR >= 15 + using OptionalFileEntryRef = clang::Optional; + #else + using OptionalFileEntryRef = const clang::FileEntry*; +diff --git a/src/checkbase.h b/src/checkbase.h +index 02f6a6bf..6a8c634b 100644 +--- a/src/checkbase.h ++++ b/src/checkbase.h +@@ -93,6 +93,7 @@ public: + void InclusionDirective(clang::SourceLocation HashLoc, const clang::Token &IncludeTok, clang::StringRef FileName, bool IsAngled, + clang::CharSourceRange FilenameRange, clazy::OptionalFileEntryRef File, clang::StringRef SearchPath, + clang::StringRef RelativePath, const clang::Module *Imported, clang::SrcMgr::CharacteristicKind FileType) override; ++ + private: + CheckBase *const check; + }; +diff --git a/src/checks/level0/lambda-in-connect.cpp b/src/checks/level0/lambda-in-connect.cpp +index b0da926f..1ba1126f 100644 +--- a/src/checks/level0/lambda-in-connect.cpp ++++ b/src/checks/level0/lambda-in-connect.cpp +@@ -71,7 +71,7 @@ void LambdaInConnect::VisitStmt(clang::Stmt *stmt) + + for (auto capture : captures) { + if (capture.getCaptureKind() == clang::LCK_ByRef) { +- VarDecl *declForCapture = capture.getCapturedVar(); ++ auto *declForCapture = capture.getCapturedVar(); + if (declForCapture && declForCapture != receiverDecl && clazy::isValueDeclInFunctionContext(declForCapture)) + emitWarning(capture.getLocation(), "captured local variable by reference might go out of scope before lambda is called"); + } +-- +GitLab + diff --git a/srcpkgs/clazy/patches/llvm17.patch b/srcpkgs/clazy/patches/llvm17.patch new file mode 100644 index 00000000000..910ab426070 --- /dev/null +++ b/srcpkgs/clazy/patches/llvm17.patch @@ -0,0 +1,28 @@ +--- a/src/checks/manuallevel/unexpected-flag-enumerator-value.cpp 2022-01-20 18:18:47.000000000 -0500 ++++ b/src/checks/manuallevel/unexpected-flag-enumerator-value.cpp 2023-11-03 17:12:24.669027622 -0400 +@@ -61,8 +61,13 @@ + if (val.isMask() && val.countTrailingOnes() >= MinOnesToQualifyAsMask) + return true; + ++#if LLVM_VERSION_MAJOR >= 17 ++ if (val.isShiftedMask() && val.popcount() >= MinOnesToQualifyAsMask) ++ return true; ++#else + if (val.isShiftedMask() && val.countPopulation() >= MinOnesToQualifyAsMask) + return true; ++#endif + + if (clazy::contains_lower(en->getName(), "mask")) + return true; +@@ -158,7 +163,11 @@ + + for (EnumConstantDecl* enumerator : enumerators) { + const auto &initVal = enumerator->getInitVal(); ++#if LLVM_VERSION_MAJOR >= 17 ++ if (!initVal.isPowerOf2() && !initVal.isZero() && !initVal.isNegative()) { ++#else + if (!initVal.isPowerOf2() && !initVal.isNullValue() && !initVal.isNegative()) { ++#endif + if (isIntentionallyNotPowerOf2(enumerator)) + continue; + const auto value = enumerator->getInitVal().getLimitedValue(); diff --git a/srcpkgs/clazy/template b/srcpkgs/clazy/template index f81de08ab83..fdab8dda0b8 100644 --- a/srcpkgs/clazy/template +++ b/srcpkgs/clazy/template @@ -1,11 +1,11 @@ # Template file for 'clazy' pkgname=clazy version=1.11 -revision=2 +revision=3 build_style=cmake build_helper=qemu hostmakedepends="llvm" -makedepends="clang llvm clang-tools-extra" +makedepends="clang llvm17-devel clang-tools-extra" depends="clang" short_desc="Qt oriented code checker based on clang framework" maintainer="John "