Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-llvmlite for openSUSE:Factory checked in at 2024-07-08 19:08:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-llvmlite (Old) and /work/SRC/openSUSE:Factory/.python-llvmlite.new.2080 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-llvmlite" Mon Jul 8 19:08:41 2024 rev:32 rq:1186081 version:0.43.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-llvmlite/python-llvmlite.changes 2024-04-23 18:56:07.594578247 +0200 +++ /work/SRC/openSUSE:Factory/.python-llvmlite.new.2080/python-llvmlite.changes 2024-07-08 19:08:59.912360103 +0200 @@ -1,0 +2,7 @@ +Mon Jul 1 05:09:25 UTC 2024 - Steve Kowalik <steven.kowa...@suse.com> + +- Update to 0.43.0: + * Support for building against LLVM 15. + * A fix for `refpruning` algorithm in specific `fanout_raise` cases. + +------------------------------------------------------------------- Old: ---- llvmlite-0.42.0.tar.gz New: ---- llvmlite-0.43.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-llvmlite.spec ++++++ --- /var/tmp/diff_new_pack.rF75n6/_old 2024-07-08 19:09:00.608385558 +0200 +++ /var/tmp/diff_new_pack.rF75n6/_new 2024-07-08 19:09:00.612385705 +0200 @@ -21,13 +21,13 @@ %{?sle15_python_module_pythons} Name: python-llvmlite # Note: this has to be in sync with Numba releases -Version: 0.42.0 +Version: 0.43.0 Release: 0 Summary: Lightweight wrapper around basic LLVM functionality License: BSD-2-Clause URL: https://llvmlite.pydata.org Source: https://github.com/numba/llvmlite/archive/v%{version}.tar.gz#/llvmlite-%{version}.tar.gz -BuildRequires: %{python_module devel >= 3.8} +BuildRequires: %{python_module devel >= 3.9} BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel} @@ -83,5 +83,5 @@ %doc README.rst %doc examples/ %{python_sitearch}/llvmlite/ -%{python_sitearch}/llvmlite-%{version}*-info +%{python_sitearch}/llvmlite-%{version}.dist-info ++++++ llvmlite-0.42.0.tar.gz -> llvmlite-0.43.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/CHANGE_LOG new/llvmlite-0.43.0/CHANGE_LOG --- old/llvmlite-0.42.0/CHANGE_LOG 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/CHANGE_LOG 2024-06-11 17:24:27.000000000 +0200 @@ -1,3 +1,28 @@ +v0.43.0 (June 13, 2024) +----------------------- + +Highlights of this release are: + +- Support for building against LLVM 15. +- A fix for `refpruning` algorithm in specific `fanout_raise` cases. + +Pull-Requests: + +* PR `#1025 <https://github.com/numba/llvmlite/pull/1025>`_: skip `raise` basic blocks in `verifyFanoutBackward` (`dlee992 <https://github.com/dlee992>`_) +* PR `#1029 <https://github.com/numba/llvmlite/pull/1029>`_: Update CHANGE_LOG for 0.42.0 final. (`stuartarchibald <https://github.com/stuartarchibald>`_) +* PR `#1032 <https://github.com/numba/llvmlite/pull/1032>`_: v0.42 Post release (`sklam <https://github.com/sklam>`_) +* PR `#1035 <https://github.com/numba/llvmlite/pull/1035>`_: Support building against llvm15 (`gmarkall <https://github.com/gmarkall>`_ `yashssh <https://github.com/yashssh>`_) +* PR `#1059 <https://github.com/numba/llvmlite/pull/1059>`_: update CHANGE_LOG and release date for 0.43.0 final (`esc <https://github.com/esc>`_) + +Authors: + +* `dlee992 <https://github.com/dlee992>`_ +* `esc <https://github.com/esc>`_ +* `gmarkall <https://github.com/gmarkall>`_ +* `sklam <https://github.com/sklam>`_ +* `stuartarchibald <https://github.com/stuartarchibald>`_ +* `yashssh <https://github.com/yashssh>`_ + v0.42.0 (January 31, 2024) -------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/azure-pipelines.yml new/llvmlite-0.43.0/azure-pipelines.yml --- old/llvmlite-0.42.0/azure-pipelines.yml 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/azure-pipelines.yml 2024-06-11 17:24:27.000000000 +0200 @@ -18,6 +18,11 @@ PYTHON: '3.12' CONDA_ENV: cienv + llvm15: + PYTHON: '3.12' + CONDA_ENV: cienv + LLVM: '15' + - template: buildscripts/azure/azure-linux-macos.yml parameters: name: Linux @@ -67,6 +72,11 @@ CONDA_ENV: cienv BUILD_DOCS: 'yes' + llvm15: + PYTHON: '3.12' + CONDA_ENV: cienv + LLVM: '15' + - template: buildscripts/azure/azure-windows.yml parameters: name: Windows diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/buildscripts/azure/azure-windows.yml new/llvmlite-0.43.0/buildscripts/azure/azure-windows.yml --- old/llvmlite-0.42.0/buildscripts/azure/azure-windows.yml 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/buildscripts/azure/azure-windows.yml 2024-06-11 17:24:27.000000000 +0200 @@ -22,6 +22,10 @@ PYTHON: '3.12' CONDA_ENV: cienv + llvm15: + PYTHON: '3.12' + CONDA_ENV: cienv + LLVM: '15' steps: @@ -33,11 +37,7 @@ - script: | call C:\Miniconda3\Scripts\activate.bat - call conda list - call conda remove --all -q -y -n %CONDA_ENV% - call conda create -n %CONDA_ENV% -q -y python=%PYTHON% cmake - call activate %CONDA_ENV% - call conda install -y -q -c numba/label/dev llvmdev="14.*" libxml2 + call buildscripts\\incremental\\setup_conda_environment.cmd displayName: 'Before Install' - script: | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/buildscripts/incremental/build.cmd new/llvmlite-0.43.0/buildscripts/incremental/build.cmd --- old/llvmlite-0.42.0/buildscripts/incremental/build.cmd 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/buildscripts/incremental/build.cmd 2024-06-11 17:24:27.000000000 +0200 @@ -1,4 +1,23 @@ call activate %CONDA_ENV% +@rem LLVM derives the location of diaguids.lib from the build-time environment. +@rem Conda-forge packaging works around this by substituting the build-time +@rem location of Visual Studio with $ENV{VSINSTALLDIR}. In order to ensure that +@rem this environment variable is set appropriately, we activate the Visual +@rem Studio Developer Command Prompt prior to running setup.py +@rem +@rem This workaround is required whilst using LLVM from conda-forge; it may also +@rem be necessary to consider a workaround for our own llvmdev packages. +@rem +@rem For more info, see: +@rem +@rem - https://github.com/conda-forge/llvmdev-feedstock/issues/175 +@rem - https://github.com/conda-forge/llvmdev-feedstock/pull/223 +@rem - https://github.com/MicrosoftDocs/visualstudio-docs/issues/7774 +if "%LLVM%"=="15" ( + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" + if %errorlevel% neq 0 exit /b %errorlevel% +) + python setup.py build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/buildscripts/incremental/setup_conda_environment.cmd new/llvmlite-0.43.0/buildscripts/incremental/setup_conda_environment.cmd --- old/llvmlite-0.42.0/buildscripts/incremental/setup_conda_environment.cmd 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/buildscripts/incremental/setup_conda_environment.cmd 2024-06-11 17:24:27.000000000 +0200 @@ -1,24 +1,24 @@ -@rem The cmd /C hack circumvents a regression where conda installs a conda.bat -@rem script in non-root environments. -set CONDA_INSTALL=cmd /C conda install -q -y -set PIP_INSTALL=pip install -q - @echo on -@rem Deactivate any environment -call deactivate @rem Display root environment (for debugging) -conda list +call conda list + @rem Clean up any left-over from a previous build -conda remove --all -q -y -n %CONDA_ENV% +call conda remove --all -q -y -n %CONDA_ENV% @rem Create and populate environment -conda create -n %CONDA_ENV% -q -y python=%PYTHON% cmake +call conda create -n %CONDA_ENV% -q -y python=%PYTHON% cmake if %errorlevel% neq 0 exit /b %errorlevel% call activate %CONDA_ENV% if %errorlevel% neq 0 exit /b %errorlevel% @rem Install llvmdev -%CONDA_INSTALL% -c numba/label/dev llvmdev="14.*" +if "%LLVM%"=="15" ( + set LLVMDEV_CHANNEL="conda-forge" +) else ( + set LLVMDEV_CHANNEL="numba/label/dev" +) + +call conda install -y -q -c %LLVMDEV_CHANNEL% llvmdev="%LLVM%" libxml2 if %errorlevel% neq 0 exit /b %errorlevel% diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/buildscripts/incremental/setup_conda_environment.sh new/llvmlite-0.43.0/buildscripts/incremental/setup_conda_environment.sh --- old/llvmlite-0.42.0/buildscripts/incremental/setup_conda_environment.sh 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/buildscripts/incremental/setup_conda_environment.sh 2024-06-11 17:24:27.000000000 +0200 @@ -27,7 +27,11 @@ set -v # Install llvmdev (separate channel, for now) -$CONDA_INSTALL -c numba/label/dev llvmdev="14.*" +if [ "$LLVM" == "15" ]; then + $CONDA_INSTALL -c conda-forge llvmdev="15" +else + $CONDA_INSTALL -c numba/label/dev llvmdev="14.*" +fi # Install the compiler toolchain, for osx, bootstrapping needed # which happens in build.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/CMakeLists.txt new/llvmlite-0.43.0/ffi/CMakeLists.txt --- old/llvmlite-0.42.0/ffi/CMakeLists.txt 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/CMakeLists.txt 2024-06-11 17:24:27.000000000 +0200 @@ -11,6 +11,10 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -g") endif() +# Work around llvm/llvm-project#83802 - LLVM's Findzstd.cmake uses variables +# that require including `GNUInstallDirs`, but it does not include it itself. +include(GNUInstallDirs) + find_package(LLVM REQUIRED CONFIG) message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/build.py new/llvmlite-0.43.0/ffi/build.py --- old/llvmlite-0.42.0/ffi/build.py 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/build.py 2024-06-11 17:24:27.000000000 +0200 @@ -53,6 +53,13 @@ return out +def show_warning(message): + header = ' * '.join(("WARNING",) * 8) + blk = '=' * 80 + warning = f'{blk}\n{header}\n{blk}' + print(f"{warning}\n{message}\n{warning}") + + def find_windows_generator(): """ Find a suitable cmake "generator" under Windows. @@ -156,16 +163,16 @@ "overridden.\nThis is unsupported behaviour, llvmlite may not " "work as intended.\nRequested LLVM version: {}".format( out.strip())) - warn = ' * '.join(("WARNING",) * 8) - blk = '=' * 80 - warning = '{}\n{}\n{}'.format(blk, warn, blk) - print(warning) - print(msg) - print(warning + '\n') + show_warning(msg) else: (version, _) = out.split('.', 1) version = int(version) - if version != 14: + if version == 15: + msg = ("Building with LLVM 15; note that LLVM 15 support is " + "presently experimental") + show_warning(msg) + elif version != 14: + msg = ("Building llvmlite requires LLVM 14, got " "{!r}. Be sure to set LLVM_CONFIG to the right executable " "path.\nRead the documentation at " diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/core.cpp new/llvmlite-0.43.0/ffi/core.cpp --- old/llvmlite-0.42.0/ffi/core.cpp 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/core.cpp 2024-06-11 17:24:27.000000000 +0200 @@ -21,10 +21,22 @@ LLVMPY_DisposeString(const char *msg) { free(const_cast<char *>(msg)); } API_EXPORT(LLVMContextRef) -LLVMPY_GetGlobalContext() { return LLVMGetGlobalContext(); } +LLVMPY_GetGlobalContext() { + auto context = LLVMGetGlobalContext(); +#if LLVM_VERSION_MAJOR > 14 + LLVMContextSetOpaquePointers(context, false); +#endif + return context; +} API_EXPORT(LLVMContextRef) -LLVMPY_ContextCreate() { return LLVMContextCreate(); } +LLVMPY_ContextCreate() { + LLVMContextRef context = LLVMContextCreate(); +#if LLVM_VERSION_MAJOR > 14 + LLVMContextSetOpaquePointers(context, false); +#endif + return context; +} API_EXPORT(void) LLVMPY_ContextDispose(LLVMContextRef context) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/core.h new/llvmlite-0.43.0/ffi/core.h --- old/llvmlite-0.42.0/ffi/core.h 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/core.h 2024-06-11 17:24:27.000000000 +0200 @@ -2,6 +2,11 @@ #define LLVMPY_CORE_H_ #include "llvm-c/Core.h" + +// Needed for macros that control version-specific behaviour - included here so +// that they are available in all ffi translation units +#include "llvm/Config/llvm-config.h" + #include <cstdlib> #include <cstring> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/custom_passes.cpp new/llvmlite-0.43.0/ffi/custom_passes.cpp --- old/llvmlite-0.42.0/ffi/custom_passes.cpp 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/custom_passes.cpp 2024-06-11 17:24:27.000000000 +0200 @@ -400,7 +400,8 @@ SmallBBSet tail_nodes; tail_nodes.insert(decref->getParent()); if (!verifyFanoutBackward(incref, incref->getParent(), - &tail_nodes)) + &tail_nodes, false)) + continue; // scan the CFG between the incref and decref BBs, if @@ -495,6 +496,29 @@ * â MORE CFG â * ââââââââââââââ * + * a complex pattern about fanout-raise + * https://github.com/numba/llvmlite/issues/1023 + * ââââââââââââââ + * â incref â + * â incref â + * ââââââââââââââ + * / \ + * / \ + * ââââââââââââââ \ + * â decref | \ + * ââââââââââââââ \ + * / \ \ + * / \ \ + * ââââââââââââââ ââââââââââââââ \ + * â decref | â incref | \ + * ââââââââââââââ ââââââââââââââ \ + * / \ \ + * / \ \ + * ââââââââââââââ ââââââââââââââ + * â decref | â raise | + * â decref | ââââââââââââââ + * ââââââââââââââ + * * Parameters: * - F a Function * - prune_raise_exit, if false case 1 is considered, if true case 2 is @@ -648,10 +672,12 @@ for (BasicBlock *bb : *decref_blocks) { raising_blocks.insert(bb); } - if (verifyFanoutBackward(incref, head_node, p_raising_blocks)) + if (verifyFanoutBackward(incref, head_node, p_raising_blocks, + prune_raise_exit)) return true; - } else if (verifyFanoutBackward(incref, head_node, decref_blocks)) { + } else if (verifyFanoutBackward(incref, head_node, decref_blocks, + prune_raise_exit)) { return true; } } @@ -844,7 +870,8 @@ * */ bool verifyFanoutBackward(CallInst *incref, BasicBlock *head_node, - const SmallBBSet *tail_nodes) { + const SmallBBSet *tail_nodes, + bool prune_raise_exit) { // push the tail nodes into a work list SmallVector<BasicBlock *, 10> todo; for (BasicBlock *bb : *tail_nodes) { @@ -864,6 +891,10 @@ while (workstack.size() > 0) { // Get a basic block BasicBlock *cur_node = workstack.pop_back_val(); + // If cur_node is a raising block, then skip it + if (prune_raise_exit && isRaising(cur_node)) { + continue; + } // if the block has been seen before then skip if (visited.count(cur_node)) { // Already visited diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/orcjit.cpp new/llvmlite-0.43.0/ffi/orcjit.cpp --- old/llvmlite-0.42.0/ffi/orcjit.cpp 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/orcjit.cpp 2024-06-11 17:24:27.000000000 +0200 @@ -158,7 +158,12 @@ return nullptr; } +#if LLVM_VERSION_MAJOR > 14 + *addr = sym->getValue(); +#else *addr = sym->getAddress(); +#endif + return new JITDylibTracker(*lljit, *dylib, std::move(dylib->createResourceTracker())); } @@ -334,7 +339,11 @@ LLVMDisposeErrorMessage(message); return nullptr; } +#if LLVM_VERSION_MAJOR > 14 + exports[export_idx].address = lookup->getValue(); +#else exports[export_idx].address = lookup->getAddress(); +#endif } return new JITDylibTracker(*lljit, *dylib, std::move(dylib->getDefaultResourceTracker())); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/passmanagers.cpp new/llvmlite-0.43.0/ffi/passmanagers.cpp --- old/llvmlite-0.42.0/ffi/passmanagers.cpp 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/passmanagers.cpp 2024-06-11 17:24:27.000000000 +0200 @@ -39,6 +39,7 @@ #include <llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h> #include <llvm/Transforms/IPO.h> #include <llvm/Transforms/IPO/AlwaysInliner.h> +#include <llvm/Transforms/Scalar/SimpleLoopUnswitch.h> #include <llvm/Transforms/Utils.h> #include <llvm/Transforms/Utils/UnifyFunctionExitNodes.h> using namespace llvm; @@ -161,8 +162,13 @@ API_EXPORT(void) LLVMPY_AddDotDomPrinterPass(LLVMPassManagerRef PM, bool showBody) { +#if LLVM_VERSION_MAJOR > 14 + unwrap(PM)->add(showBody ? llvm::createDomPrinterWrapperPassPass() + : llvm::createDomOnlyPrinterWrapperPassPass()); +#else unwrap(PM)->add(showBody ? llvm::createDomPrinterPass() : llvm::createDomOnlyPrinterPass()); +#endif } API_EXPORT(void) @@ -172,8 +178,13 @@ API_EXPORT(void) LLVMPY_AddDotPostDomPrinterPass(LLVMPassManagerRef PM, bool showBody) { +#if LLVM_VERSION_MAJOR > 14 + unwrap(PM)->add(showBody ? llvm::createPostDomPrinterWrapperPassPass() + : llvm::createPostDomOnlyPrinterWrapperPassPass()); +#else unwrap(PM)->add(showBody ? llvm::createPostDomPrinterPass() : llvm::createPostDomOnlyPrinterPass()); +#endif } API_EXPORT(void) @@ -244,10 +255,12 @@ unwrap(PM)->add(llvm::createAlwaysInlinerLegacyPass(insertLifetime)); } +#if LLVM_VERSION_MAJOR < 15 API_EXPORT(void) LLVMPY_AddArgPromotionPass(LLVMPassManagerRef PM, unsigned int maxElements) { unwrap(PM)->add(llvm::createArgumentPromotionPass(maxElements)); } +#endif API_EXPORT(void) LLVMPY_AddBreakCriticalEdgesPass(LLVMPassManagerRef PM) { @@ -336,8 +349,12 @@ API_EXPORT(void) LLVMPY_AddLoopUnswitchPass(LLVMPassManagerRef PM, bool optimizeForSize, bool hasBranchDivergence) { +#if LLVM_VERSION_MAJOR > 14 + unwrap(PM)->add(createSimpleLoopUnswitchLegacyPass(optimizeForSize)); +#else unwrap(PM)->add( createLoopUnswitchPass(optimizeForSize, hasBranchDivergence)); +#endif } API_EXPORT(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/ffi/value.cpp new/llvmlite-0.43.0/ffi/value.cpp --- old/llvmlite-0.42.0/ffi/value.cpp 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/ffi/value.cpp 2024-06-11 17:24:27.000000000 +0200 @@ -6,6 +6,9 @@ // the following is needed for WriteGraph() #include "llvm/Analysis/CFGPrinter.h" +#if LLVM_VERSION_MAJOR > 14 +#include "llvm/Support/GraphWriter.h" +#endif /* An iterator around a attribute list, including the stop condition */ struct AttributeListIterator { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/llvmlite/_version.py new/llvmlite-0.43.0/llvmlite/_version.py --- old/llvmlite-0.42.0/llvmlite/_version.py 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/llvmlite/_version.py 2024-06-11 17:24:27.000000000 +0200 @@ -9,8 +9,8 @@ # versioneer-0.12 (https://github.com/warner/python-versioneer) # these strings will be replaced by git during git-archive -git_refnames = " (tag: v0.42.0, release0.42)" -git_full = "b2a26aafd266b8972ad26dfa98dc41642f84913e" +git_refnames = " (tag: v0.43.0, release0.43)" +git_full = "6c786059354260a0ae93f9d0144d4016ab3d63b4" # these strings are filled in when 'setup.py versioneer' creates _version.py tag_prefix = "v" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/llvmlite/binding/passmanagers.py new/llvmlite-0.43.0/llvmlite/binding/passmanagers.py --- old/llvmlite-0.42.0/llvmlite/binding/passmanagers.py 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/llvmlite/binding/passmanagers.py 2024-06-11 17:24:27.000000000 +0200 @@ -3,6 +3,7 @@ from collections import namedtuple from enum import IntFlag from llvmlite.binding import ffi +from llvmlite.binding.initfini import llvm_version_info import os from tempfile import mkstemp from llvmlite.binding.common import _encode_string @@ -10,6 +11,8 @@ _prunestats = namedtuple('PruneStats', ('basicblock diamond fanout fanout_raise')) +llvm_version_major = llvm_version_info[0] + class PruneStats(_prunestats): """ Holds statistics from reference count pruning. @@ -258,6 +261,8 @@ LLVM 14: `llvm::createArgumentPromotionPass` """ # noqa E501 + if llvm_version_major > 14: + raise RuntimeError('ArgumentPromotionPass unavailable in LLVM > 14') ffi.lib.LLVMPY_AddArgPromotionPass(self, max_elements) def add_break_critical_edges_pass(self): @@ -466,9 +471,9 @@ See https://llvm.org/docs/Passes.html#loop-unswitch-unswitch-loops LLVM 14: `llvm::createLoopUnswitchPass` + LLVM 15: `llvm::createSimpleLoopUnswitchLegacyPass` """ # noqa E501 - ffi.lib.LLVMPY_AddLoopUnswitchPass(self, - optimize_for_size, + ffi.lib.LLVMPY_AddLoopUnswitchPass(self, optimize_for_size, has_branch_divergence) def add_lower_atomic_pass(self): @@ -866,7 +871,11 @@ ffi.lib.LLVMPY_AddScalarEvolutionAAPass.argtypes = [ffi.LLVMPassManagerRef] ffi.lib.LLVMPY_AddAggressiveDCEPass.argtypes = [ffi.LLVMPassManagerRef] ffi.lib.LLVMPY_AddAlwaysInlinerPass.argtypes = [ffi.LLVMPassManagerRef, c_bool] -ffi.lib.LLVMPY_AddArgPromotionPass.argtypes = [ffi.LLVMPassManagerRef, c_uint] + +if llvm_version_major < 15: + ffi.lib.LLVMPY_AddArgPromotionPass.argtypes = [ + ffi.LLVMPassManagerRef, c_uint] + ffi.lib.LLVMPY_AddBreakCriticalEdgesPass.argtypes = [ffi.LLVMPassManagerRef] ffi.lib.LLVMPY_AddDeadStoreEliminationPass.argtypes = [ ffi.LLVMPassManagerRef] @@ -883,10 +892,8 @@ ffi.lib.LLVMPY_AddLoopSimplificationPass.argtypes = [ffi.LLVMPassManagerRef] ffi.lib.LLVMPY_AddLoopUnrollPass.argtypes = [ffi.LLVMPassManagerRef] ffi.lib.LLVMPY_AddLoopUnrollAndJamPass.argtypes = [ffi.LLVMPassManagerRef] -ffi.lib.LLVMPY_AddLoopUnswitchPass.argtypes = [ - ffi.LLVMPassManagerRef, - c_bool, - c_bool] +ffi.lib.LLVMPY_AddLoopUnswitchPass.argtypes = [ffi.LLVMPassManagerRef, c_bool, + c_bool] ffi.lib.LLVMPY_AddLowerAtomicPass.argtypes = [ffi.LLVMPassManagerRef] ffi.lib.LLVMPY_AddLowerInvokePass.argtypes = [ffi.LLVMPassManagerRef] ffi.lib.LLVMPY_AddLowerSwitchPass.argtypes = [ffi.LLVMPassManagerRef] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/llvmlite/tests/test_binding.py new/llvmlite-0.43.0/llvmlite/tests/test_binding.py --- old/llvmlite-0.42.0/llvmlite/tests/test_binding.py 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/llvmlite/tests/test_binding.py 2024-06-11 17:24:27.000000000 +0200 @@ -18,6 +18,7 @@ from llvmlite.binding import ffi from llvmlite.tests import TestCase +llvm_version_major = llvm.llvm_version_info[0] # arvm7l needs extra ABI symbols to link successfully if platform.machine() == 'armv7l': @@ -653,7 +654,7 @@ def test_rv32d_ilp32(self): self.check_riscv_target() llmod = self.fpadd_ll_module() - target = self.riscv_target_machine(features="+f,+d") + target = self.riscv_target_machine(features="+f,+d", abiname="ilp32") self.assertEqual(self.break_up_asm(target.emit_assembly(llmod)), riscv_asm_ilp32) @@ -786,9 +787,9 @@ def test_version(self): major, minor, patch = llvm.llvm_version_info # one of these can be valid - valid = [(14, )] - self.assertIn((major,), valid) - self.assertIn(patch, range(10)) + valid = (14, 15) + self.assertIn(major, valid) + self.assertIn(patch, range(8)) def test_check_jit_execution(self): llvm.check_jit_execution() @@ -2176,7 +2177,8 @@ pm.add_aggressive_dead_code_elimination_pass() pm.add_aa_eval_pass() pm.add_always_inliner_pass() - pm.add_arg_promotion_pass(42) + if llvm_version_major < 15: + pm.add_arg_promotion_pass(42) pm.add_break_critical_edges_pass() pm.add_dead_store_elimination_pass() pm.add_reverse_post_order_function_attrs_pass() @@ -2191,7 +2193,8 @@ pm.add_loop_simplification_pass() pm.add_loop_unroll_pass() pm.add_loop_unroll_and_jam_pass() - pm.add_loop_unswitch_pass() + if llvm_version_major < 15: + pm.add_loop_unswitch_pass() pm.add_lower_atomic_pass() pm.add_lower_invoke_pass() pm.add_lower_switch_pass() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/llvmlite-0.42.0/llvmlite/tests/test_refprune.py new/llvmlite-0.43.0/llvmlite/tests/test_refprune.py --- old/llvmlite-0.42.0/llvmlite/tests/test_refprune.py 2024-01-31 16:18:23.000000000 +0100 +++ new/llvmlite-0.43.0/llvmlite/tests/test_refprune.py 2024-06-11 17:24:27.000000000 +0200 @@ -521,6 +521,37 @@ mod, stats = self.check(self.fanout_raise_5) self.assertEqual(stats.fanout_raise, 2) + # test case 6 is from https://github.com/numba/llvmlite/issues/1023 + fanout_raise_6 = r""" +define i32 @main(i8* %ptr, i1 %cond1, i1 %cond2, i1 %cond3, i8** %excinfo) { +bb_A: + call void @NRT_incref(i8* %ptr) + call void @NRT_incref(i8* %ptr) + br i1 %cond1, label %bb_B, label %bb_C +bb_B: + call void @NRT_decref(i8* %ptr) + br i1 %cond2, label %bb_D, label %bb_E +bb_C: + store i8* null, i8** %excinfo, !numba_exception_output !0 + ret i32 1 +bb_D: + call void @NRT_decref(i8* %ptr) + ret i32 0 +bb_E: + call void @NRT_incref(i8* %ptr) + br i1 %cond3, label %bb_F, label %bb_C +bb_F: + call void @NRT_decref(i8* %ptr) + call void @NRT_decref(i8* %ptr) + ret i32 0 +} +!0 = !{i1 1} +""" + + def test_fanout_raise_6(self): + mod, stats = self.check(self.fanout_raise_6) + self.assertEqual(stats.fanout_raise, 7) + if __name__ == '__main__': unittest.main()