Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package llvm15 for openSUSE:Factory checked in at 2022-10-29 20:15:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/llvm15 (Old) and /work/SRC/openSUSE:Factory/.llvm15.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "llvm15" Sat Oct 29 20:15:04 2022 rev:3 rq:1031948 version:15.0.3 Changes: -------- --- /work/SRC/openSUSE:Factory/llvm15/llvm15.changes 2022-10-11 18:04:06.421944867 +0200 +++ /work/SRC/openSUSE:Factory/.llvm15.new.2275/llvm15.changes 2022-10-29 20:15:27.669684613 +0200 @@ -1,0 +2,12 @@ +Thu Oct 27 20:44:54 UTC 2022 - Aaron Puchert <aaronpuch...@alice-dsl.net> + +- Update to version 15.0.3. + * This release contains bug-fixes for the LLVM 15.0.0 release. + This release is API and ABI compatible with 15.0.0. +- Add llvm-armv7-fix-vector-compare-with-zero-lowering.patch: Fix + lowering of non-canonical vector comparison with zero on armv7, + preventing a crash (boo#1204267, gh#llvm/llvm-project#58514). +- Add lldb-swig-4.1.0-build-fix.patch: Fix build with Swig 4.1.0. +- Rebase llvm-do-not-install-static-libraries.patch. + +------------------------------------------------------------------- Old: ---- clang-15.0.2.src.tar.xz clang-docs-15.0.2.src.tar.xz clang-tools-extra-15.0.2.src.tar.xz cmake-15.0.2.src.tar.xz compiler-rt-15.0.2.src.tar.xz libcxx-15.0.2.src.tar.xz libcxxabi-15.0.2.src.tar.xz lld-15.0.2.src.tar.xz lldb-15.0.2.src.tar.xz llvm-15.0.2.src.tar.xz llvm-docs-15.0.2.src.tar.xz openmp-15.0.2.src.tar.xz polly-15.0.2.src.tar.xz New: ---- clang-15.0.3.src.tar.xz clang-docs-15.0.3.src.tar.xz clang-tools-extra-15.0.3.src.tar.xz cmake-15.0.3.src.tar.xz compiler-rt-15.0.3.src.tar.xz libcxx-15.0.3.src.tar.xz libcxxabi-15.0.3.src.tar.xz lld-15.0.3.src.tar.xz lldb-15.0.3.src.tar.xz lldb-swig-4.1.0-build-fix.patch llvm-15.0.3.src.tar.xz llvm-armv7-fix-vector-compare-with-zero-lowering.patch llvm-docs-15.0.3.src.tar.xz openmp-15.0.3.src.tar.xz polly-15.0.3.src.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ llvm15.spec ++++++ --- /var/tmp/diff_new_pack.fePPhs/_old 2022-10-29 20:15:31.337704156 +0200 +++ /var/tmp/diff_new_pack.fePPhs/_new 2022-10-29 20:15:31.369704326 +0200 @@ -16,14 +16,14 @@ # -%define _relver 15.0.2 +%define _relver 15.0.3 %define _version %_relver%{?_rc:rc%_rc} %define _tagver %_relver%{?_rc:-rc%_rc} %define _minor 15.0 %define _sonum 15 %define _itsme15 1 # Integer version used by update-alternatives -%define _uaver 1502 +%define _uaver 1503 %define _soclang 13 %define _socxx 1 @@ -384,6 +384,10 @@ Patch35: libcxxabi-fix-armv7-test.patch # Let test match for linux instead of -linux-. Patch36: clang-test-xfail-gnuless-triple.patch +# Fix lowering of "icmp uge <4 x i32> zeroinitializer, ..." on armv7. (https://reviews.llvm.org/D136447?id=469567, boo#1204267, gh#llvm/llvm-project#58514) +Patch37: llvm-armv7-fix-vector-compare-with-zero-lowering.patch +# Fix build with Swig 4.1.0: backport of upstream commits 81fc5f7909a4, f0a25fe0b746. (gh#llvm/llvm-project#58018) +Patch38: lldb-swig-4.1.0-build-fix.patch BuildRequires: binutils-devel >= 2.21.90 BuildRequires: cmake >= 3.13.4 BuildRequires: fdupes @@ -812,6 +816,7 @@ %patch25 -p2 %patch33 -p2 %patch34 -p2 +%patch37 -p1 pushd clang-%{_version}.src %patch2 -p1 @@ -843,6 +848,7 @@ %if %{with lldb} pushd lldb-%{_version}.src %patch11 -p1 +%patch38 -p2 popd %endif ++++++ clang-15.0.2.src.tar.xz -> clang-15.0.3.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm15/clang-15.0.2.src.tar.xz /work/SRC/openSUSE:Factory/.llvm15.new.2275/clang-15.0.3.src.tar.xz differ: char 15, line 1 ++++++ clang-docs-15.0.2.src.tar.xz -> clang-docs-15.0.3.src.tar.xz ++++++ ++++ 4085 lines of diff (skipped) ++++++ clang-tools-extra-15.0.2.src.tar.xz -> clang-tools-extra-15.0.3.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clang-tidy/readability/SimplifyBooleanExprCheck.cpp new/clang-tools-extra-15.0.3.src/clang-tidy/readability/SimplifyBooleanExprCheck.cpp --- old/clang-tools-extra-15.0.2.src/clang-tidy/readability/SimplifyBooleanExprCheck.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clang-tidy/readability/SimplifyBooleanExprCheck.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -472,8 +472,8 @@ checkSingleStatement(If->getThen(), parseReturnLiteralBool); if (ThenReturnBool && ThenReturnBool.Bool != TrailingReturnBool.Bool) { - if (Check->ChainedConditionalReturn || - (!PrevIf && If->getElse() == nullptr)) { + if ((Check->ChainedConditionalReturn || !PrevIf) && + If->getElse() == nullptr) { Check->replaceCompoundReturnWithCondition( Context, cast<ReturnStmt>(*Second), TrailingReturnBool.Bool, If, ThenReturnBool.Item); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/Headers.cpp new/clang-tools-extra-15.0.3.src/clangd/Headers.cpp --- old/clang-tools-extra-15.0.2.src/clangd/Headers.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/Headers.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -22,9 +22,17 @@ namespace clang { namespace clangd { -const char IWYUPragmaKeep[] = "// IWYU pragma: keep"; -const char IWYUPragmaExport[] = "// IWYU pragma: export"; -const char IWYUPragmaBeginExports[] = "// IWYU pragma: begin_exports"; +llvm::Optional<StringRef> parseIWYUPragma(const char *Text) { + // This gets called for every comment seen in the preamble, so it's quite hot. + constexpr llvm::StringLiteral IWYUPragma = "// IWYU pragma: "; + if (strncmp(Text, IWYUPragma.data(), IWYUPragma.size())) + return llvm::None; + Text += IWYUPragma.size(); + const char *End = Text; + while (*End != 0 && *End != '\n') + ++End; + return StringRef(Text, End - Text); +} class IncludeStructure::RecordHeaders : public PPCallbacks, public CommentHandler { @@ -129,10 +137,10 @@ } bool HandleComment(Preprocessor &PP, SourceRange Range) override { - bool Err = false; - llvm::StringRef Text = SM.getCharacterData(Range.getBegin(), &Err); - if (Err) + auto Pragma = parseIWYUPragma(SM.getCharacterData(Range.getBegin())); + if (!Pragma) return false; + if (inMainFile()) { // Given: // @@ -150,8 +158,7 @@ // will know that the next inclusion is behind the IWYU pragma. // FIXME: Support "IWYU pragma: begin_exports" and "IWYU pragma: // end_exports". - if (!Text.startswith(IWYUPragmaExport) && - !Text.startswith(IWYUPragmaKeep)) + if (!Pragma->startswith("export") && !Pragma->startswith("keep")) return false; unsigned Offset = SM.getFileOffset(Range.getBegin()); LastPragmaKeepInMainFileLine = @@ -161,8 +168,7 @@ // does not support them properly yet, so they will be not marked as // unused. // FIXME: Once IncludeCleaner supports export pragmas, remove this. - if (!Text.startswith(IWYUPragmaExport) && - !Text.startswith(IWYUPragmaBeginExports)) + if (!Pragma->startswith("export") && !Pragma->startswith("begin_exports")) return false; Out->HasIWYUExport.insert( *Out->getID(SM.getFileEntryForID(SM.getFileID(Range.getBegin())))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/Headers.h new/clang-tools-extra-15.0.3.src/clangd/Headers.h --- old/clang-tools-extra-15.0.2.src/clangd/Headers.h 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/Headers.h 2022-10-18 08:29:45.000000000 +0200 @@ -35,6 +35,12 @@ /// Returns true if \p Include is literal include like "path" or <path>. bool isLiteralInclude(llvm::StringRef Include); +/// If Text begins an Include-What-You-Use directive, returns it. +/// Given "// IWYU pragma: keep", returns "keep". +/// Input is a null-terminated char* as provided by SM.getCharacterData(). +/// (This should not be StringRef as we do *not* want to scan for its length). +llvm::Optional<StringRef> parseIWYUPragma(const char *Text); + /// Represents a header file to be #include'd. struct HeaderFile { std::string File; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/InlayHints.cpp new/clang-tools-extra-15.0.3.src/clangd/InlayHints.cpp --- old/clang-tools-extra-15.0.2.src/clangd/InlayHints.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/InlayHints.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -10,6 +10,7 @@ #include "Config.h" #include "HeuristicResolver.h" #include "ParsedAST.h" +#include "SourceCode.h" #include "clang/AST/Decl.h" #include "clang/AST/DeclarationName.h" #include "clang/AST/ExprCXX.h" @@ -192,8 +193,8 @@ public: InlayHintVisitor(std::vector<InlayHint> &Results, ParsedAST &AST, const Config &Cfg, llvm::Optional<Range> RestrictRange) - : Results(Results), AST(AST.getASTContext()), Cfg(Cfg), - RestrictRange(std::move(RestrictRange)), + : Results(Results), AST(AST.getASTContext()), Tokens(AST.getTokens()), + Cfg(Cfg), RestrictRange(std::move(RestrictRange)), MainFileID(AST.getSourceManager().getMainFileID()), Resolver(AST.getHeuristicResolver()), TypeHintPolicy(this->AST.getPrintingPolicy()), @@ -227,8 +228,7 @@ return true; } - processCall(E->getParenOrBraceRange().getBegin(), E->getConstructor(), - {E->getArgs(), E->getNumArgs()}); + processCall(E->getConstructor(), {E->getArgs(), E->getNumArgs()}); return true; } @@ -254,7 +254,7 @@ if (!Callee) return true; - processCall(E->getRParenLoc(), Callee, {E->getArgs(), E->getNumArgs()}); + processCall(Callee, {E->getArgs(), E->getNumArgs()}); return true; } @@ -278,11 +278,11 @@ return true; } - void addReturnTypeHint(FunctionDecl *D, SourceLocation Loc) { + void addReturnTypeHint(FunctionDecl *D, SourceRange Range) { auto *AT = D->getReturnType()->getContainedAutoType(); if (!AT || AT->getDeducedType().isNull()) return; - addTypeHint(Loc, D->getReturnType(), /*Prefix=*/"-> "); + addTypeHint(Range, D->getReturnType(), /*Prefix=*/"-> "); } bool VisitVarDecl(VarDecl *D) { @@ -375,21 +375,11 @@ private: using NameVec = SmallVector<StringRef, 8>; - // The purpose of Anchor is to deal with macros. It should be the call's - // opening or closing parenthesis or brace. (Always using the opening would - // make more sense but CallExpr only exposes the closing.) We heuristically - // assume that if this location does not come from a macro definition, then - // the entire argument list likely appears in the main file and can be hinted. - void processCall(SourceLocation Anchor, const FunctionDecl *Callee, + void processCall(const FunctionDecl *Callee, llvm::ArrayRef<const Expr *> Args) { if (!Cfg.InlayHints.Parameters || Args.size() == 0 || !Callee) return; - // If the anchor location comes from a macro defintion, there's nowhere to - // put hints. - if (!AST.getSourceManager().getTopMacroCallerLoc(Anchor).isFileID()) - return; - // The parameter name of a move or copy constructor is not very interesting. if (auto *Ctor = dyn_cast<CXXConstructorDecl>(Callee)) if (Ctor->isCopyOrMoveConstructor()) @@ -637,25 +627,33 @@ #undef CHECK_KIND } - auto FileRange = - toHalfOpenFileRange(AST.getSourceManager(), AST.getLangOpts(), R); - if (!FileRange) + auto LSPRange = getHintRange(R); + if (!LSPRange) return; - Range LSPRange{ - sourceLocToPosition(AST.getSourceManager(), FileRange->getBegin()), - sourceLocToPosition(AST.getSourceManager(), FileRange->getEnd())}; - Position LSPPos = Side == HintSide::Left ? LSPRange.start : LSPRange.end; + Position LSPPos = Side == HintSide::Left ? LSPRange->start : LSPRange->end; if (RestrictRange && (LSPPos < RestrictRange->start || !(LSPPos < RestrictRange->end))) return; - // The hint may be in a file other than the main file (for example, a header - // file that was included after the preamble), do not show in that case. - if (!AST.getSourceManager().isWrittenInMainFile(FileRange->getBegin())) - return; bool PadLeft = Prefix.consume_front(" "); bool PadRight = Suffix.consume_back(" "); Results.push_back(InlayHint{LSPPos, (Prefix + Label + Suffix).str(), Kind, - PadLeft, PadRight, LSPRange}); + PadLeft, PadRight, *LSPRange}); + } + + // Get the range of the main file that *exactly* corresponds to R. + llvm::Optional<Range> getHintRange(SourceRange R) { + const auto &SM = AST.getSourceManager(); + auto Spelled = Tokens.spelledForExpanded(Tokens.expandedTokens(R)); + // TokenBuffer will return null if e.g. R corresponds to only part of a + // macro expansion. + if (!Spelled || Spelled->empty()) + return llvm::None; + // Hint must be within the main file, not e.g. a non-preamble include. + if (SM.getFileID(Spelled->front().location()) != SM.getMainFileID() || + SM.getFileID(Spelled->back().location()) != SM.getMainFileID()) + return llvm::None; + return Range{sourceLocToPosition(SM, Spelled->front().location()), + sourceLocToPosition(SM, Spelled->back().endLocation())}; } void addTypeHint(SourceRange R, QualType T, llvm::StringRef Prefix) { @@ -680,6 +678,7 @@ std::vector<InlayHint> &Results; ASTContext &AST; + const syntax::TokenBuffer &Tokens; const Config &Cfg; llvm::Optional<Range> RestrictRange; FileID MainFileID; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/TidyProvider.cpp new/clang-tools-extra-15.0.3.src/clangd/TidyProvider.cpp --- old/clang-tools-extra-15.0.2.src/clangd/TidyProvider.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/TidyProvider.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -212,8 +212,14 @@ // code, which is often the case when clangd // tries to build an AST. "-bugprone-use-after-move", - // Alias for bugprone-use-after-moe. - "-hicpp-invalid-access-moved"); + // Alias for bugprone-use-after-move. + "-hicpp-invalid-access-moved", + + // ----- Performance problems ----- + + // This check runs expensive analysis for each variable. + // It has been observed to increase reparse time by 10x. + "-misc-const-correctness"); size_t Size = BadChecks.size(); for (const std::string &Str : ExtraBadChecks) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/index/CanonicalIncludes.cpp new/clang-tools-extra-15.0.3.src/clangd/index/CanonicalIncludes.cpp --- old/clang-tools-extra-15.0.2.src/clangd/index/CanonicalIncludes.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/index/CanonicalIncludes.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -17,8 +17,6 @@ namespace clang { namespace clangd { namespace { -const char IWYUPragma[] = "// IWYU pragma: private, include "; - const std::pair<llvm::StringRef, llvm::StringRef> IncludeMappings[] = { {"include/__stddef_max_align_t.h", "<cstddef>"}, {"include/__wmmintrin_aes.h", "<wmmintrin.h>"}, @@ -712,17 +710,17 @@ PragmaCommentHandler(CanonicalIncludes *Includes) : Includes(Includes) {} bool HandleComment(Preprocessor &PP, SourceRange Range) override { - llvm::StringRef Text = - Lexer::getSourceText(CharSourceRange::getCharRange(Range), - PP.getSourceManager(), PP.getLangOpts()); - if (!Text.consume_front(IWYUPragma)) + auto Pragma = parseIWYUPragma( + PP.getSourceManager().getCharacterData(Range.getBegin())); + if (!Pragma || !Pragma->consume_front("private, include ")) return false; auto &SM = PP.getSourceManager(); // We always insert using the spelling from the pragma. if (auto *FE = SM.getFileEntryForID(SM.getFileID(Range.getBegin()))) - Includes->addMapping( - FE->getLastRef(), - isLiteralInclude(Text) ? Text.str() : ("\"" + Text + "\"").str()); + Includes->addMapping(FE->getLastRef(), + isLiteralInclude(*Pragma) + ? Pragma->str() + : ("\"" + *Pragma + "\"").str()); return false; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/test/lit.site.cfg.py.in new/clang-tools-extra-15.0.3.src/clangd/test/lit.site.cfg.py.in --- old/clang-tools-extra-15.0.2.src/clangd/test/lit.site.cfg.py.in 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/test/lit.site.cfg.py.in 2022-10-18 08:29:45.000000000 +0200 @@ -10,6 +10,7 @@ config.clang_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@") config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@") config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@") +config.llvm_shlib_dir = "@SHLIBDIR@" config.clangd_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.." config.clangd_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/unittests/HeadersTests.cpp new/clang-tools-extra-15.0.3.src/clangd/unittests/HeadersTests.cpp --- old/clang-tools-extra-15.0.2.src/clangd/unittests/HeadersTests.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/unittests/HeadersTests.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -9,6 +9,7 @@ #include "Headers.h" #include "Compiler.h" +#include "Matchers.h" #include "TestFS.h" #include "TestTU.h" #include "clang/Basic/TokenKinds.h" @@ -30,6 +31,7 @@ using ::testing::AllOf; using ::testing::Contains; using ::testing::ElementsAre; +using ::testing::Eq; using ::testing::IsEmpty; using ::testing::Not; using ::testing::UnorderedElementsAre; @@ -445,6 +447,18 @@ EXPECT_FALSE(Includes.hasIWYUExport(getID("none.h", Includes))); } +TEST(Headers, ParseIWYUPragma) { + EXPECT_THAT(parseIWYUPragma("// IWYU pragma: keep"), HasValue(Eq("keep"))); + EXPECT_THAT(parseIWYUPragma("// IWYU pragma: keep\netc"), + HasValue(Eq("keep"))); + EXPECT_EQ(parseIWYUPragma("/* IWYU pragma: keep"), llvm::None) + << "Only // comments supported!"; + EXPECT_EQ(parseIWYUPragma("// IWYU pragma: keep"), llvm::None) + << "Sensitive to whitespace"; + EXPECT_EQ(parseIWYUPragma("// IWYU pragma:keep"), llvm::None) + << "Sensitive to whitespace"; +} + } // namespace } // namespace clangd } // namespace clang diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/clangd/unittests/InlayHintTests.cpp new/clang-tools-extra-15.0.3.src/clangd/unittests/InlayHintTests.cpp --- old/clang-tools-extra-15.0.2.src/clangd/unittests/InlayHintTests.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/clangd/unittests/InlayHintTests.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -820,6 +820,15 @@ } )cpp", ExpectedHint{"param: ", "param"}); + + // If the macro expands to multiple arguments, don't hint it. + assertParameterHints(R"cpp( + void foo(double x, double y); + #define CONSTANTS 3.14, 2.72 + void bar() { + foo(CONSTANTS); + } + )cpp"); } TEST(ParameterHints, ConstructorParens) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-15.0.2.src/test/clang-tidy/checkers/readability/simplify-bool-expr-chained-conditional-return.cpp new/clang-tools-extra-15.0.3.src/test/clang-tidy/checkers/readability/simplify-bool-expr-chained-conditional-return.cpp --- old/clang-tools-extra-15.0.2.src/test/clang-tidy/checkers/readability/simplify-bool-expr-chained-conditional-return.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/clang-tools-extra-15.0.3.src/test/clang-tidy/checkers/readability/simplify-bool-expr-chained-conditional-return.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -92,3 +92,14 @@ // CHECK-FIXES: {{^}} }{{$}} // CHECK-FIXES: {{^ return i <= 10;$}} // CHECK-FIXES: {{^}$}} + + +bool PR57819(int x) { + // False positive introduced in clang-tidy-15 + // Expect no warning here. + if (x > 0) + return false; + else { + } + return true; +} ++++++ cmake-15.0.2.src.tar.xz -> cmake-15.0.3.src.tar.xz ++++++ ++++++ compiler-rt-15.0.2.src.tar.xz -> compiler-rt-15.0.3.src.tar.xz ++++++ ++++++ libcxx-15.0.2.src.tar.xz -> libcxx-15.0.3.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-15.0.2.src/include/__config new/libcxx-15.0.3.src/include/__config --- old/libcxx-15.0.2.src/include/__config 2022-10-04 11:29:17.000000000 +0200 +++ new/libcxx-15.0.3.src/include/__config 2022-10-18 08:29:45.000000000 +0200 @@ -36,7 +36,7 @@ #ifdef __cplusplus -# define _LIBCPP_VERSION 15002 +# define _LIBCPP_VERSION 15003 # define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y # define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-15.0.2.src/include/__functional/function.h new/libcxx-15.0.3.src/include/__functional/function.h --- old/libcxx-15.0.2.src/include/__functional/function.h 2022-10-04 11:29:17.000000000 +0200 +++ new/libcxx-15.0.3.src/include/__functional/function.h 2022-10-18 08:29:45.000000000 +0200 @@ -883,7 +883,7 @@ #endif // _LIBCPP_NO_RTTI }; -#if defined(_LIBCPP_HAS_BLOCKS_RUNTIME) && !defined(_LIBCPP_HAS_OBJC_ARC) +#if defined(_LIBCPP_HAS_BLOCKS_RUNTIME) extern "C" void *_Block_copy(const void *); extern "C" void _Block_release(const void *); @@ -898,14 +898,22 @@ public: _LIBCPP_INLINE_VISIBILITY explicit __func(__block_type const& __f) +#ifdef _LIBCPP_HAS_OBJC_ARC + : __f_(__f) +#else : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) +#endif { } // [TODO] add && to save on a retain _LIBCPP_INLINE_VISIBILITY explicit __func(__block_type __f, const _Alloc& /* unused */) +#ifdef _LIBCPP_HAS_OBJC_ARC + : __f_(__f) +#else : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) +#endif { } virtual __base<_Rp(_ArgTypes...)>* __clone() const { @@ -921,8 +929,10 @@ } virtual void destroy() _NOEXCEPT { +#ifndef _LIBCPP_HAS_OBJC_ARC if (__f_) _Block_release(__f_); +#endif __f_ = 0; } @@ -950,7 +960,7 @@ #endif // _LIBCPP_NO_RTTI }; -#endif // _LIBCPP_HAS_EXTENSION_BLOCKS && !_LIBCPP_HAS_OBJC_ARC +#endif // _LIBCPP_HAS_EXTENSION_BLOCKS } // namespace __function diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-15.0.2.src/test/libcxx/utilities/function.objects/func.blocks.arc.pass.mm new/libcxx-15.0.3.src/test/libcxx/utilities/function.objects/func.blocks.arc.pass.mm --- old/libcxx-15.0.2.src/test/libcxx/utilities/function.objects/func.blocks.arc.pass.mm 1970-01-01 01:00:00.000000000 +0100 +++ new/libcxx-15.0.3.src/test/libcxx/utilities/function.objects/func.blocks.arc.pass.mm 2022-10-18 08:29:45.000000000 +0200 @@ -0,0 +1,89 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// std::function support for "blocks" when ARC is enabled + +// UNSUPPORTED: c++03 + +// This test requires the Blocks runtime, which is (only?) available on Darwin +// out-of-the-box. +// REQUIRES: has-fblocks && darwin + +// ADDITIONAL_COMPILE_FLAGS: -fblocks -fobjc-arc + +#include <functional> + +#include <cassert> +#include <cstddef> +#include <string> + +struct Foo { + Foo() = default; + Foo(std::size_t (^bl)()) : f(bl) {} + + std::function<int()> f; +}; + +Foo Factory(std::size_t (^bl)()) { + Foo result(bl); + return result; +} + +Foo Factory2() { + auto hello = std::string("Hello world"); + return Factory(^() { + return hello.size(); + }); +} + +Foo AssignmentFactory(std::size_t (^bl)()) { + Foo result; + result.f = bl; + return result; +} + +Foo AssignmentFactory2() { + auto hello = std::string("Hello world"); + return AssignmentFactory(^() { + return hello.size(); + }); +} + +int main(int, char **) { + // Case 1, works + { + auto hello = std::string("Hello world"); + auto f = AssignmentFactory(^() { + return hello.size(); + }); + assert(f.f() == 11); + } + + // Case 2, works + { + auto f = AssignmentFactory2(); + assert(f.f() == 11); + } + + // Case 3, works + { + auto hello = std::string("Hello world"); + auto f = Factory(^() { + return hello.size(); + }); + assert(f.f() == 11); + } + + // Case 4, used to crash under ARC + { + auto f = Factory2(); + assert(f.f() == 11); + } + + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-15.0.2.src/test/libcxx/utilities/function.objects/func.blocks.pass.cpp new/libcxx-15.0.3.src/test/libcxx/utilities/function.objects/func.blocks.pass.cpp --- old/libcxx-15.0.2.src/test/libcxx/utilities/function.objects/func.blocks.pass.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libcxx-15.0.3.src/test/libcxx/utilities/function.objects/func.blocks.pass.cpp 2022-10-18 08:29:45.000000000 +0200 @@ -0,0 +1,146 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// std::function support for the "blocks" extension + +// UNSUPPORTED: c++03 + +// This test requires the Blocks runtime, which is (only?) available +// on Darwin out-of-the-box. +// REQUIRES: has-fblocks && darwin + +// ADDITIONAL_COMPILE_FLAGS: -fblocks + +#include <functional> +#include <cstdlib> +#include <cassert> + +#include <Block.h> + +#include "test_macros.h" +#include "count_new.h" + + +struct A { + static int count; + int id_; + explicit A(int id) { ++count; id_ = id; } + A(const A &a) { id_ = a.id_; ++count; } + ~A() { id_ = -1; --count; } + int operator()() const { return -1; } + int operator()(int i) const { return i; } + int operator()(int, int) const { return -2; } + int operator()(int, int, int) const { return -3; } + int id() const { return id_; } +}; + +int A::count = 0; + +int g(int) { return 0; } + +int main(int, char**) +{ + // swap + { + std::function<int(int)> f1 = g; + std::function<int(int)> f2 = ^(int x) { return x + 1; }; + assert(globalMemCounter.checkOutstandingNewEq(0)); + RTTI_ASSERT(*f1.target<int(*)(int)>() == g); + RTTI_ASSERT(*f2.target<int(^)(int)>() != 0); + swap(f1, f2); + assert(globalMemCounter.checkOutstandingNewEq(0)); + RTTI_ASSERT(*f1.target<int(^)(int)>() != 0); + RTTI_ASSERT(*f2.target<int(*)(int)>() == g); + } + + // operator bool + { + std::function<int(int)> f; + assert(!f); + f = ^(int x) { return x+1; }; + assert(f); + } + + // operator() + { + std::function<int ()> r1(^{ return 4; }); + assert(r1() == 4); + } + { + __block bool called = false; + std::function<void ()> r1(^{ called = true; }); + r1(); + assert(called); + } + { + __block int param = 0; + std::function<void (int)> r1(^(int x){ param = x; }); + r1(4); + assert(param == 4); + } + { + std::function<int (int)> r1(^(int x){ return x + 4; }); + assert(r1(3) == 7); + } + { + __block int param1 = 0; + __block int param2 = 0; + std::function<void (int, int)> r1(^(int x, int y){ param1 = x; param2 = y; }); + r1(3, 4); + assert(param1 == 3); + assert(param2 == 4); + } + { + std::function<int (int, int)> r1(^(int x, int y){ return x + y; }); + assert(r1(3, 4) == 7); + } + + // swap + { + std::function<int(int)> f1 = A(999); + std::function<int(int)> f2 = ^(int x) { return x + 1; }; + assert(A::count == 1); + assert(globalMemCounter.checkOutstandingNewEq(1)); + RTTI_ASSERT(f1.target<A>()->id() == 999); + RTTI_ASSERT((*f2.target<int(^)(int)>())(13) == 14); + f1.swap(f2); + assert(A::count == 1); + assert(globalMemCounter.checkOutstandingNewEq(1)); + RTTI_ASSERT((*f1.target<int(^)(int)>())(13) == 14); + RTTI_ASSERT(f2.target<A>()->id() == 999); + } + assert(globalMemCounter.checkOutstandingNewEq(0)); + assert(A::count == 0); + + // operator== and operator!= + { + std::function<int(int)> f; + assert(f == nullptr); + assert(nullptr == f); + f = ^(int x) { return x + 1; }; + assert(f != nullptr); + assert(nullptr != f); + } + + // target + { + int (^block)(int) = Block_copy(^(int x) { return x + 1; }); + std::function<int(int)> f = block; + RTTI_ASSERT(*f.target<int(^)(int)>() == block); + RTTI_ASSERT(f.target<int(*)(int)>() == 0); + Block_release(block); + } + + // target_type + { + std::function<int(int)> f = ^(int x) { return x + 1; }; + RTTI_ASSERT(f.target_type() == typeid(int(^)(int))); + } + + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-15.0.2.src/test/libcxx/utilities/function.objects/func.blocks.sh.cpp new/libcxx-15.0.3.src/test/libcxx/utilities/function.objects/func.blocks.sh.cpp --- old/libcxx-15.0.2.src/test/libcxx/utilities/function.objects/func.blocks.sh.cpp 2022-10-04 11:29:17.000000000 +0200 +++ new/libcxx-15.0.3.src/test/libcxx/utilities/function.objects/func.blocks.sh.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,147 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// std::function support for the "blocks" extension - -// UNSUPPORTED: c++03 - -// This test requires the Blocks runtime, which is (only?) available -// on Darwin out-of-the-box. -// REQUIRES: has-fblocks && darwin - -// RUN: %{build} -fblocks -// RUN: %{run} - -#include <functional> -#include <cstdlib> -#include <cassert> - -#include <Block.h> - -#include "test_macros.h" -#include "count_new.h" - - -struct A { - static int count; - int id_; - explicit A(int id) { ++count; id_ = id; } - A(const A &a) { id_ = a.id_; ++count; } - ~A() { id_ = -1; --count; } - int operator()() const { return -1; } - int operator()(int i) const { return i; } - int operator()(int, int) const { return -2; } - int operator()(int, int, int) const { return -3; } - int id() const { return id_; } -}; - -int A::count = 0; - -int g(int) { return 0; } - -int main(int, char**) -{ - // swap - { - std::function<int(int)> f1 = g; - std::function<int(int)> f2 = ^(int x) { return x + 1; }; - assert(globalMemCounter.checkOutstandingNewEq(0)); - RTTI_ASSERT(*f1.target<int(*)(int)>() == g); - RTTI_ASSERT(*f2.target<int(^)(int)>() != 0); - swap(f1, f2); - assert(globalMemCounter.checkOutstandingNewEq(0)); - RTTI_ASSERT(*f1.target<int(^)(int)>() != 0); - RTTI_ASSERT(*f2.target<int(*)(int)>() == g); - } - - // operator bool - { - std::function<int(int)> f; - assert(!f); - f = ^(int x) { return x+1; }; - assert(f); - } - - // operator() - { - std::function<int ()> r1(^{ return 4; }); - assert(r1() == 4); - } - { - __block bool called = false; - std::function<void ()> r1(^{ called = true; }); - r1(); - assert(called); - } - { - __block int param = 0; - std::function<void (int)> r1(^(int x){ param = x; }); - r1(4); - assert(param == 4); - } - { - std::function<int (int)> r1(^(int x){ return x + 4; }); - assert(r1(3) == 7); - } - { - __block int param1 = 0; - __block int param2 = 0; - std::function<void (int, int)> r1(^(int x, int y){ param1 = x; param2 = y; }); - r1(3, 4); - assert(param1 == 3); - assert(param2 == 4); - } - { - std::function<int (int, int)> r1(^(int x, int y){ return x + y; }); - assert(r1(3, 4) == 7); - } - - // swap - { - std::function<int(int)> f1 = A(999); - std::function<int(int)> f2 = ^(int x) { return x + 1; }; - assert(A::count == 1); - assert(globalMemCounter.checkOutstandingNewEq(1)); - RTTI_ASSERT(f1.target<A>()->id() == 999); - RTTI_ASSERT((*f2.target<int(^)(int)>())(13) == 14); - f1.swap(f2); - assert(A::count == 1); - assert(globalMemCounter.checkOutstandingNewEq(1)); - RTTI_ASSERT((*f1.target<int(^)(int)>())(13) == 14); - RTTI_ASSERT(f2.target<A>()->id() == 999); - } - assert(globalMemCounter.checkOutstandingNewEq(0)); - assert(A::count == 0); - - // operator== and operator!= - { - std::function<int(int)> f; - assert(f == nullptr); - assert(nullptr == f); - f = ^(int x) { return x + 1; }; - assert(f != nullptr); - assert(nullptr != f); - } - - // target - { - int (^block)(int) = Block_copy(^(int x) { return x + 1; }); - std::function<int(int)> f = block; - RTTI_ASSERT(*f.target<int(^)(int)>() == block); - RTTI_ASSERT(f.target<int(*)(int)>() == 0); - Block_release(block); - } - - // target_type - { - std::function<int(int)> f = ^(int x) { return x + 1; }; - RTTI_ASSERT(f.target_type() == typeid(int(^)(int))); - } - - return 0; -} ++++++ libcxxabi-15.0.2.src.tar.xz -> libcxxabi-15.0.3.src.tar.xz ++++++ ++++++ lld-15.0.2.src.tar.xz -> lld-15.0.3.src.tar.xz ++++++ ++++++ lldb-15.0.2.src.tar.xz -> lldb-15.0.3.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm15/lldb-15.0.2.src.tar.xz /work/SRC/openSUSE:Factory/.llvm15.new.2275/lldb-15.0.3.src.tar.xz differ: char 15, line 1 ++++++ lldb-swig-4.1.0-build-fix.patch ++++++ >From 81fc5f7909a4ef5a8d4b5da2a10f77f7cb01ba63 Mon Sep 17 00:00:00 2001 From: serge-sans-paille <sguel...@redhat.com> Date: Thu, 29 Sep 2022 21:48:38 +0200 Subject: [PATCH] [lldb] Get rid of __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS C++11 made the use of these macro obsolete, see https://sourceware.org/bugzilla/show_bug.cgi?id=15366 As a side effect this prevents https://github.com/swig/swig/issues/2193. Differential Revision: https://reviews.llvm.org/D134877 --- lldb/bindings/CMakeLists.txt | 2 -- lldb/bindings/interfaces.swig | 3 --- 2 files changed, 5 deletions(-) diff --git a/lldb/bindings/CMakeLists.txt b/lldb/bindings/CMakeLists.txt index c8aa0bcf96817..9eed2f1e62999 100644 --- a/lldb/bindings/CMakeLists.txt +++ b/lldb/bindings/CMakeLists.txt @@ -26,8 +26,6 @@ set(SWIG_COMMON_FLAGS -features autodoc -I${LLDB_SOURCE_DIR}/include -I${CMAKE_CURRENT_SOURCE_DIR} - -D__STDC_LIMIT_MACROS - -D__STDC_CONSTANT_MACROS ${DARWIN_EXTRAS} ) diff --git a/lldb/bindings/interfaces.swig b/lldb/bindings/interfaces.swig index fb75513a0df1b..d984711bbd8a2 100644 --- a/lldb/bindings/interfaces.swig +++ b/lldb/bindings/interfaces.swig @@ -1,8 +1,5 @@ /* Various liblldb typedefs that SWIG needs to know about. */ #define __extension__ /* Undefine GCC keyword to make Swig happy when processing glibc's stdint.h. */ -/* The ISO C99 standard specifies that in C++ implementations limit macros such - as INT32_MAX should only be defined if __STDC_LIMIT_MACROS is. */ -#define __STDC_LIMIT_MACROS %include "stdint.i" %include "lldb/lldb-defines.h" >From f0a25fe0b746f56295d5c02116ba28d2f965c175 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova <jples...@redhat.com> Date: Wed, 21 Sep 2022 11:42:46 +0200 Subject: [PATCH] [lldb] Fix 'error: non-const lvalue...' caused by SWIG 4.1.0 Fix the failure caused by change in SwigValueWraper for C++11 and later for improved move semantics in SWIG commit. https://github.com/swig/swig/commit/d1055f4b3d51cb8060893f8036846ac743302dab --- lldb/bindings/python/python-typemaps.swig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lldb/bindings/python/python-typemaps.swig b/lldb/bindings/python/python-typemaps.swig index 203be803d2ebd..11f68d59ae7be 100644 --- a/lldb/bindings/python/python-typemaps.swig +++ b/lldb/bindings/python/python-typemaps.swig @@ -435,7 +435,7 @@ template <> bool SetNumberFromPyObject<double>(double &number, PyObject *obj) { %typemap(out) lldb::FileSP { $result = nullptr; - lldb::FileSP &sp = $1; + const lldb::FileSP &sp = $1; if (sp) { PythonFile pyfile = unwrapOrSetPythonException(PythonFile::FromFile(*sp)); if (!pyfile.IsValid()) ++++++ llvm-15.0.2.src.tar.xz -> llvm-15.0.3.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm15/llvm-15.0.2.src.tar.xz /work/SRC/openSUSE:Factory/.llvm15.new.2275/llvm-15.0.3.src.tar.xz differ: char 15, line 1 ++++++ llvm-armv7-fix-vector-compare-with-zero-lowering.patch ++++++ Index: llvm/lib/Target/ARM/ARMISelLowering.cpp =================================================================== --- llvm/lib/Target/ARM/ARMISelLowering.cpp +++ llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -6833,25 +6833,25 @@ // If one of the operands is a constant vector zero, attempt to fold the // comparison to a specialized compare-against-zero form. - SDValue SingleOp; - if (ISD::isBuildVectorAllZeros(Op1.getNode())) - SingleOp = Op0; - else if (ISD::isBuildVectorAllZeros(Op0.getNode())) { + if (ISD::isBuildVectorAllZeros(Op0.getNode()) && + (Opc == ARMCC::GE || Opc == ARMCC::GT || Opc == ARMCC::EQ || + Opc == ARMCC::NE)) { if (Opc == ARMCC::GE) Opc = ARMCC::LE; else if (Opc == ARMCC::GT) Opc = ARMCC::LT; - SingleOp = Op1; + std::swap(Op0, Op1); } SDValue Result; - if (SingleOp.getNode()) { - Result = DAG.getNode(ARMISD::VCMPZ, dl, CmpVT, SingleOp, + if (ISD::isBuildVectorAllZeros(Op1.getNode()) && + (Opc == ARMCC::GE || Opc == ARMCC::GT || Opc == ARMCC::LE || + Opc == ARMCC::LT || Opc == ARMCC::NE || Opc == ARMCC::EQ)) + Result = DAG.getNode(ARMISD::VCMPZ, dl, CmpVT, Op0, DAG.getConstant(Opc, dl, MVT::i32)); - } else { + else Result = DAG.getNode(ARMISD::VCMP, dl, CmpVT, Op0, Op1, DAG.getConstant(Opc, dl, MVT::i32)); - } Result = DAG.getSExtOrTrunc(Result, dl, VT); Index: llvm/test/CodeGen/Thumb2/mve-pred-and.ll =================================================================== --- llvm/test/CodeGen/Thumb2/mve-pred-and.ll +++ llvm/test/CodeGen/Thumb2/mve-pred-and.ll @@ -122,8 +122,9 @@ define arm_aapcs_vfpcc <4 x i32> @cmpulez_v4i1(<4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: cmpulez_v4i1: ; CHECK: @ %bb.0: @ %entry +; CHECK-NEXT: vmov.i32 q2, #0x0 ; CHECK-NEXT: vpt.i32 eq, q0, zr -; CHECK-NEXT: vcmpt.u32 cs, q1, zr +; CHECK-NEXT: vcmpt.u32 cs, q2, q1 ; CHECK-NEXT: vpsel q0, q0, q1 ; CHECK-NEXT: bx lr entry: Index: llvm/test/CodeGen/Thumb2/mve-pred-or.ll =================================================================== --- llvm/test/CodeGen/Thumb2/mve-pred-or.ll +++ llvm/test/CodeGen/Thumb2/mve-pred-or.ll @@ -123,7 +123,8 @@ define arm_aapcs_vfpcc <4 x i32> @cmpulez_v4i1(<4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: cmpulez_v4i1: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u32 cs, q1, zr +; CHECK-NEXT: vmov.i32 q2, #0x0 +; CHECK-NEXT: vcmp.u32 cs, q2, q1 ; CHECK-NEXT: vpnot ; CHECK-NEXT: vpst ; CHECK-NEXT: vcmpt.i32 ne, q0, zr Index: llvm/test/CodeGen/Thumb2/mve-pred-xor.ll =================================================================== --- llvm/test/CodeGen/Thumb2/mve-pred-xor.ll +++ llvm/test/CodeGen/Thumb2/mve-pred-xor.ll @@ -151,7 +151,8 @@ define arm_aapcs_vfpcc <4 x i32> @cmpulez_v4i1(<4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: cmpulez_v4i1: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u32 cs, q1, zr +; CHECK-NEXT: vmov.i32 q2, #0x0 +; CHECK-NEXT: vcmp.u32 cs, q2, q1 ; CHECK-NEXT: vmrs r0, p0 ; CHECK-NEXT: vcmp.i32 eq, q0, zr ; CHECK-NEXT: vmrs r1, p0 Index: llvm/test/CodeGen/Thumb2/mve-vcmpz.ll =================================================================== --- llvm/test/CodeGen/Thumb2/mve-vcmpz.ll +++ llvm/test/CodeGen/Thumb2/mve-vcmpz.ll @@ -110,7 +110,8 @@ define arm_aapcs_vfpcc <4 x i32> @vcmp_ulez_v4i32(<4 x i32> %src, <4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: vcmp_ulez_v4i32: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u32 cs, q0, zr +; CHECK-NEXT: vmov.i32 q3, #0x0 +; CHECK-NEXT: vcmp.u32 cs, q3, q0 ; CHECK-NEXT: vpsel q0, q1, q2 ; CHECK-NEXT: bx lr entry: @@ -229,7 +230,8 @@ define arm_aapcs_vfpcc <8 x i16> @vcmp_ulez_v8i16(<8 x i16> %src, <8 x i16> %a, <8 x i16> %b) { ; CHECK-LABEL: vcmp_ulez_v8i16: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u16 cs, q0, zr +; CHECK-NEXT: vmov.i32 q3, #0x0 +; CHECK-NEXT: vcmp.u16 cs, q3, q0 ; CHECK-NEXT: vpsel q0, q1, q2 ; CHECK-NEXT: bx lr entry: @@ -348,7 +350,8 @@ define arm_aapcs_vfpcc <16 x i8> @vcmp_ulez_v16i8(<16 x i8> %src, <16 x i8> %a, <16 x i8> %b) { ; CHECK-LABEL: vcmp_ulez_v16i8: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u8 cs, q0, zr +; CHECK-NEXT: vmov.i32 q3, #0x0 +; CHECK-NEXT: vcmp.u8 cs, q3, q0 ; CHECK-NEXT: vpsel q0, q1, q2 ; CHECK-NEXT: bx lr entry: @@ -489,7 +492,8 @@ define arm_aapcs_vfpcc <4 x i32> @vcmp_r_ugez_v4i32(<4 x i32> %src, <4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: vcmp_r_ugez_v4i32: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u32 cs, q0, zr +; CHECK-NEXT: vmov.i32 q3, #0x0 +; CHECK-NEXT: vcmp.u32 cs, q3, q0 ; CHECK-NEXT: vpsel q0, q1, q2 ; CHECK-NEXT: bx lr entry: @@ -608,7 +612,8 @@ define arm_aapcs_vfpcc <8 x i16> @vcmp_r_ugez_v8i16(<8 x i16> %src, <8 x i16> %a, <8 x i16> %b) { ; CHECK-LABEL: vcmp_r_ugez_v8i16: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u16 cs, q0, zr +; CHECK-NEXT: vmov.i32 q3, #0x0 +; CHECK-NEXT: vcmp.u16 cs, q3, q0 ; CHECK-NEXT: vpsel q0, q1, q2 ; CHECK-NEXT: bx lr entry: @@ -727,7 +732,8 @@ define arm_aapcs_vfpcc <16 x i8> @vcmp_r_ugez_v16i8(<16 x i8> %src, <16 x i8> %a, <16 x i8> %b) { ; CHECK-LABEL: vcmp_r_ugez_v16i8: ; CHECK: @ %bb.0: @ %entry -; CHECK-NEXT: vcmp.u8 cs, q0, zr +; CHECK-NEXT: vmov.i32 q3, #0x0 +; CHECK-NEXT: vcmp.u8 cs, q3, q0 ; CHECK-NEXT: vpsel q0, q1, q2 ; CHECK-NEXT: bx lr entry: ++++++ llvm-do-not-install-static-libraries.patch ++++++ --- /var/tmp/diff_new_pack.fePPhs/_old 2022-10-29 20:15:38.785743839 +0200 +++ /var/tmp/diff_new_pack.fePPhs/_new 2022-10-29 20:15:38.789743860 +0200 @@ -2,10 +2,10 @@ want after installation. By not copying them in the first place we reduce the disk usage during installation. -Index: clang-15.0.2.src/cmake/modules/AddClang.cmake +Index: clang-15.0.3.src/cmake/modules/AddClang.cmake =================================================================== ---- a/clang-15.0.2.src/cmake/modules/AddClang.cmake -+++ b/clang-15.0.2.src/cmake/modules/AddClang.cmake +--- a/clang-15.0.3.src/cmake/modules/AddClang.cmake ++++ b/clang-15.0.3.src/cmake/modules/AddClang.cmake @@ -106,12 +106,15 @@ macro(add_clang_library name) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN) @@ -68,10 +68,10 @@ endif() if (ARG_MODULE) set_target_properties(${name} PROPERTIES FOLDER "Loadable modules") -Index: lld-15.0.2.src/cmake/modules/AddLLD.cmake +Index: lld-15.0.3.src/cmake/modules/AddLLD.cmake =================================================================== ---- a/lld-15.0.2.src/cmake/modules/AddLLD.cmake -+++ b/lld-15.0.2.src/cmake/modules/AddLLD.cmake +--- a/lld-15.0.3.src/cmake/modules/AddLLD.cmake ++++ b/lld-15.0.3.src/cmake/modules/AddLLD.cmake @@ -17,13 +17,6 @@ macro(add_lld_library name) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) @@ -86,10 +86,10 @@ if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) add_llvm_install_targets(install-${name} DEPENDS ${name} -Index: polly-15.0.2.src/cmake/polly_macros.cmake +Index: polly-15.0.3.src/cmake/polly_macros.cmake =================================================================== ---- a/polly-15.0.2.src/cmake/polly_macros.cmake -+++ b/polly-15.0.2.src/cmake/polly_macros.cmake +--- a/polly-15.0.3.src/cmake/polly_macros.cmake ++++ b/polly-15.0.3.src/cmake/polly_macros.cmake @@ -42,12 +42,14 @@ macro(add_polly_library name) llvm_config(${name} ${LLVM_LINK_COMPONENTS}) endif( LLVM_LINK_COMPONENTS ) @@ -110,10 +110,10 @@ endmacro(add_polly_library) macro(add_polly_loadable_module name) -Index: polly-15.0.2.src/lib/CMakeLists.txt +Index: polly-15.0.3.src/lib/CMakeLists.txt =================================================================== ---- a/polly-15.0.2.src/lib/CMakeLists.txt -+++ b/polly-15.0.2.src/lib/CMakeLists.txt +--- a/polly-15.0.3.src/lib/CMakeLists.txt ++++ b/polly-15.0.3.src/lib/CMakeLists.txt @@ -74,7 +74,7 @@ set_target_properties(PollyCore PROPERTI # It depends on all library it needs, such that with # LLVM_POLLY_LINK_INTO_TOOLS=ON, its dependencies like PollyISL are linked as ++++++ llvm-docs-15.0.2.src.tar.xz -> llvm-docs-15.0.3.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm15/llvm-docs-15.0.2.src.tar.xz /work/SRC/openSUSE:Factory/.llvm15.new.2275/llvm-docs-15.0.3.src.tar.xz differ: char 27, line 1 ++++++ openmp-15.0.2.src.tar.xz -> openmp-15.0.3.src.tar.xz ++++++ ++++++ polly-15.0.2.src.tar.xz -> polly-15.0.3.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm15/polly-15.0.2.src.tar.xz /work/SRC/openSUSE:Factory/.llvm15.new.2275/polly-15.0.3.src.tar.xz differ: char 15, line 1