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

Reply via email to