Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package llvm16 for SUSE:ALP:Workbench 
checked in at 2023-04-05 09:41:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/SUSE:ALP:Workbench.OBS/llvm16 (Old)
 and      /work/SRC/SUSE:ALP:Workbench.OBS/.llvm16.new.19717 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "llvm16"

Wed Apr  5 09:41:12 2023 rev:1 rq: version:16.0.0

Changes:
--------
New Changes file:

--- /dev/null   2023-02-22 12:27:01.349233259 +0100
+++ /work/SRC/SUSE:ALP:Workbench.OBS/.llvm16.new.19717/llvm16.changes   
2023-04-05 09:41:15.450376526 +0200
@@ -0,0 +1,2799 @@
+-------------------------------------------------------------------
+Sat Mar 18 19:25:39 UTC 2023 - Aaron Puchert <[email protected]>
+
+- Update to version 16.0.0.
+  * For details, see the release notes:
+    - https://releases.llvm.org/16.0.0/docs/ReleaseNotes.html
+    - https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html
+    - 
https://releases.llvm.org/16.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
+    - https://releases.llvm.org/16.0.0/projects/libcxx/docs/ReleaseNotes.html
+    - https://releases.llvm.org/16.0.0/tools/lld/docs/ReleaseNotes.html
+  * New LLVM tools:
+    - llvm-debuginfo-analyzer: Print a logical representation of
+      low-level debug information.
+    - llvm-remarkutil: Remark file utilities.
+  * The test tool split-file is no longer installed.
+  * New Clang tools:
+    - amdgpu-arch and nvptx-arch: Tools used to detect locally
+      available GPUs by the Clang OpenMP driver.
+    - clang-include-cleaner: Standalone tool to determine which
+      headers are used, using existing functionality in clangd.
+    - clang-tblgen: Table Generation for Clang.
+  * Removed Clang tools: clang-{nvlink,offload}-wrapper.
+- Rebase patches:
+  * assume-opensuse.patch
+  * check-no-llvm-exegesis.patch
+  * link-clang-shared.patch
+  * llvm_build_tablegen_component_as_shared_library.patch
+  * llvm-do-not-install-static-libraries.patch
+  * llvm-suse-implicit-gnu.patch
+  * llvm-workaround-superfluous-branches.patch
+  * openmp-drop-rpath.patch
+- Drop patches that have landed upstream:
+  * clang-test-xfail-gnuless-triple.patch
+  * CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch
+  * libcxxabi-fix-armv7-test.patch
+  * llvm-armv7-fix-vector-compare-with-zero-lowering.patch
+  * llvm-link-atomic.patch
+- Remove llvm-better-detect-64bit-atomics-support.patch that should
+  not be required anymore.
+- Add PGP signatures and keyring for source verification.
+
+-------------------------------------------------------------------
+Sat Mar 11 14:09:34 UTC 2023 - Aaron Puchert <[email protected]>
+
+- Add llvm-suse-implicit-gnu.patch to recognize <arch>-suse-linux
+  as implicitly GNU. Without this we would get library calls for
+  fused-multiply-add even if it's available in hardware.
+- Add openmp-drop-rpath.patch: backport revert of adding RUNPATH
+  to openmp executables. (boo#1206837)
+
+-------------------------------------------------------------------
+Thu Mar  9 17:17:40 UTC 2023 - Dirk Müller <[email protected]>
+
+- update constraints to exclude workers with very slow CPU
+
+-------------------------------------------------------------------
+Sat Jan 14 14:06:38 UTC 2023 - Aaron Puchert <[email protected]>
+
+- Update to version 15.0.7.
+  * This release contains bug-fixes for the LLVM 15.0.0 release.
+    This release is API and ABI compatible with 15.0.0.
+- Rebase llvm-do-not-install-static-libraries.patch.
+- Build stage 2 with -fno-plt on x86_64: since building with
+  -Wl,-z,now the PLT stubs are basically dead code, so eliminating
+  the indirection reduces the number of branches and improves code
+  locality for the quite frequent cross-DSO calls.
+- Add llvm-workaround-superfluous-branches.patch: hints LLVM to
+  eliminate branches until gh#llvm/llvm-project#28804 is solved.
+
+-------------------------------------------------------------------
+Sun Dec  4 21:43:38 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Update to version 15.0.6.
+  * This release contains bug-fixes for the LLVM 15.0.0 release.
+    This release is API and ABI compatible with 15.0.0.
+- Rebase llvm-do-not-install-static-libraries.patch.
+
+-------------------------------------------------------------------
+Wed Nov 16 22:06:27 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Update to version 15.0.5.
+  * This release contains bug-fixes for the LLVM 15.0.0 release.
+    This release is API and ABI compatible with 15.0.0.
+- Remove obsolete lldb-swig-4.1.0-build-fix.patch.
+- Rebase llvm-do-not-install-static-libraries.patch.
+
+-------------------------------------------------------------------
+Sun Nov  6 19:13:25 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Update to version 15.0.4.
+  * This release contains bug-fixes for the LLVM 15.0.0 release.
+    This release is API and ABI compatible with 15.0.0.
+- Rebase llvm-do-not-install-static-libraries.patch.
+
+-------------------------------------------------------------------
+Thu Oct 27 20:44:54 UTC 2022 - Aaron Puchert <[email protected]>
+
+- 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.
+
+-------------------------------------------------------------------
+Tue Oct  4 21:41:05 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Update to version 15.0.2.
+  * This release contains bug-fixes for the LLVM 15.0.0 release.
+    This release is API and ABI compatible with 15.0.0.
+- Rebase llvm-do-not-install-static-libraries.patch.
+
+-------------------------------------------------------------------
+Thu Sep 22 12:19:07 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Update to version 15.0.1.
+  * This release contains bug-fixes for the LLVM 15.0.0 release.
+    This release is API and ABI compatible with 15.0.0.
+- Rebase llvm-do-not-install-static-libraries.patch.
+
+-------------------------------------------------------------------
+Wed Sep 21 21:21:19 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Always drop -gnu from triple for consistency. Patch a test that
+  was looking for -linux- in clang-test-xfail-gnuless-triple.patch.
+
+-------------------------------------------------------------------
+Mon Sep 12 07:29:54 UTC 2022 - Andreas Schwab <[email protected]>
+
+- Use correct LLVM_HOST_TRIPLE for riscv64 
+
+-------------------------------------------------------------------
+Tue Sep  6 20:23:14 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Update to version 15.0.0.
+  * For details, see the release notes:
+    - https://releases.llvm.org/15.0.0/docs/ReleaseNotes.html
+    - https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html
+    - 
https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
+    - https://releases.llvm.org/15.0.0/projects/libcxx/docs/ReleaseNotes.html
+    - https://releases.llvm.org/15.0.0/tools/lld/docs/ReleaseNotes.html
+  * New LLVM tools:
+    - llvm-debuginfod: Provides debug info to remote hosts.
+    - llvm-dwarfutil: Can copy and manipulate debug info.
+    - llvm-remark-size-diff: Compute diff between remark files.
+  * New Clang tools:
+    - clang-offload-packager: Bundle multiple objects into single
+      fat binaries including offload code.
+    - clang-pseudo: Approximate heuristic parser for C++.
+- Rebase patches:
+  * check-no-llvm-exegesis.patch
+  * link-clang-tools-extra-shared.patch
+  * lld-default-sha1.patch
+  * llvm-do-not-install-static-libraries.patch
+  * lto-disable-cache.patch
+- Drop patches that have landed upstream:
+  * clang-repl-private-deps.patch
+  * llvm-glibc-2-36.patch
+  * llvm-scev-fix-isImpliedViaMerge.patch
+- Drop llvm-lifetime-for-rust.patch: this is now solved via
+  attributes and LLVM doesn't need a hardcoded list of allocation
+  functions anymore.
+- Add llvm-link-atomic.patch to fix build on ppc.
+- Add libcxx-test-library-path.patch to fix libc++ tests failing
+  without RUNPATH on libc++.so.
+- Add libcxxabi-fix-armv7-test.patch to fix tests on armv7l.
+- Thanks to Andreas Schwab for most of the rebasing!
+
+-------------------------------------------------------------------
+Sat Sep  3 15:15:10 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Make sure we keep -DNDEBUG. At some point %{optflags} must have
+  lost it, perhaps because CMake usually adds it on top. So when
+  overriding CMAKE_{C,CXX}_FLAGS_RELWITHDEBINFO, we make sure to
+  take over the other flags. We drop LLVM_ENABLE_ASSERTIONS=OFF,
+  because that's the default anyway and hasn't helped here.
+- Add llvm-scev-fix-isImpliedViaMerge.patch: fixes a miscompilation
+  caused by mixing up values of the current and previous iteration.
+  (See gh#llvm/llvm-project#56242.)
+
+-------------------------------------------------------------------
+Fri Aug 26 21:18:56 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Add llvm-lifetime-for-rust.patch to have Rust memory management
+  functions considered as lifetime markers. This should aid dead
+  store elimination to dynamically allocated memory in Rust code.
+
+-------------------------------------------------------------------
+Tue Aug 23 21:20:47 UTC 2022 - Aaron Puchert <[email protected]>
+
+- Don't declare python3-clang as noarch: Python packages are
+  installed into %{_libdir}.
+
+-------------------------------------------------------------------
+Sat Aug 13 21:53:05 UTC 2022 - Aaron Puchert <[email protected]>
++++ 2602 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/SUSE:ALP:Workbench.OBS/.llvm16.new.19717/llvm16.changes

New:
----
  _constraints
  assume-opensuse.patch
  baselibs.conf
  check-no-llvm-exegesis.patch
  clang-16.0.0.src.tar.xz
  clang-16.0.0.src.tar.xz.sig
  clang-docs-16.0.0.src.tar.xz
  clang-resourcedirs.patch
  clang-tools-extra-16.0.0.src.tar.xz
  clang-tools-extra-16.0.0.src.tar.xz.sig
  cmake-16.0.0.src.tar.xz
  cmake-16.0.0.src.tar.xz.sig
  compact_unwind_encoding.h
  compiler-rt-16.0.0.src.tar.xz
  compiler-rt-16.0.0.src.tar.xz.sig
  default-to-i586.patch
  libcxx-16.0.0.src.tar.xz
  libcxx-16.0.0.src.tar.xz.sig
  libcxx-test-library-path.patch
  libcxxabi-16.0.0.src.tar.xz
  libcxxabi-16.0.0.src.tar.xz.sig
  link-clang-shared.patch
  link-clang-tools-extra-shared.patch
  lld-16.0.0.src.tar.xz
  lld-16.0.0.src.tar.xz.sig
  lld-default-sha1.patch
  lldb-16.0.0.src.tar.xz
  lldb-16.0.0.src.tar.xz.sig
  lldb-cmake.patch
  llvm-16.0.0.src.tar.xz
  llvm-16.0.0.src.tar.xz.sig
  llvm-do-not-install-static-libraries.patch
  llvm-docs-16.0.0.src.tar.xz
  llvm-fix-find-gcc5-install.patch
  llvm-normally-versioned-libllvm.patch
  llvm-projects-tools-order.patch
  llvm-remove-clang-only-flags.patch
  llvm-suse-implicit-gnu.patch
  llvm-workaround-superfluous-branches.patch
  llvm16-rpmlintrc
  llvm16.changes
  llvm16.keyring
  llvm16.spec
  llvm_build_tablegen_component_as_shared_library.patch
  lto-disable-cache.patch
  openmp-16.0.0.src.tar.xz
  openmp-16.0.0.src.tar.xz.sig
  openmp-drop-rpath.patch
  opt-viewer-Find-style-css-in-usr-share.patch
  polly-16.0.0.src.tar.xz
  polly-16.0.0.src.tar.xz.sig
  tests-use-python3.patch
  third-party-16.0.0.src.tar.xz
  third-party-16.0.0.src.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ llvm16.spec ++++++
++++ 1774 lines (skipped)

++++++ _constraints ++++++
<?xml version="1.0"?>
<constraints>
  <hardware>
    <disk>
      <size unit="G">35</size>
    </disk>
    <memory>
      <size unit="M">4096</size>
    </memory>
  </hardware>
  <hostlabel exclude="true">SLOW_CPU</hostlabel>
  <overwrite>
    <!-- 
      We have disabled debuginfo on 32 bit architecture because they simply can 
no address enough memory to link llvm libraries with it.
      Without debuginfo the disk and memory requirements are much lower.
    -->
    <conditions>
      <arch>armv6l</arch>
      <arch>armv7l</arch>
      <arch>i586</arch>
      <arch>ppc</arch>
      <arch>s390</arch>
    </conditions>
    <hardware>
      <disk>
        <size unit="G">10</size>
      </disk>
      <memory>
        <size unit="M">2048</size>
      </memory>
    </hardware>
  </overwrite>
  <overwrite>
    <conditions>
      <arch>riscv64</arch>
    </conditions>
    <hardware>
      <memory>
        <size unit="M">14000</size>
      </memory>
    </hardware>
  </overwrite>
</constraints>

++++++ assume-opensuse.patch ++++++
Index: clang-12.0.0rc1.src/lib/Driver/Distro.cpp
===================================================================
--- clang-12.0.0rc1.src.orig/lib/Driver/Distro.cpp
+++ clang-12.0.0rc1.src/lib/Driver/Distro.cpp
@@ -93,6 +93,8 @@ static Distro::DistroType DetectLsbRelease...
 }
 
 static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &VFS) {
+    return Distro::OpenSUSE;
+/*
   Distro::DistroType Version = Distro::UnknownDistro;

   // Newer freedesktop.org's compilant systemd-based systems
@@ -200,7 +202,7 @@ static Distro::DistroType DetectDistro(l
   if (VFS.exists("/etc/gentoo-release"))
     return Distro::Gentoo;
 
-  return Distro::UnknownDistro;
+  return Distro::UnknownDistro;*/
 }
 
 static Distro::DistroType GetDistro(llvm::vfs::FileSystem &VFS,
Index: clang-16.0.0rc1.src/unittests/Driver/CMakeLists.txt
===================================================================
--- clang-16.0.0rc1.src.orig/unittests/Driver/CMakeLists.txt
+++ clang-16.0.0rc1.src/unittests/Driver/CMakeLists.txt
@@ -6,7 +6,6 @@ set(LLVM_LINK_COMPONENTS
   )
 
 add_clang_unittest(ClangDriverTests
-  DistroTest.cpp
   DXCModeTest.cpp
   ToolChainTest.cpp
   ModuleCacheTest.cpp

++++++ baselibs.conf ++++++
libLLVM16
libclang-cpp16

++++++ check-no-llvm-exegesis.patch ++++++
--- a/llvm/test/CMakeLists.txt
+++ b/llvm/test/CMakeLists.txt
@@ -81,7 +81,6 @@ set(LLVM_TEST_DEPENDS
           llvm-dwarfdump
           llvm-dwarfutil
           llvm-dwp
-          llvm-exegesis
           llvm-extract
           llvm-gsymutil
           llvm-isel-fuzzer
--- a/llvm/test/tools/llvm-exegesis/PowerPC/lit.local.cfg
+++ b/llvm/test/tools/llvm-exegesis/PowerPC/lit.local.cfg
@@ -1,3 +1 @@
-if not ('PowerPC' in config.root.targets):
-    # We need support for PowerPC.
-    config.unsupported = True
+config.unsupported = True
--- a/llvm/test/tools/llvm-exegesis/X86/lit.local.cfg
+++ b/llvm/test/tools/llvm-exegesis/X86/lit.local.cfg
@@ -1,3 +1 @@
-if not ('X86' in config.root.targets):
-    # We need support for X86.
-    config.unsupported = True
+config.unsupported = True

++++++ clang-resourcedirs.patch ++++++
Index: cfe-6.0.0rc1.src/lib/Driver/Driver.cpp
===================================================================
--- cfe-6.0.0rc1.src.orig/lib/Driver/Driver.cpp
+++ cfe-6.0.0rc1.src/lib/Driver/Driver.cpp
@@ -115,7 +115,7 @@ Driver::Driver(StringRef ClangExecutable
   // Dir is bin/ or lib/, depending on where BinaryPath is.
   std::string Dir = std::string(llvm::sys::path::parent_path(BinaryPath));
 
-  SmallString<128> P(Dir);
+  SmallString<128> P((Dir != "") ? Dir : "/usr/bin/");
   if (CustomResourceDir != "") {
     llvm::sys::path::append(P, CustomResourceDir);
   } else {

++++++ compact_unwind_encoding.h ++++++
//===----------------------------------------------------------------------===//
//
// 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
//
//
// Darwin's alternative to DWARF based unwind encodings.
//
//===----------------------------------------------------------------------===//


#ifndef __COMPACT_UNWIND_ENCODING__
#define __COMPACT_UNWIND_ENCODING__

#include <stdint.h>

//
// Compilers can emit standard DWARF FDEs in the __TEXT,__eh_frame section
// of object files. Or compilers can emit compact unwind information in
// the __LD,__compact_unwind section.
//
// When the linker creates a final linked image, it will create a
// __TEXT,__unwind_info section.  This section is a small and fast way for the
// runtime to access unwind info for any given function.  If the compiler
// emitted compact unwind info for the function, that compact unwind info will
// be encoded in the __TEXT,__unwind_info section. If the compiler emitted
// DWARF unwind info, the __TEXT,__unwind_info section will contain the offset
// of the FDE in the __TEXT,__eh_frame section in the final linked image.
//
// Note: Previously, the linker would transform some DWARF unwind infos into
//       compact unwind info.  But that is fragile and no longer done.


//
// The compact unwind encoding is a 32-bit value which encoded in an
// architecture specific way, which registers to restore from where, and how
// to unwind out of the function.
//
typedef uint32_t compact_unwind_encoding_t;


// architecture independent bits
enum {
    UNWIND_IS_NOT_FUNCTION_START           = 0x80000000,
    UNWIND_HAS_LSDA                        = 0x40000000,
    UNWIND_PERSONALITY_MASK                = 0x30000000,
};




//
// x86
//
// 1-bit: start
// 1-bit: has lsda
// 2-bit: personality index
//
// 4-bits: 0=old, 1=ebp based, 2=stack-imm, 3=stack-ind, 4=DWARF
//  ebp based:
//        15-bits (5*3-bits per reg) register permutation
//        8-bits for stack offset
//  frameless:
//        8-bits stack size
//        3-bits stack adjust
//        3-bits register count
//        10-bits register permutation
//
enum {
    UNWIND_X86_MODE_MASK                         = 0x0F000000,
    UNWIND_X86_MODE_EBP_FRAME                    = 0x01000000,
    UNWIND_X86_MODE_STACK_IMMD                   = 0x02000000,
    UNWIND_X86_MODE_STACK_IND                    = 0x03000000,
    UNWIND_X86_MODE_DWARF                        = 0x04000000,

    UNWIND_X86_EBP_FRAME_REGISTERS               = 0x00007FFF,
    UNWIND_X86_EBP_FRAME_OFFSET                  = 0x00FF0000,

    UNWIND_X86_FRAMELESS_STACK_SIZE              = 0x00FF0000,
    UNWIND_X86_FRAMELESS_STACK_ADJUST            = 0x0000E000,
    UNWIND_X86_FRAMELESS_STACK_REG_COUNT         = 0x00001C00,
    UNWIND_X86_FRAMELESS_STACK_REG_PERMUTATION   = 0x000003FF,

    UNWIND_X86_DWARF_SECTION_OFFSET              = 0x00FFFFFF,
};

enum {
    UNWIND_X86_REG_NONE     = 0,
    UNWIND_X86_REG_EBX      = 1,
    UNWIND_X86_REG_ECX      = 2,
    UNWIND_X86_REG_EDX      = 3,
    UNWIND_X86_REG_EDI      = 4,
    UNWIND_X86_REG_ESI      = 5,
    UNWIND_X86_REG_EBP      = 6,
};

//
// For x86 there are four modes for the compact unwind encoding:
// UNWIND_X86_MODE_EBP_FRAME:
//    EBP based frame where EBP is push on stack immediately after return 
address,
//    then ESP is moved to EBP. Thus, to unwind ESP is restored with the current
//    EPB value, then EBP is restored by popping off the stack, and the return
//    is done by popping the stack once more into the pc.
//    All non-volatile registers that need to be restored must have been saved
//    in a small range in the stack that starts EBP-4 to EBP-1020.  The offset/4
//    is encoded in the UNWIND_X86_EBP_FRAME_OFFSET bits.  The registers saved
//    are encoded in the UNWIND_X86_EBP_FRAME_REGISTERS bits as five 3-bit 
entries.
//    Each entry contains which register to restore.
// UNWIND_X86_MODE_STACK_IMMD:
//    A "frameless" (EBP not used as frame pointer) function with a small 
//    constant stack size.  To return, a constant (encoded in the compact
//    unwind encoding) is added to the ESP. Then the return is done by
//    popping the stack into the pc.
//    All non-volatile registers that need to be restored must have been saved
//    on the stack immediately after the return address.  The stack_size/4 is
//    encoded in the UNWIND_X86_FRAMELESS_STACK_SIZE (max stack size is 1024).
//    The number of registers saved is encoded in 
UNWIND_X86_FRAMELESS_STACK_REG_COUNT.
//    UNWIND_X86_FRAMELESS_STACK_REG_PERMUTATION contains which registers were
//    saved and their order.
// UNWIND_X86_MODE_STACK_IND:
//    A "frameless" (EBP not used as frame pointer) function large constant 
//    stack size.  This case is like the previous, except the stack size is too
//    large to encode in the compact unwind encoding.  Instead it requires that 
//    the function contains "subl $nnnnnnnn,ESP" in its prolog.  The compact 
//    encoding contains the offset to the nnnnnnnn value in the function in
//    UNWIND_X86_FRAMELESS_STACK_SIZE.  
// UNWIND_X86_MODE_DWARF:
//    No compact unwind encoding is available.  Instead the low 24-bits of the
//    compact encoding is the offset of the DWARF FDE in the __eh_frame section.
//    This mode is never used in object files.  It is only generated by the 
//    linker in final linked images which have only DWARF unwind info for a
//    function.
//
// The permutation encoding is a Lehmer code sequence encoded into a
// single variable-base number so we can encode the ordering of up to
// six registers in a 10-bit space.
//
// The following is the algorithm used to create the permutation encoding used
// with frameless stacks.  It is passed the number of registers to be saved and
// an array of the register numbers saved.
//
//uint32_t permute_encode(uint32_t registerCount, const uint32_t registers[6])
//{
//    uint32_t renumregs[6];
//    for (int i=6-registerCount; i < 6; ++i) {
//        int countless = 0;
//        for (int j=6-registerCount; j < i; ++j) {
//            if ( registers[j] < registers[i] )
//                ++countless;
//        }
//        renumregs[i] = registers[i] - countless -1;
//    }
//    uint32_t permutationEncoding = 0;
//    switch ( registerCount ) {
//        case 6:
//            permutationEncoding |= (120*renumregs[0] + 24*renumregs[1]
//                                    + 6*renumregs[2] + 2*renumregs[3]
//                                      + renumregs[4]);
//            break;
//        case 5:
//            permutationEncoding |= (120*renumregs[1] + 24*renumregs[2]
//                                    + 6*renumregs[3] + 2*renumregs[4]
//                                      + renumregs[5]);
//            break;
//        case 4:
//            permutationEncoding |= (60*renumregs[2] + 12*renumregs[3]
//                                   + 3*renumregs[4] + renumregs[5]);
//            break;
//        case 3:
//            permutationEncoding |= (20*renumregs[3] + 4*renumregs[4]
//                                     + renumregs[5]);
//            break;
//        case 2:
//            permutationEncoding |= (5*renumregs[4] + renumregs[5]);
//            break;
//        case 1:
//            permutationEncoding |= (renumregs[5]);
//            break;
//    }
//    return permutationEncoding;
//}
//




//
// x86_64
//
// 1-bit: start
// 1-bit: has lsda
// 2-bit: personality index
//
// 4-bits: 0=old, 1=rbp based, 2=stack-imm, 3=stack-ind, 4=DWARF
//  rbp based:
//        15-bits (5*3-bits per reg) register permutation
//        8-bits for stack offset
//  frameless:
//        8-bits stack size
//        3-bits stack adjust
//        3-bits register count
//        10-bits register permutation
//
enum {
    UNWIND_X86_64_MODE_MASK                         = 0x0F000000,
    UNWIND_X86_64_MODE_RBP_FRAME                    = 0x01000000,
    UNWIND_X86_64_MODE_STACK_IMMD                   = 0x02000000,
    UNWIND_X86_64_MODE_STACK_IND                    = 0x03000000,
    UNWIND_X86_64_MODE_DWARF                        = 0x04000000,

    UNWIND_X86_64_RBP_FRAME_REGISTERS               = 0x00007FFF,
    UNWIND_X86_64_RBP_FRAME_OFFSET                  = 0x00FF0000,

    UNWIND_X86_64_FRAMELESS_STACK_SIZE              = 0x00FF0000,
    UNWIND_X86_64_FRAMELESS_STACK_ADJUST            = 0x0000E000,
    UNWIND_X86_64_FRAMELESS_STACK_REG_COUNT         = 0x00001C00,
    UNWIND_X86_64_FRAMELESS_STACK_REG_PERMUTATION   = 0x000003FF,

    UNWIND_X86_64_DWARF_SECTION_OFFSET              = 0x00FFFFFF,
};

enum {
    UNWIND_X86_64_REG_NONE       = 0,
    UNWIND_X86_64_REG_RBX        = 1,
    UNWIND_X86_64_REG_R12        = 2,
    UNWIND_X86_64_REG_R13        = 3,
    UNWIND_X86_64_REG_R14        = 4,
    UNWIND_X86_64_REG_R15        = 5,
    UNWIND_X86_64_REG_RBP        = 6,
};
//
// For x86_64 there are four modes for the compact unwind encoding:
// UNWIND_X86_64_MODE_RBP_FRAME:
//    RBP based frame where RBP is push on stack immediately after return 
address,
//    then RSP is moved to RBP. Thus, to unwind RSP is restored with the 
current 
//    EPB value, then RBP is restored by popping off the stack, and the return 
//    is done by popping the stack once more into the pc.
//    All non-volatile registers that need to be restored must have been saved
//    in a small range in the stack that starts RBP-8 to RBP-2040.  The 
offset/8 
//    is encoded in the UNWIND_X86_64_RBP_FRAME_OFFSET bits.  The registers 
saved
//    are encoded in the UNWIND_X86_64_RBP_FRAME_REGISTERS bits as five 3-bit 
entries.
//    Each entry contains which register to restore.  
// UNWIND_X86_64_MODE_STACK_IMMD:
//    A "frameless" (RBP not used as frame pointer) function with a small 
//    constant stack size.  To return, a constant (encoded in the compact 
//    unwind encoding) is added to the RSP. Then the return is done by 
//    popping the stack into the pc.
//    All non-volatile registers that need to be restored must have been saved
//    on the stack immediately after the return address.  The stack_size/8 is
//    encoded in the UNWIND_X86_64_FRAMELESS_STACK_SIZE (max stack size is 
2048).
//    The number of registers saved is encoded in 
UNWIND_X86_64_FRAMELESS_STACK_REG_COUNT.
//    UNWIND_X86_64_FRAMELESS_STACK_REG_PERMUTATION contains which registers 
were
//    saved and their order.  
// UNWIND_X86_64_MODE_STACK_IND:
//    A "frameless" (RBP not used as frame pointer) function large constant 
//    stack size.  This case is like the previous, except the stack size is too
//    large to encode in the compact unwind encoding.  Instead it requires that 
//    the function contains "subq $nnnnnnnn,RSP" in its prolog.  The compact 
//    encoding contains the offset to the nnnnnnnn value in the function in
//    UNWIND_X86_64_FRAMELESS_STACK_SIZE.  
// UNWIND_X86_64_MODE_DWARF:
//    No compact unwind encoding is available.  Instead the low 24-bits of the
//    compact encoding is the offset of the DWARF FDE in the __eh_frame section.
//    This mode is never used in object files.  It is only generated by the 
//    linker in final linked images which have only DWARF unwind info for a
//    function.
//


// ARM64
//
// 1-bit: start
// 1-bit: has lsda
// 2-bit: personality index
//
// 4-bits: 4=frame-based, 3=DWARF, 2=frameless
//  frameless:
//        12-bits of stack size
//  frame-based:
//        4-bits D reg pairs saved
//        5-bits X reg pairs saved
//  DWARF:
//        24-bits offset of DWARF FDE in __eh_frame section
//
enum {
    UNWIND_ARM64_MODE_MASK                     = 0x0F000000,
    UNWIND_ARM64_MODE_FRAMELESS                = 0x02000000,
    UNWIND_ARM64_MODE_DWARF                    = 0x03000000,
    UNWIND_ARM64_MODE_FRAME                    = 0x04000000,

    UNWIND_ARM64_FRAME_X19_X20_PAIR            = 0x00000001,
    UNWIND_ARM64_FRAME_X21_X22_PAIR            = 0x00000002,
    UNWIND_ARM64_FRAME_X23_X24_PAIR            = 0x00000004,
    UNWIND_ARM64_FRAME_X25_X26_PAIR            = 0x00000008,
    UNWIND_ARM64_FRAME_X27_X28_PAIR            = 0x00000010,
    UNWIND_ARM64_FRAME_D8_D9_PAIR              = 0x00000100,
    UNWIND_ARM64_FRAME_D10_D11_PAIR            = 0x00000200,
    UNWIND_ARM64_FRAME_D12_D13_PAIR            = 0x00000400,
    UNWIND_ARM64_FRAME_D14_D15_PAIR            = 0x00000800,

    UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK     = 0x00FFF000,
    UNWIND_ARM64_DWARF_SECTION_OFFSET          = 0x00FFFFFF,
};
// For arm64 there are three modes for the compact unwind encoding:
// UNWIND_ARM64_MODE_FRAME:
//    This is a standard arm64 prolog where FP/LR are immediately pushed on the
//    stack, then SP is copied to FP. If there are any non-volatile registers
//    saved, then are copied into the stack frame in pairs in a contiguous
//    range right below the saved FP/LR pair.  Any subset of the five X pairs 
//    and four D pairs can be saved, but the memory layout must be in register
//    number order.  
// UNWIND_ARM64_MODE_FRAMELESS:
//    A "frameless" leaf function, where FP/LR are not saved. The return 
address 
//    remains in LR throughout the function. If any non-volatile registers
//    are saved, they must be pushed onto the stack before any stack space is
//    allocated for local variables.  The stack sized (including any saved
//    non-volatile registers) divided by 16 is encoded in the bits 
//    UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK.
// UNWIND_ARM64_MODE_DWARF:
//    No compact unwind encoding is available.  Instead the low 24-bits of the
//    compact encoding is the offset of the DWARF FDE in the __eh_frame section.
//    This mode is never used in object files.  It is only generated by the 
//    linker in final linked images which have only DWARF unwind info for a
//    function.
//





////////////////////////////////////////////////////////////////////////////////
//
//  Relocatable Object Files: __LD,__compact_unwind
//
////////////////////////////////////////////////////////////////////////////////

//
// A compiler can generated compact unwind information for a function by adding
// a "row" to the __LD,__compact_unwind section.  This section has the 
// S_ATTR_DEBUG bit set, so the section will be ignored by older linkers. 
// It is removed by the new linker, so never ends up in final executables. 
// This section is a table, initially with one row per function (that needs 
// unwind info).  The table columns and some conceptual entries are:
//
//     range-start               pointer to start of function/range
//     range-length              
//     compact-unwind-encoding   32-bit encoding  
//     personality-function      or zero if no personality function
//     lsda                      or zero if no LSDA data
//
// The length and encoding fields are 32-bits.  The other are all pointer 
sized. 
//
// In x86_64 assembly, these entry would look like:
//
//     .section __LD,__compact_unwind,regular,debug
//
//     #compact unwind for _foo
//     .quad    _foo
//     .set     L1,LfooEnd-_foo
//     .long    L1
//     .long    0x01010001
//     .quad    0
//     .quad    0
//
//     #compact unwind for _bar
//     .quad    _bar
//     .set     L2,LbarEnd-_bar
//     .long    L2
//     .long    0x01020011
//     .quad    __gxx_personality
//     .quad    except_tab1
//
//
// Notes: There is no need for any labels in the the __compact_unwind section.  
//        The use of the .set directive is to force the evaluation of the 
//        range-length at assembly time, instead of generating relocations.
//
// To support future compiler optimizations where which non-volatile registers 
// are saved changes within a function (e.g. delay saving non-volatiles until
// necessary), there can by multiple lines in the __compact_unwind table for one
// function, each with a different (non-overlapping) range and each with 
// different compact unwind encodings that correspond to the non-volatiles 
// saved at that range of the function.
//
// If a particular function is so wacky that there is no compact unwind way
// to encode it, then the compiler can emit traditional DWARF unwind info.  
// The runtime will use which ever is available.
//
// Runtime support for compact unwind encodings are only available on 10.6 
// and later.  So, the compiler should not generate it when targeting pre-10.6. 




////////////////////////////////////////////////////////////////////////////////
//
//  Final Linked Images: __TEXT,__unwind_info
//
////////////////////////////////////////////////////////////////////////////////

//
// The __TEXT,__unwind_info section is laid out for an efficient two level 
lookup.
// The header of the section contains a coarse index that maps function address
// to the page (4096 byte block) containing the unwind info for that function.  
//

#define UNWIND_SECTION_VERSION 1
struct unwind_info_section_header
{
    uint32_t    version;            // UNWIND_SECTION_VERSION
    uint32_t    commonEncodingsArraySectionOffset;
    uint32_t    commonEncodingsArrayCount;
    uint32_t    personalityArraySectionOffset;
    uint32_t    personalityArrayCount;
    uint32_t    indexSectionOffset;
    uint32_t    indexCount;
    // compact_unwind_encoding_t[]
    // uint32_t personalities[]
    // unwind_info_section_header_index_entry[]
    // unwind_info_section_header_lsda_index_entry[]
};

struct unwind_info_section_header_index_entry
{
    uint32_t        functionOffset;
    uint32_t        secondLevelPagesSectionOffset;  // section offset to start 
of regular or compress page
    uint32_t        lsdaIndexArraySectionOffset;    // section offset to start 
of lsda_index array for this range
};

struct unwind_info_section_header_lsda_index_entry
{
    uint32_t        functionOffset;
    uint32_t        lsdaOffset;
};

//
// There are two kinds of second level index pages: regular and compressed.
// A compressed page can hold up to 1021 entries, but it cannot be used
// if too many different encoding types are used.  The regular page holds
// 511 entries.
//

struct unwind_info_regular_second_level_entry
{
    uint32_t                    functionOffset;
    compact_unwind_encoding_t    encoding;
};

#define UNWIND_SECOND_LEVEL_REGULAR 2
struct unwind_info_regular_second_level_page_header
{
    uint32_t    kind;    // UNWIND_SECOND_LEVEL_REGULAR
    uint16_t    entryPageOffset;
    uint16_t    entryCount;
    // entry array
};

#define UNWIND_SECOND_LEVEL_COMPRESSED 3
struct unwind_info_compressed_second_level_page_header
{
    uint32_t    kind;    // UNWIND_SECOND_LEVEL_COMPRESSED
    uint16_t    entryPageOffset;
    uint16_t    entryCount;
    uint16_t    encodingsPageOffset;
    uint16_t    encodingsCount;
    // 32-bit entry array
    // encodings array
};

#define UNWIND_INFO_COMPRESSED_ENTRY_FUNC_OFFSET(entry)            (entry & 
0x00FFFFFF)
#define UNWIND_INFO_COMPRESSED_ENTRY_ENCODING_INDEX(entry)        ((entry >> 
24) & 0xFF)



#endif


++++++ default-to-i586.patch ++++++
Index: cfe-6.0.0rc1.src/lib/Driver/ToolChains/Arch/X86.cpp
===================================================================
--- cfe-6.0.0rc1.src.orig/lib/Driver/ToolChains/Arch/X86.cpp
+++ cfe-6.0.0rc1.src/lib/Driver/ToolChains/Arch/X86.cpp
@@ -102,8 +102,8 @@ const char *x86::getX86TargetCPU(const A
   case llvm::Triple::FreeBSD:
     return "i686";
   default:
-    // Fallback to p4.
-    return "pentium4";
+    // Fallback to i586.
+    return "i586";
   }
 }
 

++++++ libcxx-test-library-path.patch ++++++
diff --git a/libcxx/test/configs/llvm-libc++-shared.cfg.in 
b/libcxx/test/configs/llvm-libc++-shared.cfg.in
index 7228c7e8d467..9835a012c1de 100644
--- a/libcxx/test/configs/llvm-libc++-shared.cfg.in
+++ b/libcxx/test/configs/llvm-libc++-shared.cfg.in
@@ -10,10 +10,10 @@ config.substitutions.append(('%{compile_flags}',
     '-nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support'
 ))
 config.substitutions.append(('%{link_flags}',
-    '-nostdlib++ -L %{lib} -Wl,-rpath,%{lib} -lc++ -pthread'
+    '-nostdlib++ -L %{lib} -lc++ -pthread'
 ))
 config.substitutions.append(('%{exec}',
-    '%{executor} --execdir %T -- '
+    '%{executor} --execdir %T --env LD_LIBRARY_PATH=%{lib} -- '
 ))
 
 import os, site

++++++ link-clang-shared.patch ++++++
diff --git a/clang/tools/c-index-test/CMakeLists.txt 
b/clang/tools/c-index-test/CMakeLists.txt
index ceef4b08637..606149ad74f 100644
--- a/clang/tools/c-index-test/CMakeLists.txt
+++ b/clang/tools/c-index-test/CMakeLists.txt
@@ -18,6 +18,9 @@ if (LLVM_BUILD_STATIC)
   target_link_libraries(c-index-test
     PRIVATE
     libclang_static
+  )
+  clang_target_link_libraries(c-index-test
+    PRIVATE
     clangCodeGen
     clangIndex
   )
@@ -25,6 +28,9 @@ else()
   target_link_libraries(c-index-test
     PRIVATE
     libclang
+  )
+  clang_target_link_libraries(c-index-test
+    PRIVATE
     clangAST
     clangBasic
     clangCodeGen
diff --git a/clang/tools/libclang/CMakeLists.txt 
b/clang/tools/libclang/CMakeLists.txt
index 4f23065..343f977 100644
--- a/clang/tools/libclang/CMakeLists.txt
+++ b/clang/tools/libclang/CMakeLists.txt
@@ -57,7 +57,7 @@ set(SOURCES
   ../../include/clang-c/Index.h
   )
 
-set(LIBS
+set(CLANG_LIB_DEPS
   clangAST
   clangBasic
   clangDriver
@@ -72,7 +72,7 @@ set(LIBS
 )
 
 if (CLANG_ENABLE_ARCMT)
-  list(APPEND LIBS clangARCMigrate)
+  list(APPEND CLANG_LIB_DEPS clangARCMigrate)
 endif ()
 
 if (HAVE_LIBDL)
@@ -152,6 +152,11 @@ add_clang_library(libclang ${ENABLE_SHARED} 
${ENABLE_STATIC} INSTALL_WITH_TOOLCH
   TargetParser
   )
 
+clang_target_link_libraries(libclang
+  PRIVATE
+  ${CLANG_LIB_DEPS}
+  )
+
 if(ENABLE_STATIC)
   foreach(name libclang obj.libclang libclang_static)
     if (TARGET ${name})

++++++ link-clang-tools-extra-shared.patch ++++++
diff --git a/clang-tools-extra/clang-include-fixer/plugin/CMakeLists.txt 
b/clang-tools-extra/clang-include-fixer/plugin/CMakeLists.txt
index 6d0328ed831..d531e44743a 100644
--- a/clang-tools-extra/clang-include-fixer/plugin/CMakeLists.txt
+++ b/clang-tools-extra/clang-include-fixer/plugin/CMakeLists.txt
@@ -2,15 +2,18 @@ add_clang_library(clangIncludeFixerPlugin
   IncludeFixerPlugin.cpp
 
   LINK_LIBS
+  clangIncludeFixer
+  ${LLVM_PTHREAD_LIB}
+
+  DEPENDS
+  omp_gen
+  )
+clang_target_link_libraries(clangIncludeFixerPlugin
+  PRIVATE
   clangAST
   clangBasic
   clangFrontend
-  clangIncludeFixer
   clangParse
   clangSema
   clangTooling
-  ${LLVM_PTHREAD_LIB}
-
-  DEPENDS
-  omp_gen
   )
diff --git a/clang-tools-extra/clangd/refactor/tweaks/CMakeLists.txt 
b/clang-tools-extra/clangd/refactor/tweaks/CMakeLists.txt
index 8f708cacfdf..b08e9cee954 100644
--- a/clang-tools-extra/clangd/refactor/tweaks/CMakeLists.txt
+++ b/clang-tools-extra/clangd/refactor/tweaks/CMakeLists.txt
@@ -31,17 +31,20 @@ add_clang_library(clangDaemonTweaks OBJECT
   SwapIfBranches.cpp
 
   LINK_LIBS
-  clangAST
-  clangBasic
   clangDaemon
   clangdSupport
+
+  DEPENDS
+  omp_gen
+  )
+
+clang_target_link_libraries(clangDaemonTweaks INTERFACE
+  clangAST
+  clangBasic
   clangFormat
   clangLex
   clangSema
   clangToolingCore
   clangToolingRefactoring
   clangToolingSyntax
-
-  DEPENDS
-  omp_gen
   )

++++++ lld-default-sha1.patch ++++++
Index: lld-15.0.0rc2.src/ELF/Options.td
===================================================================
--- lld-15.0.0rc2.src.orig/ELF/Options.td
+++ lld-15.0.0rc2.src/ELF/Options.td
@@ -52,7 +52,7 @@ def Bstatic: F<"Bstatic">, HelpText<"Do
 
 def build_id: J<"build-id=">, HelpText<"Generate build ID note">,
   MetaVarName<"[fast,md5,sha1,uuid,0x<hexstring>]">;
-def : F<"build-id">, Alias<build_id>, AliasArgs<["fast"]>, HelpText<"Alias for 
--build-id=fast">;
+def : F<"build-id">, Alias<build_id>, AliasArgs<["sha1"]>, HelpText<"Alias for 
--build-id=sha1">;
 
 defm check_sections: B<"check-sections",
     "Check section addresses for overlaps (default)",

++++++ lldb-cmake.patch ++++++
Index: lldb-10.0.0rc1.src/source/Host/CMakeLists.txt
===================================================================
--- lldb-10.0.0rc1.src.orig/source/Host/CMakeLists.txt
+++ lldb-10.0.0rc1.src/source/Host/CMakeLists.txt
@@ -143,6 +143,8 @@ endif()
 set(EXTRA_LIBS)
 if (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
   list(APPEND EXTRA_LIBS kvm)
+elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
+  list(APPEND EXTRA_LIBS dl pthread)
 endif()
 if (LLDB_ENABLE_LIBXML2)
   list(APPEND EXTRA_LIBS LibXml2::LibXml2)

++++++ llvm-do-not-install-static-libraries.patch ++++++
This has similar effect as simply deleting the static libraries which we don't
want after installation. By not copying them in the first place we reduce the
disk usage during installation.

Index: clang-16.0.0.src/cmake/modules/AddClang.cmake
===================================================================
--- a/clang-16.0.0.src/cmake/modules/AddClang.cmake
+++ b/clang-16.0.0.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)
         get_target_export_arg(${name} Clang export_to_clangtargets UMBRELLA 
clang-libraries)
-        install(TARGETS ${lib}
-          COMPONENT ${lib}
-          ${export_to_clangtargets}
-          LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
-          ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
-          RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+        if (ARG_SHARED OR ARG_MODULE)
+          install(TARGETS ${lib}
+            COMPONENT ${lib}
+            ${export_to_clangtargets}
+            LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+            ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+            RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+          set_property(GLOBAL APPEND PROPERTY CLANG_EXPORTS ${lib})
+        endif()
 
         if (NOT LLVM_ENABLE_IDE)
           add_llvm_install_targets(install-${lib}
@@ -121,7 +124,6 @@ macro(add_clang_library name)
 
         set_property(GLOBAL APPEND PROPERTY CLANG_LIBS ${lib})
       endif()
-      set_property(GLOBAL APPEND PROPERTY CLANG_EXPORTS ${lib})
     else()
       # Add empty "phony" target
       add_custom_target(${lib})
Index: cmake/modules/AddLLVM.cmake
===================================================================
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -730,11 +730,14 @@ macro(add_llvm_library name)
       endif()
 
       get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella})
-      install(TARGETS ${name}
-              ${export_to_llvmexports}
-              LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
-              ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
-              RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name})
+      if(ARG_SHARED OR ARG_MODULE OR NOT LLVM_BUILD_LLVM_DYLIB)
+        install(TARGETS ${name}
+                ${export_to_llvmexports}
+                LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
+                ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
+                RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT 
${name})
+        set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
+      endif()
 
       if (NOT LLVM_ENABLE_IDE)
         add_llvm_install_targets(install-${name}
@@ -742,7 +745,6 @@ macro(add_llvm_library name)
                                  COMPONENT ${name})
       endif()
     endif()
-    set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
   endif()
   if (ARG_MODULE)
     set_target_properties(${name} PROPERTIES FOLDER "Loadable modules")
Index: lld-16.0.0.src/cmake/modules/AddLLD.cmake
===================================================================
--- a/lld-16.0.0.src/cmake/modules/AddLLD.cmake
+++ b/lld-16.0.0.src/cmake/modules/AddLLD.cmake
@@ -17,13 +17,6 @@ macro(add_lld_library name)
 
   if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
     get_target_export_arg(${name} LLD export_to_lldtargets)
-    install(TARGETS ${name}
-      COMPONENT ${name}
-      ${export_to_lldtargets}
-      LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
-      ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
-      RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
-
     if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
       add_llvm_install_targets(install-${name}
         DEPENDS ${name}
Index: polly-16.0.0.src/cmake/polly_macros.cmake
===================================================================
--- a/polly-16.0.0.src/cmake/polly_macros.cmake
+++ b/polly-16.0.0.src/cmake/polly_macros.cmake
@@ -42,12 +42,14 @@ macro(add_polly_library name)
     llvm_config(${name} ${LLVM_LINK_COMPONENTS})
   endif( LLVM_LINK_COMPONENTS )
   if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LLVMPolly")
-    install(TARGETS ${name}
-      EXPORT LLVMExports
-      LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
-      ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
+    if (MODULE OR SHARED_LIBRARY OR NOT LLVM_BUILD_LLVM_DYLIB)
+      install(TARGETS ${name}
+        EXPORT LLVMExports
+        LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+        ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
+      set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
+    endif()
   endif()
-  set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
 endmacro(add_polly_library)
 
 macro(add_polly_loadable_module name)
Index: polly-16.0.0.src/lib/CMakeLists.txt
===================================================================
--- a/polly-16.0.0.src/lib/CMakeLists.txt
+++ b/polly-16.0.0.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
 # well.
-target_link_libraries(Polly PUBLIC
+target_link_libraries(Polly PRIVATE
   ${ISL_TARGET}
 )
 
@@ -143,7 +143,7 @@ else ()
   # hosts. This is not the case for bugpoint. Use LLVM_POLLY_LINK_INTO_TOOLS=ON
   # instead which will automatically resolve the additional dependencies by
   # Polly.
-  target_link_libraries(LLVMPolly PUBLIC ${ISL_TARGET})
+  target_link_libraries(LLVMPolly PRIVATE ${ISL_TARGET})
   if (GPU_CODEGEN)
     target_link_libraries(LLVMPolly PUBLIC PollyPPCG)
   endif ()

++++++ llvm-fix-find-gcc5-install.patch ++++++
Index: cfe-7.0.0rc1.src/lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- cfe-7.0.0rc1.src.orig/lib/Driver/ToolChains/Gnu.cpp
+++ cfe-7.0.0rc1.src/lib/Driver/ToolChains/Gnu.cpp
@@ -1596,7 +1596,8 @@ Generic_GCC::GCCVersion Generic_GCC::GCC
       MinorStr = MinorStr.slice(0, EndNumber);
     }
   }
-  if (MinorStr.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0)
+  if (!MinorStr.str().empty() && 
+      (MinorStr.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0))
     return BadVersion;
   GoodVersion.MinorStr = MinorStr.str();
 

++++++ llvm-normally-versioned-libllvm.patch ++++++
Before llvm4, both major and minor version updates of llvm were regularly
breaking API. Because of that, the libLLVM library was named in following
format: libLLVM-${major}-${minor}.so

  (https://bugs.llvm.org/show_bug.cgi?id=25059)
  (https://reviews.llvm.org/D13841)

The package containing this library was called libLLVM${major}_${minor} which
follows our guidelines.

Since llvm4, llvm decided to follow semantic versioning and only break API if
the major version was increased. In addition they do not intend to ever have
minor version other than 0.
  (http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.html)

The package was renamed to libLLVM${major}, which no longer follows the naming
guidelines, but since the package contained multiple libraries, it was not
detected.

Since bnc#1049703 the libLLVM${major} package contains only the
libLLVM-${major}-${minor}.so library and no others. This triggers the
shlib-policy-name-error check in our packaging system.

Because the reasons for using the libLLVM-${major}-${minor}.so format are no
longer valid, lets revert back to libLLVM.so.${major}.${minor}.${version}
format. That way the package name matches our guidelines.

Index: llvm-8.0.0rc3.src/tools/llvm-config/llvm-config.cpp
===================================================================
--- llvm-8.0.0rc3.src.orig/tools/llvm-config/llvm-config.cpp
+++ llvm-8.0.0rc3.src/tools/llvm-config/llvm-config.cpp
@@ -380,7 +380,6 @@ int main(int argc, char **argv) {
   } else {
     // default to the unix values:
     SharedExt = "so";
-    SharedVersionedExt = LLVM_DYLIB_VERSION ".so";
     StaticExt = "a";
     StaticDir = SharedDir = ActiveLibDir;
     StaticPrefix = SharedPrefix = "lib";
@@ -393,7 +392,7 @@ int main(int argc, char **argv) {
 
   bool DyLibExists = false;
   const std::string DyLibName =
-      (SharedPrefix + "LLVM-" + SharedVersionedExt).str();
+      (SharedPrefix + "LLVM." + SharedExt).str();
 
   // If LLVM_LINK_DYLIB is ON, the single shared library will be returned
   // for "--libs", etc, if they exist. This behaviour can be overridden with
Index: llvm-8.0.0rc3.src/tools/llvm-shlib/CMakeLists.txt
===================================================================
--- llvm-8.0.0rc3.src.orig/tools/llvm-shlib/CMakeLists.txt
+++ llvm-8.0.0rc3.src/tools/llvm-shlib/CMakeLists.txt
@@ -42,7 +42,7 @@ if(LLVM_BUILD_LLVM_DYLIB)
   if (LLVM_LINK_LLVM_DYLIB)
     set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN)
   endif()
-  add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME 
${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
+  add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB 
${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
 
   list(REMOVE_DUPLICATES LIB_NAMES)
   if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU)
Index: llvm-14.0.0rc2.src/test/lit.cfg.py
===================================================================
--- llvm-14.0.0rc2.src.orig/test/lit.cfg.py
+++ llvm-14.0.0rc2.src/test/lit.cfg.py
@@ -244,9 +244,9 @@ if config.link_llvm_dylib:
     config.available_features.add('llvm-dylib')
     config.substitutions.append(
         ('%llvmdylib',
-         '{}/libLLVM-{}{}'.format(config.llvm_shlib_dir,
-                                  config.llvm_dylib_version,
-                                  config.llvm_shlib_ext)))
+         '{}/libLLVM{}.{}'.format(config.llvm_shlib_dir,
+                                  config.llvm_shlib_ext,
+                                  config.llvm_dylib_version)))
 
 if config.have_tf_aot:
     config.available_features.add("have_tf_aot")

++++++ llvm-projects-tools-order.patch ++++++
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 04d4cf2..b698c27 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -1188,12 +1188,12 @@ foreach( binding ${LLVM_BINDINGS_LIST} )
   endif()
 endforeach()
 
-add_subdirectory(projects)
-
 if( LLVM_INCLUDE_TOOLS )
   add_subdirectory(tools)
 endif()
 
+add_subdirectory(projects)
+
 if( LLVM_INCLUDE_RUNTIMES )
   add_subdirectory(runtimes)
 endif()

++++++ llvm-remove-clang-only-flags.patch ++++++
Index: llvm-8.0.0rc3.src/cmake/modules/HandleLLVMOptions.cmake
===================================================================
--- llvm-8.0.0rc3.src.orig/cmake/modules/HandleLLVMOptions.cmake
+++ llvm-8.0.0rc3.src/cmake/modules/HandleLLVMOptions.cmake
@@ -413,8 +413,6 @@ if( MSVC )
 
 # Specific default warnings-as-errors for compilers accepting GCC-compatible 
warning flags:
 if ( LLVM_COMPILER_IS_GCC_COMPATIBLE OR CMAKE_CXX_COMPILER_ID MATCHES "XL" )
-  add_flag_if_supported("-Werror=date-time" WERROR_DATE_TIME)
-  add_flag_if_supported("-Werror=unguarded-availability-new" 
WERROR_UNGUARDED_AVAILABILITY_NEW)
 endif( LLVM_COMPILER_IS_GCC_COMPATIBLE OR CMAKE_CXX_COMPILER_ID MATCHES "XL" )
 
 # Modules enablement for GCC-compatible compilers:
@@ -586,7 +584,6 @@ if (LLVM_ENABLE_WARNINGS AND (LLVM_COMPI
   endif()
 
   add_flag_if_supported("-Wimplicit-fallthrough" IMPLICIT_FALLTHROUGH_FLAG)
-  add_flag_if_supported("-Wcovered-switch-default" COVERED_SWITCH_DEFAULT_FLAG)
   append_if(USE_NO_UNINITIALIZED "-Wno-uninitialized" CMAKE_CXX_FLAGS)
   append_if(USE_NO_MAYBE_UNINITIALIZED "-Wno-maybe-uninitialized" 
CMAKE_CXX_FLAGS)
 

++++++ llvm-suse-implicit-gnu.patch ++++++
diff --git a/llvm/include/llvm/TargetParser/Triple.h 
b/llvm/include/llvm/TargetParser/Triple.h
index 59513fa..4de99ae 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -567,7 +567,8 @@ public:
            Env == Triple::GNUABI64 || Env == Triple::GNUEABI ||
            Env == Triple::GNUEABIHF || Env == Triple::GNUF32 ||
            Env == Triple::GNUF64 || Env == Triple::GNUSF ||
-           Env == Triple::GNUX32;
+           Env == Triple::GNUX32 ||
+           (Env == Triple::UnknownEnvironment && getVendor() == Triple::SUSE);
   }
 
   bool isOSContiki() const {

++++++ llvm-workaround-superfluous-branches.patch ++++++
diff --git a/llvm/include/llvm/Support/Casting.h 
b/llvm/include/llvm/Support/Casting.h
index 4ff5865..19623f6 100644
--- a/llvm/include/llvm/Support/Casting.h
+++ b/llvm/include/llvm/Support/Casting.h
@@ -661,6 +661,9 @@ template <typename To, typename From>
 template <typename To, typename From>
 [[nodiscard]] inline decltype(auto) dyn_cast(From *Val) {
   assert(detail::isPresent(Val) && "dyn_cast on a non-existent value");
+#if defined(__clang__) && defined(NDEBUG)
+  __builtin_assume(Val);
+#endif
   return CastInfo<To, From *>::doCastIfPossible(Val);
 }
 

++++++ llvm16-rpmlintrc ++++++
# This line is mandatory to access the configuration functions
from Config import *

addFilter("devel-file-in-non-devel-package .*/clang/.*/include/.*")
addFilter("devel-file-in-non-devel-package .*/clang/.*/lib/.*")
addFilter("devel-file-in-non-devel-package .*/usr/include/.*")

addFilter("devel-file-in-non-devel-package .*/lib.*/*.a")
addFilter("devel-file-in-non-devel-package .*/lib.*/*.so")

# We're deliberately conflicting with SLE. 
(https://code.opensuse.org/leap/features/issue/55)
addFilter("SUSE_Backports_policy-SLE_conflict")

# Archive seems to be deliberately empty on some architectures.
addFilter("lto-no-text-in-archive 
.*/lib.*/clang/.*/lib/linux/libclang_rt.asan_static-.*.a")

# Different versions of LLVM can produce the same SONAME, so we'll have to use
# non-standard names sometimes. (Leap's rpmlint complains, Tumbleweed's 
doesn't.)
addFilter("shlib-policy-name-error")

++++++ llvm_build_tablegen_component_as_shared_library.patch ++++++
The LLVMTableGen component is a special case that is excluded from libLLVM and
normally is only built as static library and linked into llvm-tblgen.

We need to have it as a shared library to be available for other projects such
as ldc.

This patch makes it even more special and forces it to be build and installed
as separate shared library.

Index: llvm-8.0.0rc3.src/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm-8.0.0rc3.src.orig/cmake/modules/AddLLVM.cmake
+++ llvm-8.0.0rc3.src/cmake/modules/AddLLVM.cmake
@@ -541,7 +541,7 @@ function(llvm_add_library name)
   if(ARG_MODULE AND LLVM_EXPORT_SYMBOLS_FOR_PLUGINS AND ARG_PLUGIN_TOOL AND 
(WIN32 OR CYGWIN))
     # On DLL platforms symbols are imported from the tool by linking against 
it.
     set(llvm_libs ${ARG_PLUGIN_TOOL})
-  elseif (NOT ARG_COMPONENT_LIB)
+  elseif (NOT ARG_COMPONENT_LIB OR (${name} STREQUAL "LLVMTableGen" AND 
LLVM_BUILD_LLVM_DYLIB))
     if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
       set(llvm_libs LLVM)
     else()
Index: llvm-16.0.0rc1.src/cmake/modules/TableGen.cmake
===================================================================
--- llvm-16.0.0rc1.src.orig/cmake/modules/TableGen.cmake
+++ llvm-16.0.0rc1.src/cmake/modules/TableGen.cmake
@@ -143,8 +143,8 @@ macro(add_tablegen target project)
     set(LLVM_ENABLE_OBJLIB ON)
   endif()
 
-  add_llvm_executable(${target} DISABLE_LLVM_LINK_LLVM_DYLIB
-    ${ADD_TABLEGEN_UNPARSED_ARGUMENTS})
+  add_llvm_executable(${target} ${ADD_TABLEGEN_UNPARSED_ARGUMENTS})
+  target_link_libraries(${target} PRIVATE LLVMTableGen)
   set(LLVM_LINK_COMPONENTS ${${target}_OLD_LLVM_LINK_COMPONENTS})
 
   set(${project}_TABLEGEN_DEFAULT "${target}")
Index: llvm-8.0.0rc3.src/lib/TableGen/CMakeLists.txt
===================================================================
--- llvm-8.0.0rc3.src.orig/lib/TableGen/CMakeLists.txt
+++ llvm-8.0.0rc3.src/lib/TableGen/CMakeLists.txt
@@ -1,3 +1,7 @@
+if (LLVM_BUILD_LLVM_DYLIB)
+    set(MAYBE_SHARED SHARED)
+endif()
+
 add_llvm_component_library(LLVMTableGen
   DetailedRecordsBackend.cpp
   Error.cpp
@@ -9,6 +13,8 @@ add_llvm_library(LLVMTableGen
   TGLexer.cpp
   TGParser.cpp
 
+  ${MAYBE_SHARED}
+
   ADDITIONAL_HEADER_DIRS
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/TableGen
 
Index: llvm-14.0.3.src/utils/TableGen/GlobalISel/CMakeLists.txt
===================================================================
--- llvm-14.0.3.src.orig/utils/TableGen/GlobalISel/CMakeLists.txt
+++ llvm-14.0.3.src/utils/TableGen/GlobalISel/CMakeLists.txt
@@ -3,7 +3,7 @@ set(LLVM_LINK_COMPONENTS
   TableGen
   )
 
-add_llvm_library(LLVMTableGenGlobalISel STATIC DISABLE_LLVM_LINK_LLVM_DYLIB
+add_llvm_library(LLVMTableGenGlobalISel STATIC
                  CodeExpander.cpp
                  GIMatchDag.cpp
                  GIMatchDagEdge.cpp

++++++ lto-disable-cache.patch ++++++
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake 
b/llvm/cmake/modules/HandleLLVMOptions.cmake
index 5e57a3b8234..23f9ed5fb56 100644
--- a/llvm/cmake/modules/HandleLLVMOptions.cmake
+++ b/llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -889,23 +889,6 @@ if(uppercase_LLVM_ENABLE_LTO STREQUAL "THIN")
   if(NOT LINKER_IS_LLD_LINK)
     append("-flto=thin" CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
   endif()
-  # If the linker supports it, enable the lto cache. This improves initial 
build
-  # time a little since we re-link a lot of the same objects, and significantly
-  # improves incremental build time.
-  # FIXME: We should move all this logic into the clang driver.
-  if(APPLE)
-    append("-Wl,-cache_path_lto,${LLVM_THINLTO_CACHE_PATH}"
-           CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
-  elseif((UNIX OR MINGW) AND LLVM_USE_LINKER STREQUAL "lld")
-    append("-Wl,--thinlto-cache-dir=${LLVM_THINLTO_CACHE_PATH}"
-           CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
-  elseif(LLVM_USE_LINKER STREQUAL "gold")
-    append("-Wl,--plugin-opt,cache-dir=${LLVM_THINLTO_CACHE_PATH}"
-           CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
-  elseif(LINKER_IS_LLD_LINK)
-    append("/lldltocache:${LLVM_THINLTO_CACHE_PATH}"
-           CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
-  endif()
 elseif(uppercase_LLVM_ENABLE_LTO STREQUAL "FULL")
   append("-flto=full" CMAKE_CXX_FLAGS CMAKE_C_FLAGS)
   if(NOT LINKER_IS_LLD_LINK)

++++++ openmp-drop-rpath.patch ++++++
>From 555b572e3f407ac48b5f30fc06760cc4d0549977 Mon Sep 17 00:00:00 2001
From: Fangrui Song <[email protected]>
Date: Wed, 8 Mar 2023 10:18:40 -0800
Subject: [PATCH] Revert D118493 "Set rpath on openmp executables"

This reverts commit 9b9d08111b618d74574ba03e5cc3d752ecc56f55.
(Accepted by Jon https://reviews.llvm.org/D118493#4178250)

libc++, libc++abi, libunwind, and compiler-rt don't add the extra DT_RUNPATH,
it's strange for OpenMP to diverge.
Some build systems want to handle DT_RUNPATH themselves (e.g.
CMAKE_INSTALL_RPATH). Some distributions (e.g. Fedora) have policies against
DT_RUNPATH and the default DT_RUNPATH for OpenMP is causing trouble.

For users who don't want to specify rpath by themselves,
https://clang.llvm.org/docs/UsersManual.html#configuration-files
can be used to specify the default rpath, e.g.
specify -frtlib-add-rpath or -Wl,-rpath in bin/clang.cfg
---
 clang/include/clang/Driver/Options.td      |  6 ------
 clang/lib/Driver/ToolChains/CommonArgs.cpp | 19 -------------------
 clang/lib/Driver/ToolChains/CommonArgs.h   |  3 ---
 clang/test/OpenMP/Inputs/libomp.a          |  1 -
 openmp/libomptarget/test/lit.cfg           |  2 --
 5 files changed, 31 deletions(-)
 delete mode 100644 clang/test/OpenMP/Inputs/libomp.a

diff --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index b8a12660b32b7..97b9fdbb31a02 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -4260,12 +4260,6 @@ def offload_add_rpath: Flag<["--"], 
"offload-add-rpath">, Flags<[NoArgumentUnuse
   HelpText<"Add -rpath with HIP runtime library directory to the linker 
flags">;
 def no_offload_add_rpath: Flag<["--"], "no-offload-add-rpath">, 
Flags<[NoArgumentUnused]>,
   HelpText<"Do not add -rpath with HIP runtime library directory to the linker 
flags">;
-defm openmp_implicit_rpath: BoolFOption<"openmp-implicit-rpath",
-  LangOpts<"OpenMP">,
-  DefaultTrue,
-  PosFlag<SetTrue, [], "Set rpath on OpenMP executables">,
-  NegFlag<SetFalse>,
-  BothFlags<[NoArgumentUnused]>>;
 def r : Flag<["-"], "r">, Flags<[LinkerInput,NoArgumentUnused]>,
         Group<Link_Group>;
 def save_temps_EQ : Joined<["-", "--"], "save-temps=">, Flags<[CC1Option, 
FlangOption, NoXarchOption]>,
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp 
b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index dc46b625bb676..bc32b8d8cac8d 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -795,22 +795,6 @@ void tools::addLTOOptions(const ToolChain &ToolChain, 
const ArgList &Args,
                          /*IsLTO=*/true, PluginOptPrefix);
 }
 
-void tools::addOpenMPRuntimeSpecificRPath(const ToolChain &TC,
-                                          const ArgList &Args,
-                                          ArgStringList &CmdArgs) {
-
-  if (Args.hasFlag(options::OPT_fopenmp_implicit_rpath,
-                   options::OPT_fno_openmp_implicit_rpath, true)) {
-    // Default to clang lib / lib64 folder, i.e. the same location as device
-    // runtime
-    SmallString<256> DefaultLibPath =
-        llvm::sys::path::parent_path(TC.getDriver().Dir);
-    llvm::sys::path::append(DefaultLibPath, CLANG_INSTALL_LIBDIR_BASENAME);
-    CmdArgs.push_back("-rpath");
-    CmdArgs.push_back(Args.MakeArgString(DefaultLibPath));
-  }
-}
-
 void tools::addOpenMPRuntimeLibraryPath(const ToolChain &TC,
                                         const ArgList &Args,
                                         ArgStringList &CmdArgs) {
@@ -881,9 +865,6 @@ bool tools::addOpenMPRuntime(ArgStringList &CmdArgs, const 
ToolChain &TC,
     CmdArgs.push_back("-lomptarget.devicertl");
 
   addArchSpecificRPath(TC, Args, CmdArgs);
-
-  if (RTKind == Driver::OMPRT_OMP)
-    addOpenMPRuntimeSpecificRPath(TC, Args, CmdArgs);
   addOpenMPRuntimeLibraryPath(TC, Args, CmdArgs);
 
   return true;
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h 
b/clang/lib/Driver/ToolChains/CommonArgs.h
index d44d9214c08bc..e64e9524601dd 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.h
+++ b/clang/lib/Driver/ToolChains/CommonArgs.h
@@ -117,9 +117,6 @@ void AddAssemblerKPIC(const ToolChain &ToolChain,
                       const llvm::opt::ArgList &Args,
                       llvm::opt::ArgStringList &CmdArgs);
 
-void addOpenMPRuntimeSpecificRPath(const ToolChain &TC,
-                                   const llvm::opt::ArgList &Args,
-                                   llvm::opt::ArgStringList &CmdArgs);
 void addArchSpecificRPath(const ToolChain &TC, const llvm::opt::ArgList &Args,
                           llvm::opt::ArgStringList &CmdArgs);
 void addOpenMPRuntimeLibraryPath(const ToolChain &TC,
diff --git a/clang/test/OpenMP/Inputs/libomp.a 
b/clang/test/OpenMP/Inputs/libomp.a
deleted file mode 100644
index 8b277f0dd5dcd..0000000000000
--- a/clang/test/OpenMP/Inputs/libomp.a
+++ /dev/null
@@ -1 +0,0 @@
-!<arch>

++++++ opt-viewer-Find-style-css-in-usr-share.patch ++++++
Index: llvm-7.0.0.src/tools/opt-viewer/opt-viewer.py
===================================================================
--- llvm-7.0.0.src.orig/tools/opt-viewer/opt-viewer.py
+++ llvm-7.0.0.src/tools/opt-viewer/opt-viewer.py
@@ -252,8 +252,7 @@ def generate_report(all_remarks,
         sorted_remarks = sorted(optrecord.itervalues(all_remarks), key=lambda 
r: (r.File, r.Line, r.Column, r.PassWithDiffPrefix, r.yaml_tag, r.Function))
     IndexRenderer(output_dir, should_display_hotness, 
max_hottest_remarks_on_index).render(sorted_remarks)
 
-    shutil.copy(os.path.join(os.path.dirname(os.path.realpath(__file__)),
-            "style.css"), output_dir)
+    shutil.copy("/usr/share/opt-viewer/style.css", output_dir)
 
     _render_file_bound = functools.partial(_render_file, source_dir, 
output_dir, context, no_highlight)
     if should_print_progress:

++++++ tests-use-python3.patch ++++++
Index: llvm-8.0.0rc3.src/test/BugPoint/compile-custom.ll.py
===================================================================
--- llvm-8.0.0rc3.src.orig/test/BugPoint/compile-custom.ll.py
+++ llvm-8.0.0rc3.src/test/BugPoint/compile-custom.ll.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 
 from __future__ import print_function
 
Index: llvm-8.0.0rc3.src/test/Other/opt-bisect-helper.py
===================================================================
--- llvm-8.0.0rc3.src.orig/test/Other/opt-bisect-helper.py
+++ llvm-8.0.0rc3.src/test/Other/opt-bisect-helper.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 
 from __future__ import print_function
 
Index: llvm-8.0.0rc3.src/test/TableGen/JSON-check.py
===================================================================
--- llvm-8.0.0rc3.src.orig/test/TableGen/JSON-check.py
+++ llvm-8.0.0rc3.src/test/TableGen/JSON-check.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 
 import sys
 import subprocess

Reply via email to