From cf8b463e9f02b49abdd91f5e99b3ab8c713b71ca Mon Sep 17 00:00:00 2001 From: motchy Date: Tue, 26 Jan 2021 02:01:52 +0900 Subject: [PATCH 01/37] Fixed a spelling error. (#39372) (cherry picked from commit cc4690a6a746cac3961a59ac8026f57d6d52351c) --- doc/src/manual/arrays.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/manual/arrays.md b/doc/src/manual/arrays.md index 1db77f107aabd..8e49e29a1508a 100644 --- a/doc/src/manual/arrays.md +++ b/doc/src/manual/arrays.md @@ -735,7 +735,7 @@ julia> LinearIndices(A)[2, 2] 5 ``` -It's important to note that there's a very large assymmetry in the performance +It's important to note that there's a very large asymmetry in the performance of these conversions. Converting a linear index to a set of cartesian indices requires dividing and taking the remainder, whereas going the other way is just multiplies and adds. In modern processors, integer division can be 10-50 times From 47c13ff747f66885fd0908238b862740ea369618 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Tue, 23 Mar 2021 11:43:32 -0400 Subject: [PATCH 02/37] fix #40050, handling fields that are pointers due to subtype circularity (#40095) (cherry picked from commit e3dffb9da5e2af961ccebf3d82de138bbda46d4d) --- src/cgutils.cpp | 5 ++++- test/core.jl | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/cgutils.cpp b/src/cgutils.cpp index af2b8c2274ea8..5c293f7bfb40d 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -608,7 +608,10 @@ static Type *_julia_struct_to_llvm(jl_codegen_params_t *ctx, jl_value_t *jt, jl_ size_t fsz = 0, al = 0; bool isptr = !jl_islayout_inline(ty, &fsz, &al); if (jst->layout) { - assert(isptr == jl_field_isptr(jst, i)); + // NOTE: jl_field_isptr can disagree with jl_islayout_inline here if the + // struct decided this field must be a pointer due to a type circularity. + // Example from issue #40050: `struct B <: Ref{Tuple{B}}; end` + isptr = jl_field_isptr(jst, i); assert((isptr ? sizeof(void*) : fsz + jl_is_uniontype(ty)) == jl_field_size(jst, i)); } Type *lty; diff --git a/test/core.jl b/test/core.jl index 1fceddb93084f..910f75feb63c8 100644 --- a/test/core.jl +++ b/test/core.jl @@ -7224,6 +7224,11 @@ end @test_broken isbitstype(Tuple{B33954}) @test_broken isbitstype(B33954) +struct B40050 <: Ref{Tuple{B40050}} +end +@test string((B40050(),)) == "($B40050(),)" +@test_broken isbitstype(Tuple{B40050}) + # Issue #34206/34207 function mre34206(a, n) va = view(a, :) From 63ab04c800a32346516a0ea9e180102d0be964cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Bia=C5=82as?= Date: Thu, 25 Mar 2021 06:52:34 +0100 Subject: [PATCH 03/37] Fix #38491: fix an abspath() edge case on Windows (#38981) * Fix #38491: fix an abspath() edge case on Windows * Update base/path.jl Co-authored-by: Jameson Nash * Update base/path.jl * Update test/path.jl Co-authored-by: Jameson Nash Co-authored-by: Mustafa M Co-authored-by: Jameson Nash (cherry picked from commit f023677ce8b22a266b520b5b660114ccfce655e3) --- base/path.jl | 14 +++++++++++++- test/path.jl | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/base/path.jl b/base/path.jl index 1827346bb2edb..d6566f209dd0c 100644 --- a/base/path.jl +++ b/base/path.jl @@ -387,7 +387,19 @@ normpath(a::AbstractString, b::AbstractString...) = normpath(joinpath(a,b...)) Convert a path to an absolute path by adding the current directory if necessary. Also normalizes the path as in [`normpath`](@ref). """ -abspath(a::String) = normpath(isabspath(a) ? a : joinpath(pwd(),a)) +function abspath(a::String)::String + if !isabspath(a) + cwd = pwd() + a_drive, a_nodrive = splitdrive(a) + if a_drive != "" && lowercase(splitdrive(cwd)[1]) != lowercase(a_drive) + cwd = a_drive * path_separator + a = joinpath(cwd, a_nodrive) + else + a = joinpath(cwd, a) + end + end + return normpath(a) +end """ abspath(path::AbstractString, paths::AbstractString...) -> String diff --git a/test/path.jl b/test/path.jl index bbd9159c59295..ca772e24d41de 100644 --- a/test/path.jl +++ b/test/path.jl @@ -9,6 +9,23 @@ @test isabspath(S(homedir())) @test !isabspath(S("foo")) end + if Sys.iswindows() + @testset "issue #38491" begin + pwd_drive = uppercase(splitdrive(pwd())[1]) + drive = (pwd_drive == "X:") ? "Y:" : "X:" + @test abspath("$(lowercase(drive))a\\b\\c") == "$(lowercase(drive))\\a\\b\\c" + @test abspath("$(uppercase(drive))a\\b\\c") == "$(uppercase(drive))\\a\\b\\c" + @test abspath("$(lowercase(drive))a") == "$(lowercase(drive))\\a" + @test abspath("$(uppercase(drive))a") == "$(uppercase(drive))\\a" + @test abspath(lowercase(drive)) == "$(lowercase(drive))\\" + @test abspath(uppercase(drive)) == "$(uppercase(drive))\\" + + @test lowercase(abspath("$(pwd_drive)a\\b\\c")) == lowercase(joinpath(pwd(), "a\\b\\c")) + @test lowercase(abspath("$(pwd_drive)a")) == lowercase(joinpath(pwd(), "a")) + @test lowercase(abspath(lowercase(pwd_drive))) == lowercase("$(pwd())\\") + @test lowercase(abspath(uppercase(pwd_drive))) == lowercase("$(pwd())\\") + end + end @test basename(S("foo$(sep)bar")) == "bar" @test dirname(S("foo$(sep)bar")) == "foo" From 78f9e7d1cf71a0e8e153fe8d9f0fd24f9f86eefd Mon Sep 17 00:00:00 2001 From: jaakkor2 Date: Thu, 25 Mar 2021 07:52:59 +0200 Subject: [PATCH 04/37] Have different Windows uninstall keys for different Julia versions (#40163) * Have different Windows uninstall keys for different Julia versions Should fix #40004. Have the uninstall key to be "{#AppNameLong}_is1" where AppNameLong contains the Julia version to prevent Windows from overwriting the uninstall information for different Julia versions. Inno Setup documentation about the AppId https://jrsoftware.org/ishelp/topic_setup_appid.htm copied here for convenience ``` [Setup]: AppId Default value: AppName Description: The value of AppId is stored inside uninstall log files (unins???.dat), and is checked by subsequent installations to determine whether it may append to a particular existing uninstall log. Setup will only append to an uninstall log if the AppId of the existing uninstall log is the same as the current installation's AppId. For a practical example, say you have two installations -- one entitled My Program and the other entitled My Program 1.1 Update. To get My Program 1.1 Update to append to My Program's uninstall log, you would have to set AppId to the same value in both installations. AppId also determines the actual name of the Uninstall registry key, to which Inno Setup tacks on "_is1" at the end. (Therefore, if AppId is "MyProgram", the key will be named "MyProgram_is1".) Pre-1.3 versions of Inno Setup based the key name on the value of AppVerName. AppId is a not used for display anywhere, so feel free to make it as cryptic as you desire. The value may include constants. If you use a {code:..} constant to allow your user to customize AppId, you do not need to return the real value until just before the installation starts: if necessary you may return an empty or generic value at earlier times. If not empty, this value will only be used to attempt to restore previous install settings (like the settings stored by [Setup] section directive UsePreviousAppDir). If empty, it isn't used for anything. The length of AppId with all constants evaluated should never exceed 127 characters. Example: AppId=MyProgram ``` * Use DirName as AppId Co-authored-by: Mustafa M * remove unneeded code Co-authored-by: Mustafa M (cherry picked from commit e2f5f26aec6e0a3e239d3382aa7007c3caf85f5e) --- contrib/windows/build-installer.iss | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/contrib/windows/build-installer.iss b/contrib/windows/build-installer.iss index 576f834bc3c91..6648d9e1f528a 100644 --- a/contrib/windows/build-installer.iss +++ b/contrib/windows/build-installer.iss @@ -2,10 +2,6 @@ #define AppName "Julia" #endif -#ifndef AppId -#define AppId "{{054B4BC6-BD30-45C8-A623-8F5BA6EBD55D}" -#endif - #ifndef DirName #define DirName AppName + "-" + AppVersion #endif @@ -14,6 +10,9 @@ #define AppMainExeName "bin\julia.exe" #define CurrentYear GetDateTimeString('yyyy', '', '') +#ifndef AppId +#define AppId DirName +#endif [LangOptions] @@ -61,7 +60,7 @@ AppName={#AppName} AppVersion={#AppVersion} AppPublisher=Julia Language AppPublisherURL=https://julialang.org -AppCopyright=Copyright 2009-{#CurrentYear}; Julia Langage +AppCopyright=Copyright 2009-{#CurrentYear}; Julia Language VersionInfoDescription=Julia Installer PrivilegesRequiredOverridesAllowed=commandline WizardStyle=modern From 0d5821dac82492d63b2d9a27c89599b986906487 Mon Sep 17 00:00:00 2001 From: Elliot Saba Date: Thu, 25 Mar 2021 12:51:27 -0700 Subject: [PATCH 05/37] Fix armv7l trampoline (#40176) We copy-pasted the wrong macro here, should have used `CNAMEADDR()` not `CNAME()`. This causes segfaults on armv7l processors by trying to read from an incorrect address when loading the trampoline target address value. (cherry picked from commit 1897e08ff54eb8c91b806e20bbfecbe7b2d4f9f7) --- cli/trampolines/trampolines_arm.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/trampolines/trampolines_arm.S b/cli/trampolines/trampolines_arm.S index 1bb924168525b..f99b7820360b2 100644 --- a/cli/trampolines/trampolines_arm.S +++ b/cli/trampolines/trampolines_arm.S @@ -5,7 +5,7 @@ .global CNAME(name); \ .cfi_startproc; \ CNAME(name)##:; \ - ldr ip, CONCAT(.L,CNAME(name)); \ + ldr ip, CONCAT(.L,CNAMEADDR(name)); \ CONCAT(.L,CNAME(name)): ;\ add ip, pc, ip; \ ldr pc, [ip]; \ From 5452394c5112de9ec52287537436fcdd7e284265 Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Thu, 25 Mar 2021 12:35:02 +0100 Subject: [PATCH 06/37] README: git checkout 1.6.0 in the instructions. (cherry picked from commit c6d5c406974268c6f402ce036da4c0d70b849fd0) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a54e812ba1691..807407e93479d 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ Julia. However, most users should use the most recent stable version of Julia. You can get this version by changing to the Julia directory and running: - git checkout v1.5.0 + git checkout v1.6.0 Now run `make` to build the `julia` executable. From 04afed6ec7b40008a2da3117c22074520b0a673a Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Tue, 2 Mar 2021 17:30:42 -0500 Subject: [PATCH 07/37] Add new LLVM patches for Aarch64 issues (#39891) Fixes #39818 Fixes #39820 Fixes #39823 (cherry picked from commit 0988fcfb2b79416139343b3ca48e01b5a7be8120) --- deps/Versions.make | 6 +- deps/checksums/clang | 116 ++--- deps/checksums/llvm | 348 ++++++------- deps/llvm.mk | 13 + .../llvm-11-AArch64-FastIsel-bug.patch | 50 ++ .../llvm-11-D97435-AArch64-movaddrreg.patch | 484 ++++++++++++++++++ deps/patches/llvm-11-D97571-AArch64-loh.patch | 101 ++++ deps/patches/llvm-11-aarch64-addrspace.patch | 31 ++ stdlib/libLLVM_jll/Project.toml | 2 +- 9 files changed, 915 insertions(+), 236 deletions(-) create mode 100644 deps/patches/llvm-11-AArch64-FastIsel-bug.patch create mode 100644 deps/patches/llvm-11-D97435-AArch64-movaddrreg.patch create mode 100644 deps/patches/llvm-11-D97571-AArch64-loh.patch create mode 100644 deps/patches/llvm-11-aarch64-addrspace.patch diff --git a/deps/Versions.make b/deps/Versions.make index c30e45a96a355..1bae363ad8299 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -15,7 +15,7 @@ CSL_JLL_NAME := CompilerSupportLibraries # Clang (paired with LLVM, only here as a JLL download) CLANG_JLL_NAME := Clang -CLANG_JLL_VER := 11.0.1+2 +CLANG_JLL_VER := 11.0.1+3 # DSFMT DSFMT_VER := 2.2.4 @@ -46,12 +46,12 @@ LIBUV_JLL_NAME := LibUV # LLVM LLVM_VER := 11.0.1 -LLVM_ASSERT_JLL_VER := 11.0.1+2 +LLVM_ASSERT_JLL_VER := 11.0.1+3 LLVM_JLL_NAME := libLLVM # LLVM_tools (downloads LLVM_jll to get things like `lit` and `opt`) LLVM_TOOLS_JLL_NAME := LLVM -LLVM_TOOLS_JLL_VER := 11.0.1+2 +LLVM_TOOLS_JLL_VER := 11.0.1+3 # MbedTLS MBEDTLS_VER := 2.24.0 diff --git a/deps/checksums/clang b/deps/checksums/clang index 3513a3e212ef7..3e438a189a575 100644 --- a/deps/checksums/clang +++ b/deps/checksums/clang @@ -1,58 +1,58 @@ -Clang.v11.0.1+2.aarch64-apple-darwin.tar.gz/md5/17076a7e5d9976318a1ad7deebb49101 -Clang.v11.0.1+2.aarch64-apple-darwin.tar.gz/sha512/e7904c14ec41d49b6582f0e5ffefd1c6ee8afd02cba58f35083320673da855b7292fe824622de3e90a0540064813cbc7c4a53a4d8b724c84727c6fdf47d53bfc -Clang.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/md5/148e9342612facdf335f8b7f8b651e19 -Clang.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/sha512/d593130812aa5f05a59e6a912b139dfea8b1ad0b2552f32657a767f7b5c41bee0dadcdf15a697717b9e3fdc78140879cb8bd6f6d59fe74ac6d53016691100d4d -Clang.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/md5/bcd5b0dac3b2a072d60cd165053dcd7c -Clang.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/sha512/a1866a5b27fb7dc63c897c50d642301150ebc503bbcc5dc545e5132555473f355dffea5117623cafb87a4afae3dd15f607f2d27df56982fbd96ed7d6f63e477e -Clang.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/md5/48691a2f66b975fc722fc36f99709274 -Clang.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/sha512/c71867875893ce5440ee75186af2515306c9c2c17387af7dd466a782dfab51b20b0bfd63ce13a8de862df1bf1193fecf485108f98d3de1c60b2ea141aa05da23 -Clang.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/md5/d6275cf3a2ca1c18f69a25fd53625942 -Clang.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/sha512/fbb629b082d5c34c8b26e13d258fab10c7f6cfebb023586c0e76a087ecf1da11efca49c958c57b773903485cdec0d8fbe15a657789ca00d1c885764ce27a489e -Clang.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/325db47117dbb6b958cf99e4bf94f6e1 -Clang.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/4fdd788a2795eb7a9aa9d51578e575e65ee5296f7585d5dc10301264da189802680ce7cf0c5741ffff9922849b078432b74e907e724befb21d54408e6b74e7ff -Clang.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/3fe294ae362745993fcca0b8ae27094d -Clang.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/299895793a91f98e69000176a44591c4c02f35665575ce669616be90ecaaa0e0ed40eeb204902fbda0df3d0793be4d1bdc0677d40f1eb1dce6afb5093d679606 -Clang.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/md5/0d9b7ec9c4205d96a125629005568cbe -Clang.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/8645b138c858aaab046efd1b9c0621a1093631dd6dcc1aabbd67863e04ec20550e37c73e6ffef4959230c0ce1f555a4b3cb3ad17f0344747a45fea8619eefed8 -Clang.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/md5/52c291184a47b777f569ac4e72f51d36 -Clang.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/5c953a7798216e369ab1ff2d19d4a94b207f971604e55daec3332e276dacb6f47bbf98195f91e15ef94df030ec894b704e96d13f40180abfef34516aad802520 -Clang.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/76aed4280fb00efbfc31d7567b369686 -Clang.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/900324075af8fcdb18f8584a302d5c65bb7fd79b2dfc78374334849ab0bb2954d5377c4ec72684ab26d792540fab546a12f03ecae5860c3979a3d70f09abe924 -Clang.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/53ea9d348e7a4be7689b628de423342f -Clang.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/c6a455cf500de882270c29b0ea70a15cc47dfffa44419ff0215885b59641b020247a008c0b2b689ba5a5769d239433a8fbdaf89602bda20f51930cb9ee9df5f1 -Clang.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/md5/a8c42dc3edb74f3794e6f625b255f243 -Clang.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/fb5c4653ed1951b54492d45cac78b1a5e165e76a69ef91b5a1ea6bcc022b5e540f9a86eeee410f090862760054ee609d22448c0ac214e938281648644a5f8377 -Clang.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/md5/edec516bf2996d77b769ef131c2264de -Clang.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/4b026da65dd8f9160385114865871c75a8e2cb996e0a262a3c507b6a8a7f087875adc3891ea5ca0cdd1ba8f6041f002d3af54fa8aec84b7fdb5f2d3605089e06 -Clang.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/md5/bc16f50c67419060844bf0e83c969eba -Clang.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/sha512/10cf3828b0b96c668c9b5c35bbce32711720d9e73369ea93f7ce43766e4b53009c9ebd02fa28703d07e2c7137c5770696008d136908136a43ad36ac84b90f59f -Clang.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/md5/c867d7c038358e4c302cf8a926098417 -Clang.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/sha512/60ba3147d2fe24c819eecb3339aedad1a15b9b1ef4d71b41a4f4a346317b0a2dfa81a59d56c3742beed56b60fbb0b547ff6fc853619f396a83f74b9fb091f6bd -Clang.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/md5/3ff50e91834c5df39075dac74d97ca58 -Clang.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/sha512/8a72be62d056d686f0e56de4a0dd530bffcf4214f3724ab51bd89f07b35834bfd6707574e16d650438aff3c6a77536cabc631489df6dae8d245ff6c077915479 -Clang.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/md5/7a28f81a9d7a0021d5a50cbe6a5e715d -Clang.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/sha512/776fb4d9456473b5293da8dbc3e400ed463e8e6e9c66280cb642907bf2df53bcf837a93f671a10809079e7a9ab2795f3757f9a0e056f8404d210f5596cf62640 -Clang.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/md5/ca383ad6ab2d1afad3134efce3c12aa3 -Clang.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/sha512/2bdb6e4be9c496657ec9292d34b786860630106179d9217e816c67309695d81a58c95966ffa42a8f52e99e8e1c369f119746e76ba7458df13e78a668e53fa8b1 -Clang.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/md5/1772ad1d6a5c00b24048b7ca5be43483 -Clang.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/sha512/560c2e0cec8c942223a088239b2158504300c48b323cbbd62a6fc6bed9d73737c7cffcd93792043e6f066f8758c7c43490262e2acf3f4bb49ff8851904b214eb -Clang.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/md5/41baac7852b2caa85de9f0f1e2ecb6bd -Clang.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/cafed0ce352a265edf6259fbf0b7cc11be5d635f8efca9cd6dc2e8fb3220d10adaecd9dd9dff56adbdcecd109a244d4f683efd7d914954c456c27f3a9be357d6 -Clang.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/md5/02b3b9471562527e88b00d1bc9ce3a6c -Clang.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/1d3da48049e19e3f22c773a0de38a2acfe8b76a85d1b25362dc182d87e431a1579d2366e18370e3f5f339b9b78f1846b043bd083fc2fdb23e784c18215efc7e1 -Clang.v11.0.1+2.x86_64-apple-darwin.tar.gz/md5/c6d7453a30fb40971768f1fd7c9881fa -Clang.v11.0.1+2.x86_64-apple-darwin.tar.gz/sha512/e444b4487e8c38aac3edc7472f1837d9b063b5ac7c365bb8501863b796fd6957675b462a4b2f06967d057683af256fd2e9bbf84a9f3acaf994ba1e5b1e59e891 -Clang.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/md5/e5068f5b767b7cdf606d7ac96ccc5826 -Clang.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/sha512/9aeb0d97da690274d162d350377e88f0a454c7920da1fc8585754fb1e9464e0ab483c5d44244e676b458a702fe3749a497c1ce7ce3e19e8722d22e89fd845713 -Clang.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/md5/331887c1fc2cd5149936fbab4ded7522 -Clang.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/sha512/7c33b6ec9e018774616c8cda59a25adbad585e295fd7b639951c282f2fd1fa70c8ed50c47a0d34351476876da9554e5e44d0d86d2db474400f00e950ecc5fb36 -Clang.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/md5/2ee2a56797af5cb83d4dd5ddcbfaeb0b -Clang.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/sha512/309fc565c70938104a3044ebee70d78075595e0e7958a4273cbbd0994b05c9c5e6725d3784198ce2d7b2b8d1f5d32c8d363561b35348a7bec508787f9217ffd3 -Clang.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/md5/30dc9e11dbabd32b2f02168e244ada33 -Clang.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/sha512/1ee84e41c9e3ca7a4238467cc747219cf8fe520f4a1259e50d6443414767a5e8fb02a4034328599c92c0b4e5e69274a06fa4878d9651fe8063b8e4daae941e55 -Clang.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/md5/b3efe5acf49dd3f3246e9c5848e94ae8 -Clang.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/sha512/1c6f415d562b18de1ad045e03e06f6e39963962734587fb12119ca0fc8bf455185c2704ac9282b94d1ab7dcc2503a3ca6f41064a61a2a75af772943a3f4f043c -Clang.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/md5/cdbef031fde6e57a3aeb161bb865b887 -Clang.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/sha512/d8047c3a52be6ebc889bd249f887b01dfc60b9c7f847dcb3d0eaec200402183132751f7eac3c60f5be8c30ae612e44fd4d94b88594d2e3c58bfd91a9cec2a42e -Clang.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/md5/9993aadfb7b707f976badc0b694a1959 -Clang.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/sha512/4531b6fc7e618d5448023183a1a7cd28abbd9f0b5e15dcadcf50b5f6b7b3335e437bfc592df8fe1a7570e7dc90e2f0b0681f068e4eaf0d935adef62214e5f9b8 +Clang.v11.0.1+3.aarch64-apple-darwin.tar.gz/md5/55c50726cd43c1b49a222ec92ea05431 +Clang.v11.0.1+3.aarch64-apple-darwin.tar.gz/sha512/009b29068af7d8a008e34853faa3ce1e20817d3a7975fe4ca5657d1303e546410c903af345356fb94c88f8e95474895e68414a5a04096b2e9bdeed732780637e +Clang.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/md5/e5d8d1d5364dba4c5891c9a127ee358d +Clang.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/sha512/a5efd0a4c0b05ab6ac55081a28cace0cffcd3eefeaa872d239711f667425808f29939c90a327bbf8664d2d065d1b807ed802c161599b7fbda29f554ba9148b48 +Clang.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/md5/67716fd169ad7cb464a576cc10d42ad0 +Clang.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/sha512/5780d34b24fc786406f4f4f814ee6b8bf6366964d7252b61ea7dd3a09283ffb266270d76c2580ca1285a753d68922cd42d2d75b9527d331747325c22224536b7 +Clang.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/md5/77e3d4ff674493fda7958b9ad950e934 +Clang.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/sha512/813a0cac9ae4972fe426451b9fa0d640f25ff5edfe22624a621cbbe737f7977259d062710f44475139c8298265336fcc67fc28dc7eeddd95039bef44dc080ac4 +Clang.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/md5/e53b1db80024cc3a1152d7694291cbbd +Clang.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/sha512/f6b9c15655ca8bb54cd568728fe5ac33df62abbf07029816e892b0483afbb5adc69fde1789b90687137be491fa0351fa5806cf6d869232b3cbb4b42e1f7a5a64 +Clang.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/7ae72cb4b33be0250402f29217e32c53 +Clang.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/1b85e78a78c2bd437c3b21855bb36f8200543d0daa3c2d7be68d5c75ee06a74534e9b8b80ac6048fe05c426e441af3ff019076bf2d045152eb142d7d5769b525 +Clang.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/b83a93c3da36d8eb469f5fd39e8bcb9d +Clang.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/9aab7d5f9be0ce1580ed9d3b3c4da0bff1fff7094794d58620e1fb646ac7733708162f69ad281cd441c4cbbec8985c9906887f4979e5a5ebec8a05c6be06c91e +Clang.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/md5/ea570204363ae3b62965a000e6a3948e +Clang.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/21c9a1418029d5ca0d3d16e943914d8a4932bdbaee1152f74af681349abaebfe4d87a2f51ff06196cea59363b3bec706c629d61f5a37cf0e75cd645fed2ae835 +Clang.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/md5/63130e9a585a747e8f8e31a1b71a27b8 +Clang.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/27f3f72afa62b4f6c8e80d5934cc17119336c65ee070f05d98182e7e83fd02f0ab439a924165c7e6a414409eb2d2044ddf778c0e3e7a6994643b5d0d8b3e2ab9 +Clang.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/0d85a6ace70f1295202ba1c50c5948f4 +Clang.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/574c289c06283e8c2530e64bafb5ff606c27e76a2577acf84112e1ee9b8a3b299abde1e68dfd92700fa472dd6032af02399cca8b436136a5642ce545272398f2 +Clang.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/595279b252dbab5d6411db0d6a514985 +Clang.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/6a1e55e09cfc2325772f11a67f3e7e43872ce07fcceea6852649635778bd472e3e9e6cd0e7e2bf5dbefa1bf0862bae478329b8aedb48b4d7d8cf6ea074e98ce8 +Clang.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/md5/6f973ced20fd2dabf60b12b5ff3b0cb7 +Clang.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/dfc77ef9b13111d5b2d6cdd4d27b0df086ee7a79b535bfc2dcbcc5d9014d0cb0f583c792f812100d64eeadf938645ebe3af72d2df45b396b15b3bc54a0dc3d40 +Clang.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/md5/f96d5a441a56ee914372249fa0cb83e7 +Clang.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/dc2f4afbad26afe4eb43054c70674674a1258f6a1bb17ebd989179336e3de119b976c3429880b3e614668ec5da6c9401346c0fdb8fb45311e818a948c5a2e851 +Clang.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/md5/7f18573c99258f1887aba30228bab25e +Clang.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/sha512/6fa4296f59515ca058d2012ab200e65d4c1f130f40b7a3796d4237f6bf9a72f0a3872bbf83ef1865e7c1cdb75de9c5dd3385a64c55be6741fdb91bd5ef00c6de +Clang.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/md5/dd8333ce489719b53cf4f83300ec5c91 +Clang.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/sha512/356497a88871fa9a725d0206b09462cf4af96cb866724e7c9ca7a7060bea62a6b39426cb2a17d000d17b04052cc78893008c78b1a1c3cf30d6f84f10cda73fd6 +Clang.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/md5/f82aa0d21872e9b50ef238d004ff28d3 +Clang.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/sha512/a2c216727acf6a42c5b914321541a752cdc3cc0b64ae39d1ede1588935ef9d8a4678e5d6f61b2bc1df96a1b4d63812c14e5e6adec7f2babc3175ebfb72421334 +Clang.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/md5/3317c99fba259bddb9f351e79564c831 +Clang.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/sha512/bda2aa0decf76b787986a9a308a3832856cce9545b2c75da49193f23e64ac00dd839d243aa85737f28288c284b9770c1f5408deb4e5440293262d14df2ec759c +Clang.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/md5/826749b99dc7b5f24bac5d0531e84468 +Clang.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/sha512/e15ba270c2ad915be5d0072830b97e4d66daa2e18b3ba4db8f9687633c3ef0dfc1ee312f4fbdd1c921374709f68cb1b4bc9e58b9ffcbdd200c1eb665fa9a595b +Clang.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/md5/2f217eae89b066e190243b1c120cc46a +Clang.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/sha512/526846408cced1707b85f1e40796eb1607d47fb1509435fe7e28368a74e84fa56276aaf9fcab47664615cfe4349c7af3b1ad9995126e888e9002e1a4d20cb1cd +Clang.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/md5/6b6472551ff2e00249fb39ce80df330d +Clang.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/1d2780eb20c2f43659ab2502ff88334a7bf827bb533d37de058e524e9fee9a8ace431761495e93dc9564c80e94aa569066c235bc958cf893c4de5249c4a12676 +Clang.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/md5/74cdafebc133bc54bffabb40547622db +Clang.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/afcad373d30eb465964e17e70b66fd3ea72c1565b1bceb811d82188368a788fdf6a18e388be6d329d9a632f68890d26b878ac0e107ec975b93fc1aec81bab89e +Clang.v11.0.1+3.x86_64-apple-darwin.tar.gz/md5/a4cb1dfe2b86f24b52d730835f8ee31c +Clang.v11.0.1+3.x86_64-apple-darwin.tar.gz/sha512/4526942c33bb4789d3b5975023abdff81d747ecc26b9863c7ea61f87550506d2102a8f83e21085ebbc743ba2be8ddb2b6d4e12a65c9a58e02f6254a335d934f2 +Clang.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/md5/b9bd14c451a9e8efd28c916a85cdb442 +Clang.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/sha512/7cf7ba37c600669f12a74e6760ee5b166b6de4f7e817b9ddf133275a242335ed9a460c226a3f4102cec47bb552d8258b34cf3cedd35b16756f1efb5a3608250e +Clang.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/md5/9e930813e07758c80ca7a1575886afc7 +Clang.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/sha512/e0dce74b7377256fa65f1e6ce461ef5a6424b6ddb157be36393cd8038153afbecf460c966979e267d1de5cb0ed4509a093ed58210eb3cb69391d16b938a4e7a4 +Clang.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/md5/6e345f292464e430d3408826d0ce9573 +Clang.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/sha512/f802e46a46a2946641f07b8b2ef41fee8efbe98e13d23a8ee01047831992b6f115d157520e44879978e27e994da4b63c1a09e6ace63b7c1a1f6351ec04c4885d +Clang.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/md5/ec61190097b601446985c96ca3ffc58e +Clang.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/sha512/00de2b64bda05e27f5129d5702894823517f5da01a42892ee20f69e55b6004b0c1020ecb941330243a565048ed249d827612dc3ce69687401c731ac168566049 +Clang.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/md5/dac3f7585db42a3e8eae4d563abc5d68 +Clang.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/sha512/082ff3234db9b36346553b5c97d5b7dd55f7458aa4f1f1d358e4d4ee2c7805525514c18c35d319a22c56e6c3bfdd4160ff0a2157f24e1123c5879d167f1a2d13 +Clang.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/md5/81aa45c118d96afe17accb9a0e02ea49 +Clang.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/sha512/240979d6e958ad75b6100b5a4fe650c21076dd06b8c9ff13fa397b34bf9816d2d8b8c3ed6040235ef82d11d885cfbda20e5500af3ba3034442744d201264acb0 +Clang.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/md5/b1695d5e231249c07b5cd9d868b6434d +Clang.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/sha512/24a33877f7b97a67cd8acc21ce23d31802bea13f416b5bbf28c262277f4a9e8f6a2cdee642d4d49b7d9b7948bc538f3b1bacb259ab0298e58db910044ebcceaf diff --git a/deps/checksums/llvm b/deps/checksums/llvm index a6cce9274ac5a..69bacfdf5a928 100644 --- a/deps/checksums/llvm +++ b/deps/checksums/llvm @@ -1,176 +1,176 @@ -libLLVM_assert.v11.0.1+2.aarch64-apple-darwin.tar.gz/md5/cf33f847ac2d3c6108ae8ceef33bf8d8 -libLLVM_assert.v11.0.1+2.aarch64-apple-darwin.tar.gz/sha512/a303e03394bfb2770bbf5d2190044875d8d2bd72f342f4796b31b11074904fc0b7a4561994fe47c1a00b9e519a91887de98f09001e453e9c03a8364b9bd19599 -libLLVM_assert.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/md5/2e625a9743e39245b81699370ad444bc -libLLVM_assert.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/sha512/1765c600c0e0db34f90d6d8a9e9c868bc5b5c26375f87e67efd4e0e2b283e79018b49f6d14f092fd4a339530aa6f5f932e25a2151c6dc9cd333e85102b8d05fb -libLLVM_assert.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/md5/117a4147d0ad8a0bd8fe6b1bf1291fde -libLLVM_assert.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/sha512/0e450102c53e2322d0a38e37399cd973a528724a7b651ad10968b23869d0a9e7dbd5686f716740649ac36e0b165bddee6b9c820b85bcce7272b5a7e79ef898ec -libLLVM_assert.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/md5/1cc34396ceab6867b037f1ee8195fd2b -libLLVM_assert.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/sha512/50c85525c8ceb7c90abe4f456f4db911ae9da00aa803dd55468d661015d41afd7417fa19ec11beca90e5a9aebd75c534381fd2f82859c70cc70404c1bd5ede05 -libLLVM_assert.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/md5/e0cb52242f74ede9e759db8fe9f05d15 -libLLVM_assert.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/sha512/01d8f8b7023dc1ebe588e825741df66a5abf398a53d1ff87f3f3ff3e467bff99f13c48e3de8056844c687407cc3550958919d01090f85e9a1ae68ed7f5a34ede -libLLVM_assert.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/31346b6d139261edbf7af16b445d046e -libLLVM_assert.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/1e9e1fd6fae43dea84589613e1c3adda7dfc5a67fc0e78b02687696c2ccc4df1b2feae909c79eaeb08f217ed22e8c00a15d1cb455bedc0047574d4596cc9cd72 -libLLVM_assert.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/2c27762aa16f1ae06f42e1069369b0c5 -libLLVM_assert.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/bf79dd33b928e3298cfde2cb98f72940937d5b4082605391d2590905b2413550e27db9ff1a3a798793b566f297c1312e845e4157d64ec575bad99b4e6a8e0104 -libLLVM_assert.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/md5/424e05233c6260e4b307c6fe2f4e014a -libLLVM_assert.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/b300d6fc007a8acbb6de8b93be1daaf09bd1a051ec8216dc78a2cc3040e4d243fd8a2c10f6d676b049a7c434278638a3c8b740472f72ed4fc3a3b20a003d2414 -libLLVM_assert.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/md5/4b40127aba11d070f2e61103bb71d2ea -libLLVM_assert.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/a75ed7366c5c0f5b49890edd6e8c570dc15f076caff53fb27613b55ac3dea2d3f7b5a2bea61676aea90821edf94575c7f626c30f1d345c37f66be6ef474daad5 -libLLVM_assert.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/d1cd29c95fc1800b079f75f0404884f4 -libLLVM_assert.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/e8784f9f6e6550ac38e4faffcf9ea749953aa9502e1e2ac3502638204863c4b96d2f4b41291f1d90901370702ca144a316e518e7288b8c878e7c334868fed3a8 -libLLVM_assert.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/8c295373a52bb8509ad04f77a5adb8e0 -libLLVM_assert.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/712a43b52d1a691bfc48353553a0db770547c806f89ff1b58bf1c6728c5bb362dedb37d53c16b02c7349063951dfa0b571604daf2fdc34a1c9951695c7e2a327 -libLLVM_assert.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/md5/4f2b664fa1d9d14ab2597f1af29bc0c8 -libLLVM_assert.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/ddc0d99a76a37b08b47a2f5cda02fdd682b84fecb048dcbdef717085a895fc918ffb87175e29eb3734b07c36969c75fd9bb29e6d28143eec59cddd661b08fcda -libLLVM_assert.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/md5/e15a5e9b53a1a70791a0b739dcfe084a -libLLVM_assert.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/06bebf50e864c4a33332c4ef3a9e89c017ed8e8d432e3e0a2a80513ef0389747f254895b9172ca618f7e889587aa194563bf2c591a6205f3fba5dd542c632588 -libLLVM_assert.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/md5/c3de397297a7e0fd616b7ce1454b43c1 -libLLVM_assert.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/sha512/f3008fe3868e8e06dfd664c0486acd913ecf40f099e6abb19e0c4f0dd4830801ff9ce777afc4251028ac08c33d33d49d01a54148660c79b2ffbb75eb1190880a -libLLVM_assert.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/md5/015f837e3677e8bfcc66818a6f3ce45b -libLLVM_assert.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/sha512/12a22e65ef015136925811667f3e42b9baa51794d81c4b10a3a4df909b3f93c7210af1914d31d5488b00883ccdac25951f3cd1f665c6f26ff97e603e4979b982 -libLLVM_assert.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/md5/c14740eac2b400e02813db8934c1d200 -libLLVM_assert.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/sha512/e520acc6a73a959d2c3a2ef45d4e54ad2a4d3f7fdf639719cdb66ea977b2e7a9f54e6f15b3c92669c66756183e9cc2229238587e4f00986184bbac3ab44e91f0 -libLLVM_assert.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/md5/b8c617925b684ccb519880008947c5eb -libLLVM_assert.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/sha512/d0f50ef623ddb0209594e5cb7561cbc5b2754e6d3dbdf3f5627bb25de06b2f95ba27bed76460ec68a3cae893fd8c186183a19eabcc6048463aa3f95d9d0935eb -libLLVM_assert.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/md5/9eee10258f8a8cb28b84f6fc22b90e6a -libLLVM_assert.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/sha512/642b2bc4c8637f4013956a331905632901f8082847f81cb77b0f5307a788b170d45c26e84f3395b19b49a3c90ee5d97c3e57461a02031b7a0338b3cb6a5a7a01 -libLLVM_assert.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/md5/bff3aa0befc5641ffb06c1c0fa08d897 -libLLVM_assert.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/sha512/7fd3373b420dd805d203ece25e9fa09dec0155a848688a433c467dedf8342163f9e2e8fe354b1fab2c63d56b870d36ed92cab6cd122fb94abff48fac48735dc5 -libLLVM_assert.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/md5/096643b2d9e132f97fec0dcb8647e365 -libLLVM_assert.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/c2e4fb56c7dc7b1888e23b3c9cfe50093511ed34f09c189e36ceba7e3fcf430f70c5b6f3579b49d7346e52ec77b9f92dffb4c9a864d712ebd2002181c3eabae9 -libLLVM_assert.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/md5/0e4696b94e13facaade2b01f326643e3 -libLLVM_assert.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/8637c654f4b5de5d786f274f55c84f6dd697d252af332e10983a6a948240d1c57c9783f03e7947dfdb6ec11d0dd889451d95f8c7ead027f8b04708ac1d4a7e73 -libLLVM_assert.v11.0.1+2.x86_64-apple-darwin.tar.gz/md5/c2b418c6dd79bf464138f73bc90a3987 -libLLVM_assert.v11.0.1+2.x86_64-apple-darwin.tar.gz/sha512/6ebff52a9894673d5d7d6f4afdc1bbceb04f8f6f5ca0d48651c0816e1be6b0fae3e480f2c74cace93605720eac681054c99965e0f862e87cc172e7cf2a97b5e9 -libLLVM_assert.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/md5/2793d01bc42a7c1becea921ad0169192 -libLLVM_assert.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/sha512/c1691db3e5c071040022c2e7b841bc189365aa2c0722769054e0eba2e6e8408cab7e9800293ad1cdbdce4ade9987f2d72e557d88a81ba51e5ffe2c0f6d4e3321 -libLLVM_assert.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/md5/927faa9e9c98bd98c52cd85f0260c3a5 -libLLVM_assert.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/sha512/9b2503f70ee5fcd06e3b661fdc5221a12e8001bdb8f5b774ee109c3b501087e906b9247f7f55fe4b797233a989fb4f4578af8c6b9ab3a702fc5ae4998eb64963 -libLLVM_assert.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/md5/f64d51f497030f7ff7071b43ba20e8d4 -libLLVM_assert.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/sha512/503e33e7484b3d2c653a2db4c8df8c09b814ca4a0f59c5b756ec3dcb3bebca0d283ac044b4f832d896e06324d1281a30ca1ff98f62e03eef0bb402487865698c -libLLVM_assert.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/md5/3b267ef027fa5a346c2a209bc61d759d -libLLVM_assert.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/sha512/b5eda9fd02a471a0f5589a7b4782c6b39bb763fa2d06bb5506ebada88679256680eeaf5aa493a0b89550a8849b9cfce96c70329faa5cca2b2b2ec3a8e25e8152 -libLLVM_assert.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/md5/1b84541801d81ca3f75f9ecd61deb64f -libLLVM_assert.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/sha512/ad4e6e84cc49d942494c7ea372f6f038b8c998def46f618451de61145fbdc0cedb20da399100f2941f249bb85fd56ba5bf4c5c7722be8ac093ed3faec8ed7e8f -libLLVM_assert.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/md5/c8c553873c052d79a566c1eefbbb8c89 -libLLVM_assert.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/sha512/de5cf18071d9ce6cd25e615d9788ee4f5391e8855650cd064a36ead9009d054057bf2aa714913dd6006f6c28115b2e78345ac39ee130e154e86d921731e90bf9 -libLLVM_assert.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/md5/92905d2d2599a2b2039ea51d44c14e40 -libLLVM_assert.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/sha512/420f6a23013da5bdc1d6d233e960eb9232818b251aabded8f8086e3d5c123d8a77f6b6ce28eed163cc2d502d318db8139507cb05d9615d024467768e66a0c5f4 -libLLVM.v11.0.1+2.aarch64-apple-darwin.tar.gz/md5/f9f07eef3f7eede43b340f719c401eec -libLLVM.v11.0.1+2.aarch64-apple-darwin.tar.gz/sha512/35023a737a8f14ed209e7f171edf71d2e95ed12d91acefe09a77b44038f6f441337bbe662b24aa1d7da78cf74b7632b6d6233881e79ef41a1c2eb0eb3681d8dc -libLLVM.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/md5/b6ef2ffdd97d70f39202a94833be4342 -libLLVM.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/sha512/f9d2c0feb5abc658215dab41fe1c186549240912bcbd2f79450048716bb72ad0f9da186a1da31cf33e445b2033e8d24d30fe551ee795399f2b646b62fe80e465 -libLLVM.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/md5/1897d208579686470414561695445d55 -libLLVM.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/sha512/8b011a5d49c4ac716720ca7db21c9b0ce12e9f5a906fecaade8726dea4e30165693e61e34552d8705181b564facdb2de918a56db91ea2f85529563fd919270b0 -libLLVM.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/md5/29e687eb45ff43debc08f6544a8c4b20 -libLLVM.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/sha512/e40b8ef879b540bf92bd19198289535f9d46afd87e90e49b6103abc714d5329a25e7dcd908401f58ac374a5f2f40cb194f4a85fbf7492743b1a946dfef16ac22 -libLLVM.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/md5/e406a526a8e6ca1fc6e7f95f3328e9d7 -libLLVM.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/sha512/aaccb3e1fe2fd329cfea6d5cc2589ec50e6d5b84048df4786e7b686ba5cc2f85dffe88198cb667ac422b00c04f57ad7af9fa01415d1aefb1e8594b109f4055d2 -libLLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/d50aeb112f181d95f219950ec9e86e56 -libLLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/e3f3572d4b2120b4e681a08c2bf359a0165c66b32960a7313564567347349e48417e20f1d71ba4123a3dd433782adab2805448dc64fd6dcdb948c8d4de16afa1 -libLLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/582d0ef077ea8619b18d510c6f59d696 -libLLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/2f0485436518e07f20f975b172b26cdbaf5b7ae5730c68ff146d9e48f30ee96784e1146717d8142e2cf7ea1b6d0be9bd7ba796f08352c9cd27e00398dca51b19 -libLLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/md5/b2453b1dc177ef0445c36246344ca35b -libLLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/ecd0dfd78861f70ecb92c5e58659588414e0eaa43caf4dc4b4447ec888096423ff61b276bdce191a0f9e218d86db877413e21c34527fd900f5eb51192cb2bcf8 -libLLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/md5/89ed91916bab44b1b35cf7a32e50e1ff -libLLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/a12efcbfa717ab122af87fb5e8ba7676b81d2b58db73df8a52781208c7dada14091ad2a30e6dd1c8e1db8790734cb81c86c85204cb08cbd1f794f3f10834507b -libLLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/c76c398aeb7e652b9647f74a0e685773 -libLLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/ebf7a898988ec75a093c7687a451dcbc1968934fe6784e4e73c9387bf9e0d1c15f5466a38c2d9c60a58810fcbe45c7a36860e0fab0b765e177bd1f60c589e819 -libLLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/dd3e28395e524f0a8b48543e37dc065e -libLLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/ae34a1b1f063fae29f29ef2be6a2dd929c3df20b2db8fdb5542028e961a9e5c3513dfc56bc129296670f9e2cdb2ccaa1c43ecafc98bdb2acb10de233e95e2567 -libLLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/md5/d82e70803993ec10c84bd064d2438ab7 -libLLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/3f15ef9df5ec63a0a9749adae7aac5245b35501137885c36effc840edd905d791b903e06489e0433caee1546cfc8bc14d219be02fa9d26fef16839600202d8bb -libLLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/md5/b017a4827d2d918446c91009be069d30 -libLLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/bc6c559272132158bd76e433717cc1cbe08e34f0a184c867d8a8da69c64e4eee70a77a3e13643f14087bf2a1a9c688a4e9b8aedecc8289813e35d2494f0469f9 -libLLVM.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/md5/0a0e529f9421234fae117fb448a64ad0 -libLLVM.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/sha512/051d9ee52fdd62d6c5ac9aa7a1c09b0f35867a81e0e6cfd7695dbdcbeecb8e8d1927edbb1cb658b9cc96ab8134225bfa40c6fd3ad609d216c17cee09f6ae72ba -libLLVM.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/md5/a5eb3f0bc3499b559d3d45a48a250749 -libLLVM.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/sha512/05d3069fe9f907cbf0e6c6b99c55ed0c4dd4ab77c67d756a6c06668244e23b5b3957229332fed95c046f2893d0bafd5ad53537ea477984d042b4122f2a2196c1 -libLLVM.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/md5/fc0593d21d666a77f816686f5971d17a -libLLVM.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/sha512/c7283d6329e2549ea1fe278f74f6a0bb976be2e9450dbdcb71522b1fb0ff789bd03983eea16eb0e8837c6b965ab7629badb6e005238065908a6823942817805f -libLLVM.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/md5/d2beae593f940e3f92cc35df3132bf10 -libLLVM.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/sha512/eb04eb0f1ac661806beb2c2324ad12c0af2fcf8511290a72ef03ade32e5d48f651f5eafc58f0509bbf5b3cab181ae3dc9796aae8689ce6c96527dfb8ba47a57c -libLLVM.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/md5/2dd483ed4d99b12d14d8f255d59192d0 -libLLVM.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/sha512/ccc305cd0037669761e66815a8425c5060382e6242068260a5aa2068f1f8561d7e629bc787c56c399e6e296ca7fd178c8a3a38ce11c23db72acad8ac3b0f5394 -libLLVM.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/md5/fe88a08c6daa25446e44fc0ed5d065e4 -libLLVM.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/sha512/fb7c39f3838d6dd8c7ada8b6c5468f93665efa90bacda63a10b63c64cfc4eddb6ba1833930ba2450153633a4937845f7ac8adf961d8e92949c9ead1323e723c6 -libLLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/md5/75955466d931ab5eb840bbeba50bd49b -libLLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/70100f187d81cf2f374a5178c90d1e109ab66e539d28998366ca7cda09f50c2c5461698fb54669134a23435d68f5891deaa537270bd1f3cdfe9b52d3699b7734 -libLLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/md5/392097957ae95e62d3a109a043aa1d69 -libLLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/530d2a8838072552813fe3cc558bb020d74b60350380fd88262ef171689531e6b65154c090b40c65a03fc920b59ec9806e136ed6ee3ef8a46c97a58224f26aaf -libLLVM.v11.0.1+2.x86_64-apple-darwin.tar.gz/md5/1c2aa5d62f6b50dab22a114b62ba9bc6 -libLLVM.v11.0.1+2.x86_64-apple-darwin.tar.gz/sha512/f844c7419d05a41a7a44324d960b787df18cfad676602e2ae7c8614d5f6ded27b1875514a3e81c824d5ef01e676577518dbaba88e280824f79f9384f2777df93 -libLLVM.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/md5/1901bf5fe9ddd564ed377966c7f5bb3c -libLLVM.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/sha512/6e8f4a03918eadd55384418a8bfa093e6121e04a66af141d160e706383af83ba0cdd3bf5d178fd075970e191c281e0e3ff74de1c27e24ae2b1e30b690b48d5e3 -libLLVM.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/md5/a85134894c98324a6e7d468007c31b01 -libLLVM.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/sha512/253fe81962225ef3b9334a622bf9026a712a2bbc8e83062e399255a514cc7ca73c0c3a12ee51cdfd86d617a008cf5078b6bb33850a20c2d3515867612f5ee9e9 -libLLVM.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/md5/905a95270474484a35ada81982233518 -libLLVM.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/sha512/c79b3022a13a2640c8170b50cfe540b7579477262d2d4272e90753df679721ed097f73501452927e290aee38e25035d577edc489c20c750594b9949e2e2cf7f5 -libLLVM.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/md5/0817fdff6dfc29bdfd89177f9d462978 -libLLVM.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/sha512/a5e352ed9a16fe2b1c0116637f190b4da08eca0de8573562a687d5aa74e0301ea7883a726d3a71a920572df65dd3a4c5ebe199aaedcc6a4a54756228d5512f88 -libLLVM.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/md5/d0bc5b1140f4ce03b603e270cac4f232 -libLLVM.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/sha512/87400be01185a31fd90a57bed74c52529e7615a927cf13c8e665afcad4ff19fd4f4dcd9f7f30ad06b912743a1f3a5b2520d32bbe4a336236c36fde059b5da086 -libLLVM.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/md5/bfa4b7684833a4179dfe6940616434ff -libLLVM.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/sha512/5deff641b7ff86baa2239e1989659f458d0161c6980523e5e300630d4dfb202a3921da3a4bbcc918ae3222d6e11d845e51a0ef5034e0f222e2c8127328322728 -libLLVM.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/md5/42c2398270442110878aaba30152d4fa -libLLVM.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/sha512/b3d4e960fb9376212238c953bd705c4997f0cbe37adaf1153b4e9741af400255ba2ef9afda9400b0dd6ff03615709b75d20b3ba55a674483a59852e0f2e50934 +libLLVM_assert.v11.0.1+3.aarch64-apple-darwin.tar.gz/md5/1468270825363bffb3d99d3ca9216d7d +libLLVM_assert.v11.0.1+3.aarch64-apple-darwin.tar.gz/sha512/b94c1273553204440b5f51a3b1fa8c96ad8eae2090e50c3cf10fed44f960e5d0a6c95d967b7e006f842d550cc59b06ed8585962399772e1c2d6d1e6cf7686567 +libLLVM_assert.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/md5/5ea96996524ebc1c69794d7e9ba2b252 +libLLVM_assert.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/sha512/8fd7d5debae5277a5d099c24c195ed1c110f95169bc05ebe42fbb697683f2012a95507b682dd978a25918582dcfd548233d26a3e74a3098e85758dd63b5ba98e +libLLVM_assert.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/md5/49e5dedbdcad40a5966aca51c8913d3b +libLLVM_assert.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/sha512/107a57a298416760c2f806901080963c2b1b3d09f16bef698db6e28b084c36f86796956deff096b4e014a61b29319e1fe1ed95f6a807ab3f1a6350288f85160a +libLLVM_assert.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/md5/7d594f4af283181513816fe50d299861 +libLLVM_assert.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/sha512/f074bca4a57c827c16558783b7efe8d31f12d4a0500a374ed9303a4beba2e848343d9d66da4bd0643c8df10004a6b7a9074a0f99bdba6e2b7eae939a892c7a0f +libLLVM_assert.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/md5/1328f6c829ddc5361e5217aa9d2ba1f0 +libLLVM_assert.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/sha512/238fc6e8eeed72f6fc23b9ea5e9083b8812447799fbb73ba13b2613c6ae0d35cdd8835276e8c9e34450d8c682121cf28601dbc6ce6c160ccabe7c36043441d78 +libLLVM_assert.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/f863e9b6afea27c93b04575194bd83b7 +libLLVM_assert.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/deb3d89d5cdfdeee2a8665d79e2cf77dca693c66bdfd5e10fdba9cb54cefce27a85aed76804ade511a65aff5e1a99f66748b827253ffdaca6c5c55c5947e4d5d +libLLVM_assert.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/0fc8a804ddcb6bebc2ca285697427a60 +libLLVM_assert.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/8cc0f98bc20bcaa47a6c6e28a559018b572b27c2c3507554abd2d5a09ecc36219881ab391625f47a581cf7a569534b693760abbe3b31a31b111c3a751051bc55 +libLLVM_assert.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/md5/eaf1aa0154ba5906a48848b1fd4770da +libLLVM_assert.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/e4531b5eb09be3ac6440e32dcface0360cc75595da00fa1bd178306e9780bd26eb7413a705d4b49d3d7eafd8f403a448bad9aae40bad56fb40bbea8db75e5f06 +libLLVM_assert.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/md5/57307cc154a85a84297f94f71593829d +libLLVM_assert.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/c8c8d35982a7df99ec468b688dee8ccf627512c6f009aea27cbd7fc8d350bcb915136753c18fc1a0ebcf621d9540d1995fae3f7532c31dfe70f1b3ea07275695 +libLLVM_assert.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/701b49c22b69b6e4a91cc1559b3b2622 +libLLVM_assert.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/1173b249d04df31a3d17e120666953654ce3274b749e137a24e137faa28b424a3a60bff9bf3c23f8299cdcb6b77fcf883b60654abced4b854e6080788a4093ea +libLLVM_assert.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/e781f504156bdf748cbebbae86173fcf +libLLVM_assert.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/572d0eadc5f3c495aef529d03fe3a3f890cac655fb7b8fc7dba92943023355a4494f72a2de5bb302756d5bbc36658b32babe4efdeca2f85f0b9f244f3c5e650e +libLLVM_assert.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/md5/b460698fc6f652366a0b869bfb2b1646 +libLLVM_assert.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/00f3caefa2885be6550f20a86048057b6beb17044ea822ffa9fb9df65c848eb7ffafbac4f6546ca16a1dfc344cfb851b7d42cc3a7f3f8a2b19a5044748a6f64e +libLLVM_assert.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/md5/b4f0efa367651e7e37976cb7052eda02 +libLLVM_assert.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/5af81df4c76dad4ab5387e3006f350f9387dbda5b131adb2b75669dde284a281af34f041dd00a0e8b6e0e8e92e7e4138fec5f83a6e2fc82fca8c3c6a637900a1 +libLLVM_assert.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/md5/ee47fdaec1107506ace19f70d090622f +libLLVM_assert.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/sha512/32c7702bc599f06be6c5403574b1cece6d07b2c9787bd3b08e73a3746a187956609f2b7cdf0c673fbdd3105030138cf0c622a08e59f4180cea5109cc486fc570 +libLLVM_assert.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/md5/d6a47e2c969aed82c377f42248b54b75 +libLLVM_assert.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/sha512/c95f7e895832deed7d99155ada1df46e1dd1e43dd24fb8aaf94e4109f301b8163b8c8f83f3a2fd65d7b445e4d194f456e2cdd93ba36ed70ac4131c805a0c89e0 +libLLVM_assert.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/md5/158ce4bcdb7cdf26faad269a6133e2eb +libLLVM_assert.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/sha512/f19f556f25e602da754e666476686411d484297cbe1d51f8d21e167feb241c44e1b94d502b4984649340c515dcf38a53be9d949805c29ca0e959101900f68fc7 +libLLVM_assert.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/md5/fe72914bc292072e1f474ffb41e01a99 +libLLVM_assert.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/sha512/87a300e6928b69a4ddc59a375a9c172cbef82dd14ee101ac97ea1a652e1e4cb69d8c1ba61f4e4c2889884c58a571a257cd3390a504ceb88b0cb4a514143541b8 +libLLVM_assert.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/md5/309fdd429e740941e0deab08f1043c5b +libLLVM_assert.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/sha512/b01bcb83a6ef208692bd26899e7e75177f6bd619afeae0dc46217ece0f79bd81d2f07fedf70084478fe1f8abcc2d031a0ea06b55ac55a34f3facabb38a2a993f +libLLVM_assert.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/md5/a9ee212809e891f147916cb6568f8b0e +libLLVM_assert.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/sha512/927a010c326dac7faa4ce822b7ed01048b825a8050ae03d11963a864bf8f70b810e58985d37ec04cb69e7ca5c8a4956438f8c5f50dc8af90dc00bb10c0b6dd28 +libLLVM_assert.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/md5/6a2f2cd6cad70e27029f4a7c78196589 +libLLVM_assert.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/77bee805988a0df69cda34c5196f29234d5e4c7cf55da2154fd5a4f431123cfa3ef870a7ee10dd773eeb446647f500edca844cc89d1fc39d04caea6be58ce6a1 +libLLVM_assert.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/md5/f780073977fddf46200103b476ba4176 +libLLVM_assert.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/40107288f36fe50e8f60fcd7b18a9058f36a6794cf8e8f06328437fb77f0890e1b890aba7f931329d98219faaf922dc14474f66340e6a70b8309f171e2bbc901 +libLLVM_assert.v11.0.1+3.x86_64-apple-darwin.tar.gz/md5/db4d528b06836c46d46755fc93cceaea +libLLVM_assert.v11.0.1+3.x86_64-apple-darwin.tar.gz/sha512/cb62a0db35f0f1cc4723c2313eed265c4e11dc6b225d5b30afd7e2aae0c79b0dc23558640a409862a31ccbe337e4c6e4c1a35f3c93251a1c714dedf5f4637716 +libLLVM_assert.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/md5/b00cef3645e589cb217d8df10173124c +libLLVM_assert.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/sha512/4de8fd6f90a5f85278c1045731e71855969b615e228a6b63bf53c84b145c3d8db4a7fc236301249e6ac195ee13fe62b0c23dee1c50c968ba74a1f9857e5ae3d8 +libLLVM_assert.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/md5/d326d3cd8918ef4abf4aa26a93f77310 +libLLVM_assert.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/sha512/ae49a764b848d179d8799793a79ba3cf03ece82d84e4d26b1f48256ce159984b1c54439db1f7b928f0526a85fb3b11021e9620104ae0404b7b85824aeb59d42f +libLLVM_assert.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/md5/10f34bf03747a92e6cdb6ed206b21724 +libLLVM_assert.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/sha512/ed06c31ae0024e60f7ac3a77dcde37e8aa545b280e0aef669edd6cf3f060b6acb90072c488f91a44bab6e573a3e50576a4b0a11f12596a63729a46547a7276af +libLLVM_assert.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/md5/55ad55e3e093d1a3c32775036c68f629 +libLLVM_assert.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/sha512/d1a30dd14b64c49397c45b2e53aa6099585ef22014fd9091dda39a7ccf03c78b85b018f3844c90c56aff47c6725bc5dfd73b5e6402ea13f73109aea6debaa276 +libLLVM_assert.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/md5/7d88bc9491b83793e39f494f45b7e636 +libLLVM_assert.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/sha512/c6065593e89f861661ec9c1fb35e416496e79e9e0f56e5ed4b7ba9fbf8b236716ff7733bb60b5de8942b6f9aca5705e0236e7fcbedb24109767fc12c29542d01 +libLLVM_assert.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/md5/a012e6c9829ec51f260bbdedb20a2863 +libLLVM_assert.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/sha512/24dc81297cab5d7eafa47de5d0ab5ca0b3da3ffd032de94488c81556d5ebaec850884dd561e14de98fa7dc0104d45acdd0298e0b0339dbb7351a9dbaa32320f5 +libLLVM_assert.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/md5/bc0f8437c9f2aba1a7e696cafd3b4618 +libLLVM_assert.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/sha512/ac640918e72b169fffd4a43f1453965ea0ba734c582c3f6b04cd6f020b032b4745ed79208a43ba1c1f700f0122596466da4ed881a89a67f6df3a62141dab9f04 +libLLVM.v11.0.1+3.aarch64-apple-darwin.tar.gz/md5/7b2400d9ae3ed7a9091011b7951c8ce7 +libLLVM.v11.0.1+3.aarch64-apple-darwin.tar.gz/sha512/9078fc8c24d1749b303f5c7843bbb6b5322080e4adfca0b96d7757454783617253dfcee07f24d1adaf3768563d298029a69bb75d39dc0701d024c27c66e50fd3 +libLLVM.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/md5/712ea06bba40025d5ad86229585e1eb9 +libLLVM.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/sha512/6260d68dd30f8950370db956dc85ad9ba1e474e9c27781ca2640d8d669d3fe34fdf2e020922e4f11d88c4394bb1e72f81f211e656684682207418b954f78102b +libLLVM.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/md5/941dc9c8a4d11cd7cc0bf5edb47ae822 +libLLVM.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/sha512/0ae65d99a49713aaace58e31f539c07727c34f30e089134c64b96b35dd061f44fd9889372364b1c9a36fe295a005160210cdfdf937c23e834ffa1b4260c6705b +libLLVM.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/md5/1bf46309788bf2827e337376a7a7355a +libLLVM.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/sha512/86dcde04d89730219b22dd67ee113942ef689125cfa6d3c5294387561b7771caf948e889a0cc93128159427704500c793b62e6a6cd39a372ff6be735fbb0fdf6 +libLLVM.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/md5/09e727bddee3132c944ed1404c421c2c +libLLVM.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/sha512/00a5f853557ca1f65fc807d3109357b211ba1935de66e2d3b59c8e00b4837c04b2ea72d6c6417a8fd788835938abaa8a4fed9e36d3f9cc009260150417465d72 +libLLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/46e656d8225b534bfcc01f7ceb8592cd +libLLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/325f4d521fed87fa75b296dfc8ea83e4fe5b04e8902f66d15d2f020b5b32236184a7b31a92eb5e0acc9597b1a21f94e6b4101f9844615767b03e6c2782c08760 +libLLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/26c52c856334ed443dadb7874a808946 +libLLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/e1bc796fcaa258e8c650c83c0b533f95bfc932c389d0ea507fbfecfd1d8829e746d53377508f909971d83b4247a0b31c31d2d1106cedc84234536ac19d2dc37e +libLLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/md5/c223e17dc0eb63e02625ed269b5c4064 +libLLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/90d29712769299ff526c7c7a4307bff6e519e1e5d991b4bf4279f5231263eae6103f0887ed2310c45052c904cb05d5b059ecc3ae0d124540fb0886f8c9cbf61c +libLLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/md5/54def908d9d9d93e0c16770344761dc3 +libLLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/d89b9ef23fd2bc0f974e343cf4254747a4ca2918bdcd9080846a56f2580626b80c7fe326488083e57330d857227e7bdd43455fd5f6c9dc90fdd0f9eda3c751c0 +libLLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/c927115d9435d5712dfd6aec848404b6 +libLLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/53050300ce37e79900677b3a447570b19518bc3ab0d13958274544686bba378742d7c6ad87b850a63f825a5fbeca0287f8b67332adc81962911e43cf952c9806 +libLLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/3dcfb85331c0bb7184bc10403a22447d +libLLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/9615b09038238a1cdabe1638a5550feb8498c9889cd805c5876350d7d5185a4ba467f2a97d2c4e192adfb59cfea76afb109e3c9687de183951a535b6b8271d5f +libLLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/md5/8b918180fafba11ae565771ed6839d6b +libLLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/29bf5de468872c0eb90603d2981e891536da58d60bfb2d0c095dbd9ad7c3390276117164077bb89f95ed3cb21a03c0e1245c4a92cd46bc9ed25e4204fdc69e8d +libLLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/md5/3f7054e973baa77535629c08f7b22cab +libLLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/e10819701d77d14bf28bae2fbd69ea03007ee6cce1d6c54e9dbbbcc5dca8d6c2351ee21007ba19da827c445626f5b4bb7e345d54971ba1a35e04278ed9d9b83c +libLLVM.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/md5/16c1530e3df1d137674503bf02423ffd +libLLVM.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/sha512/8284f5a7cf1f0fa8664031e16ebc12b7d5131de8efc7bc9e77fdf33a084294e40917f723ba9b9f56384f527ffb7bf4c7f04a2dff8953d25a2f473c90322f61d2 +libLLVM.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/md5/81670b1d368e9791705b71ae56373952 +libLLVM.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/sha512/dc0525dd275492ccd24533b89aa91a85660cb30cc3eb22f3c6fb10c854c890b5103048c802e06566aaf60d70bb00806ccd0552945573b78cc797295918968fca +libLLVM.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/md5/827cfc808c50b301c1645a21327692bf +libLLVM.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/sha512/dc504771c7cb465e40e4f6ce4b62b1f5114018209010e7bb199c2753438c1c78534d1aae39246d06fdca96f799b20c89e20a51cbf06a9ba318d0ff827d3a8519 +libLLVM.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/md5/fdb9e3d33d3b0e2051548d6a55d03daf +libLLVM.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/sha512/2cdf2fd7706c4e4ad80b12f6fc77a0389d4d015e3550c346f17fa0905dea058eccdd8e5b167477ff8ffb74cd1fe673af5c7ae5a13404da0b59232cb0e66669b7 +libLLVM.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/md5/f486dfa62a336cd7d9e1b00602fc1177 +libLLVM.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/sha512/8264c0cbd63fc4dc17472526723ce6ce4072b276d06a95156a259f8f2b2524e1ac6c5ca768a974f8f1b65bd0674336f7922225d4be5edb90680e549774f7d05e +libLLVM.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/md5/fbf1949afaa7e4d14722fc21c3dc7892 +libLLVM.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/sha512/3c897e31218f1975456d2769678f99c14b6308a464beea2fa6a4f534f355b5e9a7ef51c3f5fb0f44123ccb3c4854b906b96bb35a9ec01e1a1f39df903fadb30f +libLLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/md5/2e82ea13c59bf22f085768766d6dd8a4 +libLLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/664323d8461e5c64e26d8fb84d3d4bc68a8bc2020b3b397545aa651bfdc0539b83ca2c9bec80314322ce821ff225ae48e96521e23b159a684e74a244bb02bb72 +libLLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/md5/04f3934d4421e452673e015dbbe052e7 +libLLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/b8a0a8b6c56dc0ad4b6e179efc8461e69e01e69de8dc02b46644f74dcb859a5d6ae293b38b2091298e5024b7bbef041cb5332b095e6a3be9e44fcb8c21b54353 +libLLVM.v11.0.1+3.x86_64-apple-darwin.tar.gz/md5/487f852d540a46d03a804318067cab8b +libLLVM.v11.0.1+3.x86_64-apple-darwin.tar.gz/sha512/9158b5c8cfcc3dd75d835d6fae6b026bd57aaa60e8685d0777de8b31c5b644b40ac470a38632f6b0aa5eed85e1d001d3789a7f2989530f03f5e8dd95b947223e +libLLVM.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/md5/6f73bcabc8c748b997ce2d9433e7c910 +libLLVM.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/sha512/3152c54501343e575dccb928e55f2624340cf53e84dd67cc606e8a6ec18bd3b8c4121089962fd99af54acaab70279172b65aa35fb7ee50b53cc83db188febc07 +libLLVM.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/md5/4036faca6177ec29d38ae3d93e0a757a +libLLVM.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/sha512/0875703148d4f3056731247a6395c268e7a34edb5b25c9e1cddf507c13afd2f03d261088129fe822028a02e34842e41c48eda20b572b33d714d17b5b7c6f549b +libLLVM.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/md5/b1aa10a625f7e069023e10fed0ce6ff9 +libLLVM.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/sha512/b196521d0fcb830f137d4d67526a3fb46ae0f7591f290e3e0e45c7d2d412518d6b29e005edb38fc5d56b987f5f47f7bd272addfe0cfb1a9e41752f028bd0750f +libLLVM.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/md5/154eb676aa0b1fefe0f4bc2418deedc7 +libLLVM.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/sha512/91a79167fd025092a8f36cc37909a2b3f2591cb2f00809a6846e7abb8a41aa1c2f0f0c1e29d4365266c79c3cbacdce2325b58d09b1250806ea8f9e031a7b4c75 +libLLVM.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/md5/1a566cbd9e79eacfc7a76ac3defc4b6e +libLLVM.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/sha512/535a4e7c665d34e59b5490066373ce21c400001ed86e38b4f5ec7de9ea758b91fc58dadadb239213c4e27185eff33a29466250d978d3dbfa08e794f50ca6c3d7 +libLLVM.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/md5/97e8cfab218937f77421285f0dab30ad +libLLVM.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/sha512/cd514c19006f4f997b8530109a8b2f0099df1e0af7c0e5fe85dea65b01056cfd2b959190e17a3da8a3a223c59859aadd7486d1b6a71ab3207242e9bea891d546 +libLLVM.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/md5/f4ab87e307e014acf4600dc0a1d8120f +libLLVM.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/sha512/a44840a51cad8a7d0db296a3f3613372562c3c5464bb2f1a8e0352d9e521bcaa83053a70d0e369d75718cdd142584f24bd727b6717401174a270835ab40205a1 llvm-11.0.1.src.tar.xz/md5/6ec7ae9fd43da9b87cda15b3ab9cc7af llvm-11.0.1.src.tar.xz/sha512/b42c67ef88e09dd94171f85cdf49a421a15cfc82ff715c7ce6de22f98cefbe6c7cdf6bf4af7ca017d56ecf6aa3e36df3d823a78cf2dd5312de4301b54b43dbe8 -LLVM.v11.0.1+2.aarch64-apple-darwin.tar.gz/md5/643089e5ffc8a089d87f2e729f40a62c -LLVM.v11.0.1+2.aarch64-apple-darwin.tar.gz/sha512/5647ad774082ad4257e6745ae7638bcbad09ec3de33cdd4a3db3f2e00ec3e47c60804e269d5fb394be736c65479ef1a9c6e707d9d632ec3fdc6263a416afcc3f -LLVM.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/md5/6d9db51cfac613c743e77f84d7957043 -LLVM.v11.0.1+2.aarch64-linux-gnu-cxx03.tar.gz/sha512/752db15805b292746b49b675eb66d9d3b2c4f2180ba9b4c5a5e75bffe1d309f47ba5bd0fb560648924e80dec3b8ba1bce48a9a5168e399a3776f2661e084dc10 -LLVM.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/md5/7f795319046e33dc37341af6381170c9 -LLVM.v11.0.1+2.aarch64-linux-gnu-cxx11.tar.gz/sha512/6d35efb792aefbe7c3ad7c9cc20dc863f3655df22caa58770ab63515091c8f57f28002ca45e1dda733287ceb92d768f67f53ff0033b74291bc9f67a2f144c5bc -LLVM.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/md5/e504ad861c62ca2cfc68ed85b8b5e22f -LLVM.v11.0.1+2.aarch64-linux-musl-cxx03.tar.gz/sha512/7fb128c011f03fd881e4e5137b51d80ba1ac7256eca70201c9b9638a85eee485bed25ca3978b42735e5930baf0a93b95fc3c204e508cf667291267fad905b63a -LLVM.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/md5/73c91a8c3cfcbd5249edd397c15d2a0a -LLVM.v11.0.1+2.aarch64-linux-musl-cxx11.tar.gz/sha512/47ed726e2d4aac874023c5497e7ace6f6d8122c8747825e9b4f8d15ace24d971eb4b6324dc9053686d1bceb2efdad90d0a347c6b5d12a398edcc2afe1eef875a -LLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/161a8076cb39ae01294321ef915510ef -LLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/55c1cd7f688b4ebc5484b4772de37e5db306ece8627e3bc37735daf72379ce562a3537176b40e63c9dd39c729d9bc7074544646cb08d83cc8a95fbb1cd33ccd7 -LLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/e915b79238724fe445a008dae9ffa64f -LLVM.v11.0.1+2.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/ad659697413e87dc30338fbf586bf9ba10b08ce39256f5dfcf29a9c2903a029c2e9535a8b6e1c116fc88bb37361804a4ed4010e658fe9a7681a74a541cb79b65 -LLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/md5/b061d91ffdc7a49d0e1a6f433b3c866b -LLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/589d677ac812e68f110accf29292d115ead51f08a36c2cb0d58a0a28b6d035c51fef886808014a5d4422d577426f0f43d249c9d8cad47300c75ad6350f1f9a46 -LLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/md5/36b50d11db9a3bcdc72b8975643a425c -LLVM.v11.0.1+2.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/e7f4cf2a1c6c4b59a9717eaa13eb55598b4312c58a357f079af0d4871b15530c637142b6c41cc536dbe1e328916a28f09e54aa0a898e16a5eeca837e4876e356 -LLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/af4fd5b2e3b38a4512d3e630e791ec12 -LLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/9d909ac07e4f8174fb93e217420115267897411b7c414090bf9f3515536126a06beb4ef3235d38ebe3f99e023507b8413022e1d2d8d1daf39ecc6f332aa214e2 -LLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/b186a654d8d1b0803cb861ac32f903e8 -LLVM.v11.0.1+2.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/7de25cfa2852da9d984e5582d523e083ae49d54b5660ed58efbe180d2aee00d0271516b9aceff039492cb64952777e27388e34d6aad18875704a6839f45a829a -LLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/md5/622b4568924282fc3bc402cb3039e935 -LLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/75e55466ad2c7b7c3f5e648adf9421e9735a721cf431a106f324837b8295e2f2b0f9dd68df0743055187e538455e52a6c9b9be495eba25ca6061793f6d59c741 -LLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/md5/585dd61369209d70c26d5fb4f17c3608 -LLVM.v11.0.1+2.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/7c87adee39f5ced1a49ca92634995e18bef7dbc040c7083fd2ea061d9391c43c3d124f439e4ad24f5357cadb77569f7f4e9fef1fafb39b1662c1e739f4a8d397 -LLVM.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/md5/d2a97580540080ef421f5e78be78b956 -LLVM.v11.0.1+2.i686-linux-gnu-cxx03.tar.gz/sha512/4f4b061c07f85280487e2d02528f9e639171e0e85eac757dd9c525f7639149ad5c23db8721204a2e1099915e540496562dd8111ee8188d1b947003ec5256f06d -LLVM.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/md5/a35c89244bc09f7dc021286d566d7553 -LLVM.v11.0.1+2.i686-linux-gnu-cxx11.tar.gz/sha512/9a2332863ccc6b73545f2fce1c87f7ce5f9442b3f4d9ff28b228784829eb6688ddd7668726f296f99f2953988657f9968b28a317661377c79c49c0ec86ea6535 -LLVM.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/md5/3510f9922fbf558a96b3e633b2582037 -LLVM.v11.0.1+2.i686-linux-musl-cxx03.tar.gz/sha512/a5d3508636d0e5c670a5a01c55fba85bf0e15b11bdbc29a0c20f42ed6f3fc1e507d2e6414b45637ec88c158e51d26cf156a6e83af26941e205667384ffcbdfeb -LLVM.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/md5/00a689e3f703513c20dadc727e18360a -LLVM.v11.0.1+2.i686-linux-musl-cxx11.tar.gz/sha512/ecf5bc194d6b221981d26414037970f5428265955e73e35ca186bd98a07ce2b91ad4df1ce092d06944cd7ebbb450e74d34d1578c7db880bf3e417a36a61951ba -LLVM.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/md5/37de0f4ba020ec4ddfd08db8677a0b05 -LLVM.v11.0.1+2.i686-w64-mingw32-cxx03.tar.gz/sha512/fae73df50c680973f804458f973c5d9e20c173b35da2173ca9cba384d7369bd2f1d4d244104a4b2f93233b93901e79258e7975868a5e47200a4e6e98030e64b5 -LLVM.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/md5/aef3ca8f38017759d9d33551d44c7c36 -LLVM.v11.0.1+2.i686-w64-mingw32-cxx11.tar.gz/sha512/a675aa4371003e2d952d45e4f98de139ac03bab483acb7fd69935ee22b3d3958f31872cab8f0b406509454ec7deb912cf1890347810db1162182d197bd0d0fa6 -LLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/md5/c17f733e53a5d405472b05d9b94b8872 -LLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/e798f698a6a8e2ccdc087b2503462c20657842c98777bcefd3b30e2ae3d6ada7fa2f0c9f4b0a89c42b1a5a251d0d039161340f1b7b5005411eb39fb6b12265d4 -LLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/md5/698644a78d84116938e6a79978af71e3 -LLVM.v11.0.1+2.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/2700d72c7f7f5cf7a76e7f0d4d10d308f4202ea35d67a811871245ba3a4ec3bb8933766c6ac0fe16041def1b4651f4c110e9966fea8b37d8f7b7514405b58196 -LLVM.v11.0.1+2.x86_64-apple-darwin.tar.gz/md5/a65d108986317e1970ff9b3af062e882 -LLVM.v11.0.1+2.x86_64-apple-darwin.tar.gz/sha512/6013d60bcde54f3f916456772f37c1d33a1fe06358deba0dcdd64c6ea3a7d4c20d04c058785f35037915ea5fa226ed53c72c8b1e0982056fe4b4eedd90357450 -LLVM.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/md5/ef0ad19c2a89ef2dced00da0cf342e45 -LLVM.v11.0.1+2.x86_64-linux-gnu-cxx03.tar.gz/sha512/ba28c3532c38c6ab3fd2880a008ae99956ef1e4c8fb1c5afaf8ab7391f9c6b2bed828c4229f5e6e42de916560f57384624cf0766ff09358373e7d07bb1719097 -LLVM.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/md5/a4456e826e353b1e7767a4a1e9b4feb2 -LLVM.v11.0.1+2.x86_64-linux-gnu-cxx11.tar.gz/sha512/cf447db3dfafdef1f89b05ac9988633583e13c9d7cb8f13d95de8c196789ef1831b3f09a8f2af156a1fea99ff8ffa8396b0a8d58c2c16e5b806f7076418a6507 -LLVM.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/md5/c0e9ab261069c4b4dca965fb4f89e471 -LLVM.v11.0.1+2.x86_64-linux-musl-cxx03.tar.gz/sha512/f9a6208a0cb8ff62e511064c84d919e154234760c548925f688029e7fa5020da1687f2473e653ee36b031e97068daf23d7fbdf7cc93a8f8bc41ebfd542c59755 -LLVM.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/md5/48c8983f295d9500005ae999c980aafc -LLVM.v11.0.1+2.x86_64-linux-musl-cxx11.tar.gz/sha512/0c6afb6cf49e66a36e6c6a24598eb79ff1fb69cf00622d5200608481a9be66cf364e796652360368bb26b292c5db381d9073c238d75e9b59153bdf1fcd90f881 -LLVM.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/md5/edad57837822c544030a8ea227839f1a -LLVM.v11.0.1+2.x86_64-unknown-freebsd.tar.gz/sha512/5aaa736bc8e4622c25710cfa411d4ed2703eb77e61dc34fe6928b6a3b2e047f610f41a9d5854761e1438fdb79fea914c3c9080bec1598134d1a9853490b4828b -LLVM.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/md5/50020d38e5e7e2162aaad02a9e414fd8 -LLVM.v11.0.1+2.x86_64-w64-mingw32-cxx03.tar.gz/sha512/7b2bafeeae03721fd871b9e164406520de06ef4e5691935e60272c937d29914616c6d4ade7a5cd4be8a8703121a017e3854134d76e67d52fad594c8fb0fecd5c -LLVM.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/md5/1b91b38c5bd59096f13bd96e6daca976 -LLVM.v11.0.1+2.x86_64-w64-mingw32-cxx11.tar.gz/sha512/d8f307142fd711d34b99b05276313bce918933ea3840ed1c252e5566f7c0028206a3125d22156b716dafe8e4cb61369d5c02d04ea324b7cc755bdb268006dbcf +LLVM.v11.0.1+3.aarch64-apple-darwin.tar.gz/md5/181e555215a01db6017bef6b75b857f6 +LLVM.v11.0.1+3.aarch64-apple-darwin.tar.gz/sha512/7940b4494e5806319d013feb42771884c320b964fc674abfd8979169fe32bfbfa03558195e520a108fd645a4c7a06ef918d59cd411dbd086b6a46f80e5ff2c9c +LLVM.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/md5/b02bb670ea84bcca20f318ffb26a79fd +LLVM.v11.0.1+3.aarch64-linux-gnu-cxx03.tar.gz/sha512/f05004c2fd6fbfdfe502e4f83babb7c29f9863e900e711c86023e878808eb1a31ff0285c3288a616a2dbecd7dfe3036fdf4465a64633af723f10c2fce68aa84d +LLVM.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/md5/9aae2250dca2c2e8aa305d0175596fbd +LLVM.v11.0.1+3.aarch64-linux-gnu-cxx11.tar.gz/sha512/0ca30244061b3bd6f0b0a6bbbf61fc40b02db00b3e9bca4aa79013ac12137aa7e872ba7113c6bad3ca08225431a9d9a4d2267852606e8360b866e5752f027965 +LLVM.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/md5/f3c3b9667ec2ab3dd9f3663859a0a736 +LLVM.v11.0.1+3.aarch64-linux-musl-cxx03.tar.gz/sha512/5b1abc1967009154a71fc43813a80d37e1c8531575938b2682212478b51591def16a7141292844568ce65f76bc686a7e9f7a4d77b9311a57226ccd43d8494d48 +LLVM.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/md5/98505793b877160dfc7466284fea9e71 +LLVM.v11.0.1+3.aarch64-linux-musl-cxx11.tar.gz/sha512/90a0b9d8da40eaf29d9d7448a3611ee264eb90cd947fa68a6e5e2757d580e82bfbe8ffe3d31c2c2f1eade66d2d4b69a7dd79830b813b62ac7bba289281325559 +LLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/md5/fdc1abc12cf08fae3d4e110976e5967e +LLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx03.tar.gz/sha512/6157dec83258fff29d54fe2f3783a7975a4487a5bc1b98f8355054970ad958eb26ee11f7a2f60c5ab8ae5c8e799275fc712051b00039a14febd0db66520d29b8 +LLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/md5/2c492cfd7cac00863fe373f8d91ce84c +LLVM.v11.0.1+3.armv6l-linux-gnueabihf-cxx11.tar.gz/sha512/654e9842373cb52114407340f8cf4c5954966ba677cae9aa085e22a3ed167bb1670286f3f3dcb6798913fee45937da0327817a97f48db021d997c22862b039ef +LLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/md5/81b6c3bcb6b5e595f5fc12aee8596bfb +LLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx03.tar.gz/sha512/8360352c772c69f9cd9469b41ee7494534248ae0480f7661f9303747cb3a87e26d5659fbf32d7dd11ba70b4f24812cf94dacd7565b92b42c9d63da388b8e93e0 +LLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/md5/c9559f735a8419e77a874dd75451d726 +LLVM.v11.0.1+3.armv6l-linux-musleabihf-cxx11.tar.gz/sha512/64cb59c966a1f42d1f31e32cf584602cd1a6a3bb5c3d805197c8e3cd96ebfc1ad3959bf52be2767d88110fe0025307f1e1982e9029630dd5438e94886da21366 +LLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/md5/bacdfbffc987ab1e4e0a023c4f1cb636 +LLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx03.tar.gz/sha512/d9f772a958ff3621f10bc562833a7121a4b3c3aec8d8d03694554714dd54537aa89af0e080f16ffdcf965ae33bd1bb05d9659beeaa86ffb7e553a4202b924a0f +LLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/md5/018802fd42e68b24459c4040df0019cc +LLVM.v11.0.1+3.armv7l-linux-gnueabihf-cxx11.tar.gz/sha512/ddcf9f104f47485cea67d0e5862393c2161e6aaf2e1cced1b0600b5b2dfb3c35895d00e47349de298cc9164665cc8cc8af3249997b716872fe23bb58bb1ea370 +LLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/md5/dc1ccc83441df682b09624bf7047aaf9 +LLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx03.tar.gz/sha512/b717137c831f698cd9b3339e5beb0a2e9d6fd8c59961f91d70b8e76d8b1ef7bd9ef610a49d02d45bd6e7130262f37601a780e33509b78e2b1caafd40eeead7d1 +LLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/md5/74749fde3378518041fcae2e447370ea +LLVM.v11.0.1+3.armv7l-linux-musleabihf-cxx11.tar.gz/sha512/b60715831b4583679455ceffe82acc19ef6c7fe3798b02f3df8a08a129a4f80fbfd7ab59c663db4f4418285dc3551e536c3edda2e24310d10cecdd89596588fd +LLVM.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/md5/0d403181fae7d966c536ee0cd6e39c12 +LLVM.v11.0.1+3.i686-linux-gnu-cxx03.tar.gz/sha512/71728fdc4b559df058d9ddc6dcd1dfae4d2dc854e2038ba14baef62e1cba7f3e2c7565fd2942b069690497989e846d0b5a572e0bbea8de7873752e43bc6827c5 +LLVM.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/md5/791e288d0acc976ddf18776540b21ca2 +LLVM.v11.0.1+3.i686-linux-gnu-cxx11.tar.gz/sha512/49dc3c9a2952f928d51c0af64c9f87b441c05a3f7c497be7564052936bb44c4e5dbc05dca3b69d9123d784647f6ca1c528ece5bc11ad39059fb8d465582ff394 +LLVM.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/md5/da303f41ec8ad7329e826a5e94af8889 +LLVM.v11.0.1+3.i686-linux-musl-cxx03.tar.gz/sha512/39deaf22f9e5c2422eefaea6d64c8d78d3235385edb43ce050f8f34c5c9d128c7b155adb2af5c1f0653f92932324f9a8a564df6dc97009402842e98b4b9a17de +LLVM.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/md5/3c5c77b8534eb0756c112193e4028838 +LLVM.v11.0.1+3.i686-linux-musl-cxx11.tar.gz/sha512/9b00f22b169f17f1766e40da5a7aee602cf0b1f34ae97cdd02f59f3f7613f192dfa6a0235764a175efe4cf1ddcc1850d37052ea45e16947f0d1ad79deb6812d9 +LLVM.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/md5/757aab5c47122ed033f987847a95ec0c +LLVM.v11.0.1+3.i686-w64-mingw32-cxx03.tar.gz/sha512/de54c3f21959ebcb081601deb01bbbafe415b05cc7240fce230483b2901d77f89575a74384fb55c919bfe25a8ca8cde2f2e0c6f4f6a809fc73499f4752f2043a +LLVM.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/md5/c7f3d289428d68802eaea4cae65e043c +LLVM.v11.0.1+3.i686-w64-mingw32-cxx11.tar.gz/sha512/54fcb15fd2019dc0f5c3db10c24c9d21d8159e923b215dd000d6107a136b69ff240bc447b2a280a023f25e98880a86ea89cd42e1e3caacabeb59a4ba18b96d32 +LLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/md5/a3032d9310fdfcea2c0e6aa2cc27fe49 +LLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx03.tar.gz/sha512/a8f8c4739b17f902f08307dc2f154ebe90a229299d476d8723cffe504cdfa91a8c36aadab4c12c1db4ea8cc056de17b66e68e1f086ad5d30d5f2edcc53da2337 +LLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/md5/ba581dd66006b02e1e7643b93af14499 +LLVM.v11.0.1+3.powerpc64le-linux-gnu-cxx11.tar.gz/sha512/8037109625c8cab5e310ff95aa852bd792b35f04b6830870962add89caaf0efbe001d08d6f870044e998a7b14216700a806eb132daadc5c4accd77baeebfb15e +LLVM.v11.0.1+3.x86_64-apple-darwin.tar.gz/md5/9d9c737b6e98a41086a1802283730757 +LLVM.v11.0.1+3.x86_64-apple-darwin.tar.gz/sha512/b24025364052233f977c17bb5f9675b4404fb4b197f35752a8a2591ac9786eb8aa5b4053ca4269e6c4de9daf401f88b0361880c3b3201be2db91626f9cad9030 +LLVM.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/md5/ef4535f1aaa5867e9dc4401e894086eb +LLVM.v11.0.1+3.x86_64-linux-gnu-cxx03.tar.gz/sha512/a1d7e4bdc72f33ec669023c89d4dcba8bd4b644e7c38e27784ab0f052e8efc08cb0cb89c38d5ee471961c8c8bfd6eaecc89898e70093a494f6cc53b9a36652eb +LLVM.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/md5/bcae5538b46ba7241b429dd568faa1b7 +LLVM.v11.0.1+3.x86_64-linux-gnu-cxx11.tar.gz/sha512/f336e5d7d007298027efe39a9b50afb32376d1361622097fac6a0530ce8a834f0cfb6d8abf05cf964bb5159b0864bedac978fb95031cb84672e0bc0b037d03aa +LLVM.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/md5/353ba4a877af02d2a986cb4917fc6cbc +LLVM.v11.0.1+3.x86_64-linux-musl-cxx03.tar.gz/sha512/ea038f9a12a84df32e62d877320eb041d2363b1714ded05508b1fdfb2a874a6964114833a7435feaad1040fd31a533acd29e48731f49e8df3b60fcea04f565fc +LLVM.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/md5/81d43dea36a9e2ba628263b1af36461b +LLVM.v11.0.1+3.x86_64-linux-musl-cxx11.tar.gz/sha512/a99b2dbdaf55cd36e8ead346fc7fae4ecd430cb98895343d6a409d0ea95406836048638dd5ab73129a2b2a637abd1e997515d8de1e9e5e8449e0f9d747773d4c +LLVM.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/md5/0f83ccf57dcb7814976a57c42c91c454 +LLVM.v11.0.1+3.x86_64-unknown-freebsd.tar.gz/sha512/06c3a97b6ec4f9095e8e978ccab0e65e03d26f99d90485c7893b6a41a53a4e5a8e8e531592e20f9d73a1100fe87f7fad793dc6cd19b09ae0bdaec5c362b7b4ac +LLVM.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/md5/8db6882c343f0ff1ed3137c1a17a1676 +LLVM.v11.0.1+3.x86_64-w64-mingw32-cxx03.tar.gz/sha512/a3fbc239389eaae152f4a21e5b50b6afd09adeb75d8e32754dfba5da3815991dd05ef5c403ef9539bdd47cad3f9b2c7066a61e3f40243f7bd237a7480172be86 +LLVM.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/md5/bee41a179343b54359aba1b159110a39 +LLVM.v11.0.1+3.x86_64-w64-mingw32-cxx11.tar.gz/sha512/3db19d091bd52cfc2018a25f28bf7714f6337bd93b24349ad90d2954f60317189e5e65241ff114c9f7cd15933b685f0a4a193d45daf21af593fe2890ab98843e diff --git a/deps/llvm.mk b/deps/llvm.mk index a3d67cbaae550..084b82dac8f26 100644 --- a/deps/llvm.mk +++ b/deps/llvm.mk @@ -448,6 +448,15 @@ $$(LLVM_BUILDDIR_withtype)/build-compiled: $$(LLVM_SRC_DIR)/$1.patch-applied LLVM_PATCH_PREV := $$(LLVM_SRC_DIR)/$1.patch-applied endef +define LLVM_PROJ_PATCH +$$(LLVM_SRC_DIR)/$1.patch-applied: $$(LLVM_SRC_DIR)/source-extracted | $$(SRCDIR)/patches/$1.patch $$(LLVM_PATCH_PREV) + cd $$(LLVM_SRC_DIR) && patch -p2 < $$(SRCDIR)/patches/$1.patch + echo 1 > $$@ +# declare that applying any patch must re-run the compile step +$$(LLVM_BUILDDIR_withtype)/build-compiled: $$(LLVM_SRC_DIR)/$1.patch-applied +LLVM_PATCH_PREV := $$(LLVM_SRC_DIR)/$1.patch-applied +endef + ifeq ($(LLVM_VER_SHORT),8.0) $(eval $(call LLVM_PATCH,llvm-D27629-AArch64-large_model_6.0.1)) $(eval $(call LLVM_PATCH,llvm8-D34078-vectorize-fdiv)) @@ -555,6 +564,10 @@ $(eval $(call LLVM_PATCH,llvm-11-D94813-mergeicmps)) $(eval $(call LLVM_PATCH,llvm-11-D94980-CTR-half)) $(eval $(call LLVM_PATCH,llvm-11-D94058-sext-atomic-ops)) # remove for LLVM 12 $(eval $(call LLVM_PATCH,llvm-11-D96283-dagcombine-half)) # remove for LLVM 12 +$(eval $(call LLVM_PROJ_PATCH,llvm-11-AArch64-FastIsel-bug)) +$(eval $(call LLVM_PROJ_PATCH,llvm-11-D97435-AArch64-movaddrreg)) +$(eval $(call LLVM_PROJ_PATCH,llvm-11-D97571-AArch64-loh)) # remove for LLVM 13 +$(eval $(call LLVM_PROJ_PATCH,llvm-11-aarch64-addrspace)) # remove for LLVM 13 endif # LLVM_VER 11.0 diff --git a/deps/patches/llvm-11-AArch64-FastIsel-bug.patch b/deps/patches/llvm-11-AArch64-FastIsel-bug.patch new file mode 100644 index 0000000000000..5ab5e96c37a2e --- /dev/null +++ b/deps/patches/llvm-11-AArch64-FastIsel-bug.patch @@ -0,0 +1,50 @@ +From d82434785ecab16223a0bd4ec8ede020bf244003 Mon Sep 17 00:00:00 2001 +From: Keno Fischer +Date: Mon, 1 Mar 2021 16:42:05 -0500 +Subject: [PATCH 4/4] AArch64: Remove Bad optimization + +Removes the code responsible for causing https://bugs.llvm.org/show_bug.cgi?id=49357. +A fix is in progress upstream, but I don't think it's easy, so this +fixes the bug in the meantime. The optimization it does is minor. +--- + llvm/lib/Target/AArch64/AArch64FastISel.cpp | 24 --------------------- + 1 file changed, 24 deletions(-) + +diff --git a/llvm/lib/Target/AArch64/AArch64FastISel.cpp b/llvm/lib/Target/AArch64/AArch64FastISel.cpp +index cf3ebed6ef19..6908a51c47d6 100644 +--- a/llvm/lib/Target/AArch64/AArch64FastISel.cpp ++++ b/llvm/lib/Target/AArch64/AArch64FastISel.cpp +@@ -4600,30 +4600,6 @@ bool AArch64FastISel::selectIntExt(const Instruction *I) { + + // Try to optimize already sign-/zero-extended values from function arguments. + bool IsZExt = isa(I); +- if (const auto *Arg = dyn_cast(I->getOperand(0))) { +- if ((IsZExt && Arg->hasZExtAttr()) || (!IsZExt && Arg->hasSExtAttr())) { +- if (RetVT == MVT::i64 && SrcVT != MVT::i64) { +- unsigned ResultReg = createResultReg(&AArch64::GPR64RegClass); +- BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, +- TII.get(AArch64::SUBREG_TO_REG), ResultReg) +- .addImm(0) +- .addReg(SrcReg, getKillRegState(SrcIsKill)) +- .addImm(AArch64::sub_32); +- SrcReg = ResultReg; +- } +- // Conservatively clear all kill flags from all uses, because we are +- // replacing a sign-/zero-extend instruction at IR level with a nop at MI +- // level. The result of the instruction at IR level might have been +- // trivially dead, which is now not longer true. +- unsigned UseReg = lookUpRegForValue(I); +- if (UseReg) +- MRI.clearKillFlags(UseReg); +- +- updateValueMap(I, SrcReg); +- return true; +- } +- } +- + unsigned ResultReg = emitIntExt(SrcVT, SrcReg, RetVT, IsZExt); + if (!ResultReg) + return false; +-- +2.25.1 + diff --git a/deps/patches/llvm-11-D97435-AArch64-movaddrreg.patch b/deps/patches/llvm-11-D97435-AArch64-movaddrreg.patch new file mode 100644 index 0000000000000..d33658f493711 --- /dev/null +++ b/deps/patches/llvm-11-D97435-AArch64-movaddrreg.patch @@ -0,0 +1,484 @@ +From 4103660e5362b2ab73256740c28e4f0e042f96d4 Mon Sep 17 00:00:00 2001 +From: Keno Fischer +Date: Mon, 1 Mar 2021 16:37:03 -0500 +Subject: [PATCH 1/4] [Aarch64] Correct register class for pseudo instructions + +This constrains the Mov* and similar pseudo instruction to take +GPR64common register classes rather than GPR64. GPR64 includs XZR +which is invalid here, because this pseudo instructions expands +into an adrp/add pair sharing a destination register. XZR is invalid +on add and attempting to encode it will instead increment the stack +pointer causing crashes (downstream report at [1]). The test case +there reproduces on LLVM11, but I do not have a test case that +reaches this code path on main, since it is being masked by +improved dead code elimination introduced in D91513. Nevertheless, +this seems like a good thing to fix in case there are other cases +that dead code elimination doesn't clean up (e.g. if `optnone` is +used and the optimization is skipped). + +I think it would be worth auditing uses of GPR64 in pseudo +instructions to see if there are any similar issues, but I do not +have a high enough view of the backend or knowledge of the +Aarch64 architecture to do this quickly. + +[1] https://github.com/JuliaLang/julia/issues/39818 + +Reviewed By: t.p.northover + +Differential Revision: https://reviews.llvm.org/D97435 +--- + .../AArch64/AArch64ExpandPseudoInsts.cpp | 1 + + llvm/lib/Target/AArch64/AArch64InstrInfo.td | 32 +- + .../GlobalISel/select-blockaddress.mir | 5 +- + .../select-jump-table-brjt-constrain.mir | 2 +- + .../GlobalISel/select-jump-table-brjt.mir | 2 +- + .../CodeGen/AArch64/GlobalISel/select.mir | 312 ------------------ + 6 files changed, 22 insertions(+), 332 deletions(-) + delete mode 100644 llvm/test/CodeGen/AArch64/GlobalISel/select.mir + +diff --git a/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp b/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp +index 9e65ad2e18f9..3497a15a7574 100644 +--- a/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp ++++ b/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp +@@ -844,6 +844,7 @@ bool AArch64ExpandPseudo::expandMI(MachineBasicBlock &MBB, + case AArch64::MOVaddrEXT: { + // Expand into ADRP + ADD. + Register DstReg = MI.getOperand(0).getReg(); ++ assert(DstReg != AArch64::XZR); + MachineInstrBuilder MIB1 = + BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(AArch64::ADRP), DstReg) + .add(MI.getOperand(1)); +diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td +index f4a5f639e497..9e69934a97e2 100644 +--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td ++++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td +@@ -630,40 +630,40 @@ let isReMaterializable = 1, isCodeGenOnly = 1 in { + // removed, along with the AArch64Wrapper node. + + let AddedComplexity = 10 in +-def LOADgot : Pseudo<(outs GPR64:$dst), (ins i64imm:$addr), +- [(set GPR64:$dst, (AArch64LOADgot tglobaladdr:$addr))]>, ++def LOADgot : Pseudo<(outs GPR64common:$dst), (ins i64imm:$addr), ++ [(set GPR64common:$dst, (AArch64LOADgot tglobaladdr:$addr))]>, + Sched<[WriteLDAdr]>; + + // The MOVaddr instruction should match only when the add is not folded + // into a load or store address. + def MOVaddr +- : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low), +- [(set GPR64:$dst, (AArch64addlow (AArch64adrp tglobaladdr:$hi), ++ : Pseudo<(outs GPR64common:$dst), (ins i64imm:$hi, i64imm:$low), ++ [(set GPR64common:$dst, (AArch64addlow (AArch64adrp tglobaladdr:$hi), + tglobaladdr:$low))]>, + Sched<[WriteAdrAdr]>; + def MOVaddrJT +- : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low), +- [(set GPR64:$dst, (AArch64addlow (AArch64adrp tjumptable:$hi), ++ : Pseudo<(outs GPR64common:$dst), (ins i64imm:$hi, i64imm:$low), ++ [(set GPR64common:$dst, (AArch64addlow (AArch64adrp tjumptable:$hi), + tjumptable:$low))]>, + Sched<[WriteAdrAdr]>; + def MOVaddrCP +- : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low), +- [(set GPR64:$dst, (AArch64addlow (AArch64adrp tconstpool:$hi), ++ : Pseudo<(outs GPR64common:$dst), (ins i64imm:$hi, i64imm:$low), ++ [(set GPR64common:$dst, (AArch64addlow (AArch64adrp tconstpool:$hi), + tconstpool:$low))]>, + Sched<[WriteAdrAdr]>; + def MOVaddrBA +- : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low), +- [(set GPR64:$dst, (AArch64addlow (AArch64adrp tblockaddress:$hi), ++ : Pseudo<(outs GPR64common:$dst), (ins i64imm:$hi, i64imm:$low), ++ [(set GPR64common:$dst, (AArch64addlow (AArch64adrp tblockaddress:$hi), + tblockaddress:$low))]>, + Sched<[WriteAdrAdr]>; + def MOVaddrTLS +- : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low), +- [(set GPR64:$dst, (AArch64addlow (AArch64adrp tglobaltlsaddr:$hi), ++ : Pseudo<(outs GPR64common:$dst), (ins i64imm:$hi, i64imm:$low), ++ [(set GPR64common:$dst, (AArch64addlow (AArch64adrp tglobaltlsaddr:$hi), + tglobaltlsaddr:$low))]>, + Sched<[WriteAdrAdr]>; + def MOVaddrEXT +- : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low), +- [(set GPR64:$dst, (AArch64addlow (AArch64adrp texternalsym:$hi), ++ : Pseudo<(outs GPR64common:$dst), (ins i64imm:$hi, i64imm:$low), ++ [(set GPR64common:$dst, (AArch64addlow (AArch64adrp texternalsym:$hi), + texternalsym:$low))]>, + Sched<[WriteAdrAdr]>; + // Normally AArch64addlow either gets folded into a following ldr/str, +@@ -671,8 +671,8 @@ def MOVaddrEXT + // might appear without either of them, so allow lowering it into a plain + // add. + def ADDlowTLS +- : Pseudo<(outs GPR64:$dst), (ins GPR64:$src, i64imm:$low), +- [(set GPR64:$dst, (AArch64addlow GPR64:$src, ++ : Pseudo<(outs GPR64sp:$dst), (ins GPR64sp:$src, i64imm:$low), ++ [(set GPR64sp:$dst, (AArch64addlow GPR64sp:$src, + tglobaltlsaddr:$low))]>, + Sched<[WriteAdr]>; + +diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-blockaddress.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-blockaddress.mir +index bd5ee80d5841..10732660d34a 100644 +--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-blockaddress.mir ++++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-blockaddress.mir +@@ -30,9 +30,10 @@ registers: + body: | + ; CHECK-LABEL: name: test_blockaddress + ; CHECK: bb.0 (%ir-block.0): +- ; CHECK: [[MOVaddrBA:%[0-9]+]]:gpr64 = MOVaddrBA target-flags(aarch64-page) blockaddress(@test_blockaddress, %ir-block.block), target-flags(aarch64-pageoff, aarch64-nc) blockaddress(@test_blockaddress, %ir-block.block) ++ ; CHECK: [[MOVaddrBA:%[0-9]+]]:gpr64common = MOVaddrBA target-flags(aarch64-page) blockaddress(@test_blockaddress, %ir-block.block), target-flags(aarch64-pageoff, aarch64-nc) blockaddress(@test_blockaddress, %ir-block.block) + ; CHECK: [[MOVaddr:%[0-9]+]]:gpr64common = MOVaddr target-flags(aarch64-page) @addr, target-flags(aarch64-pageoff, aarch64-nc) @addr +- ; CHECK: STRXui [[MOVaddrBA]], [[MOVaddr]], 0 :: (store 8 into @addr) ++ ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY [[MOVaddrBA]] ++ ; CHECK: STRXui [[COPY]], [[MOVaddr]], 0 :: (store 8 into @addr) + ; CHECK: BR [[MOVaddrBA]] + ; CHECK: bb.1.block (address-taken): + ; CHECK: RET_ReallyLR +diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt-constrain.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt-constrain.mir +index 082bf43061da..6f3540a0768b 100644 +--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt-constrain.mir ++++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt-constrain.mir +@@ -30,7 +30,7 @@ body: | + ; CHECK: Bcc 8, %bb.3, implicit $nzcv + ; CHECK: bb.1: + ; CHECK: successors: %bb.2(0x40000000), %bb.3(0x40000000) +- ; CHECK: [[MOVaddrJT:%[0-9]+]]:gpr64 = MOVaddrJT target-flags(aarch64-page) %jump-table.0, target-flags(aarch64-pageoff, aarch64-nc) %jump-table.0 ++ ; CHECK: [[MOVaddrJT:%[0-9]+]]:gpr64common = MOVaddrJT target-flags(aarch64-page) %jump-table.0, target-flags(aarch64-pageoff, aarch64-nc) %jump-table.0 + ; CHECK: early-clobber %6:gpr64, early-clobber %7:gpr64sp = JumpTableDest32 [[MOVaddrJT]], [[SUBREG_TO_REG]], %jump-table.0 + ; CHECK: BR %6 + ; CHECK: bb.2: +diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir +index ae7d90769f99..80631eadb5e8 100644 +--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir ++++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir +@@ -65,7 +65,7 @@ body: | + ; CHECK: bb.1.entry: + ; CHECK: successors: %bb.3(0x2aaaaaab), %bb.4(0x2aaaaaab), %bb.2(0x2aaaaaab) + ; CHECK: [[COPY2:%[0-9]+]]:gpr32 = COPY $wzr +- ; CHECK: [[MOVaddrJT:%[0-9]+]]:gpr64 = MOVaddrJT target-flags(aarch64-page) %jump-table.0, target-flags(aarch64-pageoff, aarch64-nc) %jump-table.0 ++ ; CHECK: [[MOVaddrJT:%[0-9]+]]:gpr64common = MOVaddrJT target-flags(aarch64-page) %jump-table.0, target-flags(aarch64-pageoff, aarch64-nc) %jump-table.0 + ; CHECK: early-clobber %18:gpr64, early-clobber %19:gpr64sp = JumpTableDest32 [[MOVaddrJT]], [[SUBREG_TO_REG]], %jump-table.0 + ; CHECK: BR %18 + ; CHECK: bb.2.sw.bb: +diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select.mir +deleted file mode 100644 +index 112aee8d552c..000000000000 +--- a/llvm/test/CodeGen/AArch64/GlobalISel/select.mir ++++ /dev/null +@@ -1,312 +0,0 @@ +-# RUN: llc -O0 -mtriple=aarch64-apple-ios -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=IOS +-# RUN: llc -O0 -mtriple=aarch64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=LINUX-DEFAULT +-# RUN: llc -O0 -mtriple=aarch64-linux-gnu -relocation-model=pic -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=LINUX-PIC +- +---- | +- target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" +- +- define void @frame_index() { +- %ptr0 = alloca i64 +- ret void +- } +- +- define i8* @ptr_mask(i8* %in) { ret i8* undef } +- +- @var_local = global i8 0 +- define i8* @global_local() { ret i8* undef } +- +- @var_got = external global i8 +- define i8* @global_got() { ret i8* undef } +- +- define void @icmp() { ret void } +- define void @fcmp() { ret void } +- +- define void @phi() { ret void } +- +- define void @select() { ret void } +-... +- +---- +-# CHECK-LABEL: name: frame_index +-name: frame_index +-legalized: true +-regBankSelected: true +- +-# CHECK: registers: +-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' } +-registers: +- - { id: 0, class: gpr } +- +-stack: +- - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 } +- +-# CHECK: body: +-# CHECK: %0:gpr64sp = ADDXri %stack.0.ptr0, 0, 0 +-body: | +- bb.0: +- %0(p0) = G_FRAME_INDEX %stack.0.ptr0 +- $x0 = COPY %0(p0) +-... +- +---- +- +---- +-# CHECK-LABEL: name: ptr_mask +-name: ptr_mask +-legalized: true +-regBankSelected: true +- +-# CHECK: body: +-# CHECK: %2:gpr64sp = ANDXri %0, 8060 +-body: | +- bb.0: +- liveins: $x0 +- %0:gpr(p0) = COPY $x0 +- %const:gpr(s64) = G_CONSTANT i64 -8 +- %1:gpr(p0) = G_PTRMASK %0, %const +- $x0 = COPY %1(p0) +-... +- +---- +-# Global defined in the same linkage unit so no GOT is needed +-# CHECK-LABEL: name: global_local +-name: global_local +-legalized: true +-regBankSelected: true +-registers: +- - { id: 0, class: gpr } +- +-# CHECK: body: +-# IOS: %0:gpr64 = MOVaddr target-flags(aarch64-page) @var_local, target-flags(aarch64-pageoff, aarch64-nc) @var_local +-# LINUX-DEFAULT: %0:gpr64 = MOVaddr target-flags(aarch64-page) @var_local, target-flags(aarch64-pageoff, aarch64-nc) @var_local +-# LINUX-PIC: %0:gpr64 = LOADgot target-flags(aarch64-got) @var_local +-body: | +- bb.0: +- %0(p0) = G_GLOBAL_VALUE @var_local +- $x0 = COPY %0(p0) +-... +- +---- +-# CHECK-LABEL: name: global_got +-name: global_got +-legalized: true +-regBankSelected: true +-registers: +- - { id: 0, class: gpr } +- +-# CHECK: body: +-# IOS: %0:gpr64 = LOADgot target-flags(aarch64-got) @var_got +-# LINUX-DEFAULT: %0:gpr64 = MOVaddr target-flags(aarch64-page) @var_got, target-flags(aarch64-pageoff, aarch64-nc) @var_got +-# LINUX-PIC: %0:gpr64 = LOADgot target-flags(aarch64-got) @var_got +-body: | +- bb.0: +- %0(p0) = G_GLOBAL_VALUE @var_got +- $x0 = COPY %0(p0) +-... +- +---- +-# CHECK-LABEL: name: icmp +-name: icmp +-legalized: true +-regBankSelected: true +- +-# CHECK: registers: +-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 3, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 4, class: gpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 5, class: gpr32, preferred-register: '' } +-registers: +- - { id: 0, class: gpr } +- - { id: 1, class: gpr } +- - { id: 2, class: gpr } +- - { id: 3, class: gpr } +- - { id: 4, class: gpr } +- - { id: 5, class: gpr } +- - { id: 6, class: gpr } +- - { id: 7, class: gpr } +- - { id: 8, class: gpr } +- - { id: 9, class: gpr } +- - { id: 10, class: gpr } +- - { id: 11, class: gpr } +- +-# CHECK: body: +-# CHECK: SUBSWrr %0, %0, implicit-def $nzcv +-# CHECK: %1:gpr32 = CSINCWr $wzr, $wzr, 1, implicit $nzcv +- +-# CHECK: SUBSXrr %2, %2, implicit-def $nzcv +-# CHECK: %3:gpr32 = CSINCWr $wzr, $wzr, 3, implicit $nzcv +- +-# CHECK: SUBSXrr %4, %4, implicit-def $nzcv +-# CHECK: %5:gpr32 = CSINCWr $wzr, $wzr, 0, implicit $nzcv +- +-body: | +- bb.0: +- liveins: $w0, $x0 +- +- %0(s32) = COPY $w0 +- %1(s32) = G_ICMP intpred(eq), %0, %0 +- %6(s1) = G_TRUNC %1(s32) +- %9(s32) = G_ANYEXT %6 +- $w0 = COPY %9(s32) +- +- %2(s64) = COPY $x0 +- %3(s32) = G_ICMP intpred(uge), %2, %2 +- %7(s1) = G_TRUNC %3(s32) +- %10(s32) = G_ANYEXT %7 +- $w0 = COPY %10(s32) +- +- %4(p0) = COPY $x0 +- %5(s32) = G_ICMP intpred(ne), %4, %4 +- %8(s1) = G_TRUNC %5(s32) +- %11(s32) = G_ANYEXT %8 +- $w0 = COPY %11(s32) +-... +- +---- +-# CHECK-LABEL: name: fcmp +-name: fcmp +-legalized: true +-regBankSelected: true +- +-# CHECK: registers: +-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 2, class: fpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 3, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 4, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 5, class: gpr32, preferred-register: '' } +-registers: +- - { id: 0, class: fpr } +- - { id: 1, class: gpr } +- - { id: 2, class: fpr } +- - { id: 3, class: gpr } +- - { id: 4, class: gpr } +- - { id: 5, class: gpr } +- - { id: 6, class: gpr } +- - { id: 7, class: gpr } +- +-# CHECK: body: +-# CHECK: FCMPSrr %0, %0, implicit-def $nzcv +-# CHECK: [[TST_MI:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 5, implicit $nzcv +-# CHECK: [[TST_GT:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 13, implicit $nzcv +-# CHECK: %1:gpr32 = ORRWrr [[TST_MI]], [[TST_GT]] +- +-# CHECK: FCMPDrr %2, %2, implicit-def $nzcv +-# CHECK: %3:gpr32 = CSINCWr $wzr, $wzr, 4, implicit $nzcv +- +-body: | +- bb.0: +- liveins: $w0, $x0 +- +- %0(s32) = COPY $s0 +- %1(s32) = G_FCMP floatpred(one), %0, %0 +- %4(s1) = G_TRUNC %1(s32) +- %6(s32) = G_ANYEXT %4 +- $w0 = COPY %6(s32) +- +- %2(s64) = COPY $d0 +- %3(s32) = G_FCMP floatpred(uge), %2, %2 +- %5(s1) = G_TRUNC %3(s32) +- %7(s32) = G_ANYEXT %5 +- $w0 = COPY %7(s32) +- +-... +- +---- +-# CHECK-LABEL: name: phi +-name: phi +-legalized: true +-regBankSelected: true +-tracksRegLiveness: true +- +-# CHECK: registers: +-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 2, class: fpr32, preferred-register: '' } +-registers: +- - { id: 0, class: fpr } +- - { id: 1, class: gpr } +- - { id: 2, class: fpr } +- +-# CHECK: body: +-# CHECK: bb.1: +-# CHECK: %2:fpr32 = PHI %0, %bb.0, %2, %bb.1 +- +-body: | +- bb.0: +- liveins: $s0, $w0 +- successors: %bb.1 +- %0(s32) = COPY $s0 +- %3:gpr(s32) = COPY $w0 +- %1(s1) = G_TRUNC %3 +- +- bb.1: +- successors: %bb.1, %bb.2 +- %2(s32) = PHI %0, %bb.0, %2, %bb.1 +- G_BRCOND %1, %bb.1 +- +- bb.2: +- $s0 = COPY %2 +- RET_ReallyLR implicit $s0 +-... +- +---- +-# CHECK-LABEL: name: select +-name: select +-legalized: true +-regBankSelected: true +-tracksRegLiveness: true +- +-# CHECK: registers: +-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 3, class: gpr32, preferred-register: '' } +-# CHECK-NEXT: - { id: 4, class: gpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 5, class: gpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 6, class: gpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 7, class: gpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 8, class: gpr64, preferred-register: '' } +-# CHECK-NEXT: - { id: 9, class: gpr64, preferred-register: '' } +-registers: +- - { id: 0, class: gpr } +- - { id: 1, class: gpr } +- - { id: 2, class: gpr } +- - { id: 3, class: gpr } +- - { id: 4, class: gpr } +- - { id: 5, class: gpr } +- - { id: 6, class: gpr } +- - { id: 7, class: gpr } +- - { id: 8, class: gpr } +- - { id: 9, class: gpr } +- +-# CHECK: body: +-# CHECK: $wzr = ANDSWri %10, 0, implicit-def $nzcv +-# CHECK: %3:gpr32 = CSELWr %1, %2, 1, implicit $nzcv +-# CHECK: $wzr = ANDSWri %10, 0, implicit-def $nzcv +-# CHECK: %6:gpr64 = CSELXr %4, %5, 1, implicit $nzcv +-# CHECK: $wzr = ANDSWri %10, 0, implicit-def $nzcv +-# CHECK: %9:gpr64 = CSELXr %7, %8, 1, implicit $nzcv +-body: | +- bb.0: +- liveins: $w0, $w1, $w2 +- %10:gpr(s32) = COPY $w0 +- %0(s1) = G_TRUNC %10 +- +- %1(s32) = COPY $w1 +- %2(s32) = COPY $w2 +- %3(s32) = G_SELECT %0, %1, %2 +- $w0 = COPY %3(s32) +- +- %4(s64) = COPY $x0 +- %5(s64) = COPY $x1 +- %6(s64) = G_SELECT %0, %4, %5 +- $x0 = COPY %6(s64) +- +- %7(p0) = COPY $x0 +- %8(p0) = COPY $x1 +- %9(p0) = G_SELECT %0, %7, %8 +- $x0 = COPY %9(p0) +-... +-- +2.25.1 + diff --git a/deps/patches/llvm-11-D97571-AArch64-loh.patch b/deps/patches/llvm-11-D97571-AArch64-loh.patch new file mode 100644 index 0000000000000..352a9504652a2 --- /dev/null +++ b/deps/patches/llvm-11-D97571-AArch64-loh.patch @@ -0,0 +1,101 @@ +From 84eff6b2defb7f2d847d5bac165d6a44472b9ddf Mon Sep 17 00:00:00 2001 +From: Keno Fischer +Date: Mon, 1 Mar 2021 16:38:19 -0500 +Subject: [PATCH 2/4] [AArch64] Fix emitting an AdrpAddLdr LOH when there's a + potential clobber of the def of the adrp before the ldr. + +Apparently this pass used to have liveness analysis but it was removed for scompile time reasons. This workaround prevents the LOH from being emitted unless the ADD and LDR are adjacent. + +Fixes https://github.com/JuliaLang/julia/issues/39820 + +Reviewed By: loladiro, qcolombet + +Differential Revision: https://reviews.llvm.org/D97571 +--- + llvm/lib/Target/AArch64/AArch64CollectLOH.cpp | 26 +++++++++++++++- + .../AArch64/loh-adrp-add-ldr-clobber.mir | 30 +++++++++++++++++++ + 2 files changed, 55 insertions(+), 1 deletion(-) + create mode 100644 llvm/test/CodeGen/AArch64/loh-adrp-add-ldr-clobber.mir + +diff --git a/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp b/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp +index efdb1131abc9..ac243347b24d 100644 +--- a/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp ++++ b/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp +@@ -419,13 +419,37 @@ static void handleADRP(const MachineInstr &MI, AArch64FunctionInfo &AFI, + ++NumADRPToLDR; + } + break; +- case MCLOH_AdrpAddLdr: ++ case MCLOH_AdrpAddLdr: { ++ // There is a possibility that the linker may try to rewrite: ++ // adrp x0, @sym@PAGE ++ // add x1, x0, @sym@PAGEOFF ++ // [x0 = some other def] ++ // ldr x2, [x1] ++ // ...into... ++ // adrp x0, @sym ++ // nop ++ // [x0 = some other def] ++ // ldr x2, [x0] ++ // ...if the offset to the symbol won't fit within a literal load. ++ // This causes the load to use the result of the adrp, which in this ++ // case has already been clobbered. ++ // FIXME: Implement proper liveness tracking for all registers. For now, ++ // don't emit the LOH if there are any instructions between the add and ++ // the ldr. ++ MachineInstr *AddMI = const_cast(Info.MI1); ++ const MachineInstr *LdrMI = Info.MI0; ++ auto AddIt = MachineBasicBlock::iterator(AddMI); ++ auto EndIt = AddMI->getParent()->end(); ++ if (AddMI->getIterator() == EndIt || LdrMI != &*next_nodbg(AddIt, EndIt)) ++ break; ++ + LLVM_DEBUG(dbgs() << "Adding MCLOH_AdrpAddLdr:\n" + << '\t' << MI << '\t' << *Info.MI1 << '\t' + << *Info.MI0); + AFI.addLOHDirective(MCLOH_AdrpAddLdr, {&MI, Info.MI1, Info.MI0}); + ++NumADDToLDR; + break; ++ } + case MCLOH_AdrpAddStr: + if (Info.MI1 != nullptr) { + LLVM_DEBUG(dbgs() << "Adding MCLOH_AdrpAddStr:\n" +diff --git a/llvm/test/CodeGen/AArch64/loh-adrp-add-ldr-clobber.mir b/llvm/test/CodeGen/AArch64/loh-adrp-add-ldr-clobber.mir +new file mode 100644 +index 000000000000..e1e893c6383a +--- /dev/null ++++ b/llvm/test/CodeGen/AArch64/loh-adrp-add-ldr-clobber.mir +@@ -0,0 +1,30 @@ ++# RUN: llc -o /dev/null %s -mtriple=aarch64-apple-ios -run-pass=aarch64-collect-loh -debug-only=aarch64-collect-loh 2>&1 | FileCheck %s ++--- | ++ @sym2 = local_unnamed_addr global [10000000 x i32] zeroinitializer, align 8 ++ @sym = local_unnamed_addr global i32 zeroinitializer, align 8 ++ ++ define i32 @main() { ++ ret i32 0 ++ } ++ ++... ++--- ++name: main ++alignment: 4 ++tracksRegLiveness: true ++liveins: ++ - { reg: '$x22', virtual-reg: '' } ++ - { reg: '$x21', virtual-reg: '' } ++body: | ++ bb.0: ++ liveins: $x21, $x22 ++ ; Check we don't emit an loh here because there's a clobbering def of x8 before the ldr. ++ ; CHECK-LABEL: main ++ ; CHECK-NOT: MCLOH_AdrpAddLdr ++ renamable $x8 = ADRP target-flags(aarch64-page) @sym ++ renamable $x9 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @sym, 0 ++ renamable $x8 = ADDXri killed renamable $x22, 1, 0 ++ $x9 = LDRXui $x9, 0 ++ RET undef $lr ++ ++... +-- +2.25.1 + diff --git a/deps/patches/llvm-11-aarch64-addrspace.patch b/deps/patches/llvm-11-aarch64-addrspace.patch new file mode 100644 index 0000000000000..f046a5000ede4 --- /dev/null +++ b/deps/patches/llvm-11-aarch64-addrspace.patch @@ -0,0 +1,31 @@ +From a1178fdd072b7addcf56c2f6e2298165263040bb Mon Sep 17 00:00:00 2001 +From: Tim Northover +Date: Thu, 25 Feb 2021 10:13:59 +0000 +Subject: [PATCH 3/4] AArch64: relax address-space assertion in FastISel. + +Some people are using alternative address spaces to track GC data, but +otherwise they behave exactly the same. This is the only place in the backend +we even try to care about it so it's really not achieving anything. +--- + llvm/lib/Target/AArch64/AArch64FastISel.cpp | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/llvm/lib/Target/AArch64/AArch64FastISel.cpp b/llvm/lib/Target/AArch64/AArch64FastISel.cpp +index 0f63f4ca62e5..cf3ebed6ef19 100644 +--- a/llvm/lib/Target/AArch64/AArch64FastISel.cpp ++++ b/llvm/lib/Target/AArch64/AArch64FastISel.cpp +@@ -526,10 +526,7 @@ unsigned AArch64FastISel::fastMaterializeConstant(const Constant *C) { + MVT VT = CEVT.getSimpleVT(); + // arm64_32 has 32-bit pointers held in 64-bit registers. Because of that, + // 'null' pointers need to have a somewhat special treatment. +- if (const auto *CPN = dyn_cast(C)) { +- (void)CPN; +- assert(CPN->getType()->getPointerAddressSpace() == 0 && +- "Unexpected address space"); ++ if (isa(C)) { + assert(VT == MVT::i64 && "Expected 64-bit pointers"); + return materializeInt(ConstantInt::get(Type::getInt64Ty(*Context), 0), VT); + } +-- +2.25.1 + diff --git a/stdlib/libLLVM_jll/Project.toml b/stdlib/libLLVM_jll/Project.toml index c572b5c60c25e..6954f96dff80c 100644 --- a/stdlib/libLLVM_jll/Project.toml +++ b/stdlib/libLLVM_jll/Project.toml @@ -1,6 +1,6 @@ name = "libLLVM_jll" uuid = "8f36deef-c2a5-5394-99ed-8e07531fb29a" -version = "11.0.1+2" +version = "11.0.1+3" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" From 9c7e701cace1f6d18606e459b6d43bac43934a18 Mon Sep 17 00:00:00 2001 From: Phillip Alday Date: Fri, 26 Mar 2021 09:25:45 +0000 Subject: [PATCH 08/37] Remove eltype assumption from ldiv!(LowerTriangular(SparseMatrixCSC{Tv,Ti), ...) (#40174) (cherry picked from commit beeb6d776678000c32cd3992d0bc4a65fe1aa5e3) --- stdlib/SparseArrays/src/linalg.jl | 4 ++-- stdlib/SparseArrays/test/sparsevector.jl | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/stdlib/SparseArrays/src/linalg.jl b/stdlib/SparseArrays/src/linalg.jl index c6852382b5406..0ac2806b77a04 100644 --- a/stdlib/SparseArrays/src/linalg.jl +++ b/stdlib/SparseArrays/src/linalg.jl @@ -646,7 +646,7 @@ function _ldiv!(L::LowerTriangularPlain, B::StridedVecOrMat) for k = 1:ncolB for j = 1:nrowB i1 = ia[j] - i2 = ia[j + 1] - 1 + i2 = ia[j + 1] - one(eltype(ia)) # find diagonal element ii = searchsortedfirst(ja, j, i1, i2, Base.Order.Forward) @@ -688,7 +688,7 @@ function _ldiv!(U::UpperTriangularPlain, B::StridedVecOrMat) for k = 1:ncolB for j = nrowB:-1:1 i1 = ia[j] - i2 = ia[j + 1] - 1 + i2 = ia[j + 1] - one(eltype(ia)) # find diagonal element ii = searchsortedlast(ja, j, i1, i2, Base.Order.Forward) diff --git a/stdlib/SparseArrays/test/sparsevector.jl b/stdlib/SparseArrays/test/sparsevector.jl index 602818678908b..79c952620050c 100644 --- a/stdlib/SparseArrays/test/sparsevector.jl +++ b/stdlib/SparseArrays/test/sparsevector.jl @@ -1050,6 +1050,10 @@ end @test y == Af'x2f end end + @testset "ldiv with different element types (#40171)" begin + sA = sparse(Int16.(1:4), Int16.(1:4), ones(4)) + @test all(ldiv!(LowerTriangular(sA), ones(4)) .≈ 1.) + end @testset "ldiv ops with triangular matrices and sparse vecs (#14005)" begin m = 10 sparsefloatvecs = SparseVector[sprand(m, 0.4) for k in 1:3] From 270c982936f96854b2e80a7b78065b4e392985a0 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Mon, 29 Mar 2021 16:29:47 +0200 Subject: [PATCH 09/37] Fix a small bug in the TOML parser and add an example of printing to a file (#40208) fix the TOML parser to parse 0e-3 and add an example of writing to a file (cherry picked from commit 2ec75d65ce13651f42f59456568aefe30901b9c6) --- base/toml_parser.jl | 2 -- stdlib/TOML/docs/src/index.md | 13 +++++++++++-- stdlib/TOML/test/values.jl | 5 +++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/base/toml_parser.jl b/base/toml_parser.jl index c69096504df0b..956c62196d6b8 100644 --- a/base/toml_parser.jl +++ b/base/toml_parser.jl @@ -821,8 +821,6 @@ function parse_number_or_date_start(l::Parser) ate && return parse_int(l, contains_underscore) elseif accept(l, isdigit) return parse_local_time(l) - elseif peek(l) !== '.' - return ParserError(ErrLeadingZeroNotAllowedInteger) end end diff --git a/stdlib/TOML/docs/src/index.md b/stdlib/TOML/docs/src/index.md index e34bb8d85f2f1..36e8ec6248108 100644 --- a/stdlib/TOML/docs/src/index.md +++ b/stdlib/TOML/docs/src/index.md @@ -65,8 +65,6 @@ format. ```jldoctest julia> using TOML -julia> fname = tempname(); - julia> data = Dict( "names" => ["Julia", "Julio"], "age" => [10, 20], @@ -75,6 +73,17 @@ julia> data = Dict( julia> TOML.print(data) names = ["Julia", "Julio"] age = [10, 20] + +julia> fname = tempname(); + +julia> open(fname, "w") do io + TOML.print(io, data) + end + +julia> TOML.parsefile(fname) +Dict{String, Any} with 2 entries: + "names" => ["Julia", "Julio"] + "age" => [10, 20] ``` Keys can be sorted according to some value diff --git a/stdlib/TOML/test/values.jl b/stdlib/TOML/test/values.jl index 9f09e26b01cda..8337bb5a54714 100644 --- a/stdlib/TOML/test/values.jl +++ b/stdlib/TOML/test/values.jl @@ -39,6 +39,7 @@ end @test testval("1.0e0" , 1.0) @test testval("1.0e+0" , 1.0) @test testval("1.0e-0" , 1.0) + @test testval("0e-3" , 0.0) @test testval("1.001e-0" , 1.001) @test testval("2e10" , 2e10) @test testval("2e+10" , 2e10) @@ -53,8 +54,8 @@ end @test testval("+1_000" , 1000 |> Int64) @test testval("-1_000" , -1000 |> Int64) - @test failval("0_" , Internals.ErrLeadingZeroNotAllowedInteger) - @test failval("0__0" , Internals.ErrLeadingZeroNotAllowedInteger) + @test failval("0_" , Internals.ErrUnderscoreNotSurroundedByDigits) + @test failval("0__0" , Internals.ErrUnderscoreNotSurroundedByDigits) @test failval("__0" , Internals.ErrUnexpectedStartOfValue) @test failval("1_0_" , Internals.ErrTrailingUnderscoreNumber) @test failval("1_0__0" , Internals.ErrUnderscoreNotSurroundedByDigits) From fb4a4891cdc2b3ac65cf2fd6f224c3f4ae7e2f6c Mon Sep 17 00:00:00 2001 From: Curtis Vogt Date: Mon, 29 Mar 2021 16:33:05 -0500 Subject: [PATCH 10/37] Fix issue where approved credentials were not sent to git credential helpers (#40161) Due to the bug in the `GitCredential` constructor we were never writing credential data to the credential helper effectively making our use of git credential helpers read-only. (cherry picked from commit ac50ac6058caa97c047c1751ca9cbbe0c1ceea2a) --- stdlib/LibGit2/src/gitcredential.jl | 7 +++- stdlib/LibGit2/test/libgit2.jl | 61 +++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/stdlib/LibGit2/src/gitcredential.jl b/stdlib/LibGit2/src/gitcredential.jl index 0a442337531a7..1b97c29cd933e 100644 --- a/stdlib/LibGit2/src/gitcredential.jl +++ b/stdlib/LibGit2/src/gitcredential.jl @@ -30,7 +30,12 @@ function GitCredential(cfg::GitConfig, url::AbstractString) fill!(cfg, parse(GitCredential, url)) end -GitCredential(cred::UserPasswordCredential, url::AbstractString) = parse(GitCredential, url) +function GitCredential(user_pass_cred::UserPasswordCredential, url::AbstractString) + cred = parse(GitCredential, url) + cred.username = user_pass_cred.user + cred.password = deepcopy(user_pass_cred.pass) + return cred +end Base.:(==)(c1::GitCredential, c2::GitCredential) = (c1.protocol, c1.host, c1.path, c1.username, c1.password, c1.use_http_path) == (c2.protocol, c2.host, c2.path, c2.username, c2.password, c2.use_http_path) diff --git a/stdlib/LibGit2/test/libgit2.jl b/stdlib/LibGit2/test/libgit2.jl index bc678b2dc7160..f39c0a0e3b27a 100644 --- a/stdlib/LibGit2/test/libgit2.jl +++ b/stdlib/LibGit2/test/libgit2.jl @@ -600,6 +600,23 @@ end github_regex_test("ssh://git@github.com/$user/$repo", user, repo) @test !occursin(LibGit2.GITHUB_REGEX, "git@notgithub.com/$user/$repo.git") end + + @testset "UserPasswordCredential/url constructor" begin + user_pass_cred = LibGit2.UserPasswordCredential("user", "*******") + url = "https://github.com" + expected_cred = LibGit2.GitCredential("https", "github.com", nothing, "user", "*******") + + cred = LibGit2.GitCredential(user_pass_cred, url) + @test cred == expected_cred + + # Shredding the UserPasswordCredential shouldn't result in information being lost + # inside of a GitCredential. + Base.shred!(user_pass_cred) + @test cred == expected_cred + + Base.shred!(cred) + Base.shred!(expected_cred) + end end mktempdir() do dir @@ -2121,6 +2138,50 @@ mktempdir() do dir end end end + + @testset "approve/reject with UserPasswordCredential" begin + # In order to use the "store" credential helper `git` needs to be installed and + # on the path. + if GIT_INSTALLED + config_path = joinpath(dir, config_file) + isfile(config_path) && rm(config_path) + + credential_path = joinpath(dir, ".git-credentials") + isfile(credential_path) && rm(credential_path) + + LibGit2.with(LibGit2.GitConfig(config_path, LibGit2.Consts.CONFIG_LEVEL_APP)) do cfg + query = LibGit2.GitCredential("https", "mygithost") + filled = LibGit2.GitCredential("https", "mygithost", nothing, "alice", "1234") + user_pass_cred = LibGit2.UserPasswordCredential("alice", "1234") + url = "https://mygithost" + + # Requires `git` to be installed and available on the path. + LibGit2.set!(cfg, "credential.helper", "store --file \"$credential_path\"") + helper = only(LibGit2.credential_helpers(cfg, query)) + + @test !isfile(credential_path) + + Base.shred!(LibGit2.fill!(helper, deepcopy(query))) do result + @test result == query + end + + LibGit2.approve(cfg, user_pass_cred, url) + @test isfile(credential_path) + Base.shred!(LibGit2.fill!(helper, deepcopy(query))) do result + @test result == filled + end + + LibGit2.reject(cfg, user_pass_cred, url) + Base.shred!(LibGit2.fill!(helper, deepcopy(query))) do result + @test result == query + end + + Base.shred!(query) + Base.shred!(filled) + Base.shred!(user_pass_cred) + end + end + end end # The following tests require that we can fake a TTY so that we can provide passwords From 8a4b9e2aca3d3771e78f73c2e8b221f4d8f55de9 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Tue, 30 Mar 2021 14:19:47 +0200 Subject: [PATCH 11/37] fix markdown list rendering (#40203) (cherry picked from commit 0f828a2acc497f0c26965956a57cfa9ea69cdd09) --- .../Markdown/src/render/terminal/formatting.jl | 18 ++++++++---------- stdlib/Markdown/test/runtests.jl | 8 ++++++++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/stdlib/Markdown/src/render/terminal/formatting.jl b/stdlib/Markdown/src/render/terminal/formatting.jl index bacd82f7ed021..87022124b9c8a 100644 --- a/stdlib/Markdown/src/render/terminal/formatting.jl +++ b/stdlib/Markdown/src/render/terminal/formatting.jl @@ -9,8 +9,9 @@ end words(s) = split(s, " ") lines(s) = split(s, "\n") -function wrapped_lines!(lines, io::IO, s::AbstractString, width, i) +function wrapped_line(io::IO, s::AbstractString, width, i) ws = words(s) + lines = String[] for word in ws word_length = ansi_length(word) word_length == 0 && continue @@ -22,19 +23,16 @@ function wrapped_lines!(lines, io::IO, s::AbstractString, width, i) lines[end] *= " " * word # this could be more efficient end end - return i + return i, lines end function wrapped_lines(io::IO, s::AbstractString; width = 80, i = 0) - lines = AbstractString[] - if occursin(r"\n", s) - for ss in split(s, "\n") - i = wrapped_lines!(lines, io, ss, width, i) - end - else - wrapped_lines!(lines, io, s, width, i) + ls = String[] + for ss in lines(s) + i, line = wrapped_line(io, ss, width, i) + append!(ls, line) end - return lines + return ls end wrapped_lines(io::IO, f::Function, args...; width = 80, i = 0) = diff --git a/stdlib/Markdown/test/runtests.jl b/stdlib/Markdown/test/runtests.jl index f9983d10089f9..f90eefb85310e 100644 --- a/stdlib/Markdown/test/runtests.jl +++ b/stdlib/Markdown/test/runtests.jl @@ -1222,3 +1222,11 @@ end """) end +@testset "issue #37232: linebreaks" begin + s = @md_str """ + Misc:\\ + - line\\ + """ + @test sprint(show, MIME("text/plain"), s) == " Misc:\n - line" +end + From cffcbecb0964186cdebdd75bf0843b7a866dc473 Mon Sep 17 00:00:00 2001 From: Michael Abbott <32575566+mcabbott@users.noreply.github.com> Date: Tue, 30 Mar 2021 14:44:02 -0400 Subject: [PATCH 12/37] make some constructors bold in stacktraces (#40264) (cherry picked from commit 42766ace9af350fd51cd33d0890fe6bb66a1638b) --- base/show.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/show.jl b/base/show.jl index da50172109846..2c6ef87a79a78 100644 --- a/base/show.jl +++ b/base/show.jl @@ -2195,7 +2195,7 @@ function show_signature_function(io::IO, @nospecialize(ft), demangle=false, farg uwf = unwrap_unionall(f) parens = isa(f, UnionAll) && !(isa(uwf, DataType) && f === uwf.name.wrapper) parens && print(io, "(") - show(io, f) + print_within_stacktrace(io, f, bold=true) parens && print(io, ")") else if html From 53748f894a4e7e352ea4f0b42342810e28885fab Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Wed, 31 Mar 2021 14:00:55 -0400 Subject: [PATCH 13/37] Add aliasscope expr to interpreter (#40275) (cherry picked from commit 8868d3fb15eed14de477c9d77b24e40e05219c07) --- src/interpreter.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/interpreter.c b/src/interpreter.c index ba97321a922ee..fae9d11c71d74 100644 --- a/src/interpreter.c +++ b/src/interpreter.c @@ -289,7 +289,8 @@ static jl_value_t *eval_value(jl_value_t *e, interpreter_state *s) else if (head == boundscheck_sym) { return jl_true; } - else if (head == meta_sym || head == coverageeffect_sym || head == inbounds_sym || head == loopinfo_sym) { + else if (head == meta_sym || head == coverageeffect_sym || head == inbounds_sym || head == loopinfo_sym || + head == aliasscope_sym || head == popaliasscope_sym) { return jl_nothing; } else if (head == gc_preserve_begin_sym || head == gc_preserve_end_sym) { From 295e41e3ac8808b7b714b516a62ef62e494749dc Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Thu, 1 Apr 2021 15:01:16 +0200 Subject: [PATCH 14/37] add a missing propagate_inbounds to a getindex method (#40281) * add a missing propagate_inbounds (cherry picked from commit 80002db74c88fae5803688e930cd77ce0567c355) --- base/abstractarray.jl | 2 +- test/boundscheck_exec.jl | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/base/abstractarray.jl b/base/abstractarray.jl index b60c1f20e9069..4974c19dfcfee 100644 --- a/base/abstractarray.jl +++ b/base/abstractarray.jl @@ -1170,7 +1170,7 @@ function getindex(A::AbstractArray, I...) _getindex(IndexStyle(A), A, to_indices(A, I)...) end # To avoid invalidations from multidimensional.jl: getindex(A::Array, i1::Union{Integer, CartesianIndex}, I::Union{Integer, CartesianIndex}...) -getindex(A::Array, i1::Integer, I::Integer...) = A[to_indices(A, (i1, I...))...] +@propagate_inbounds getindex(A::Array, i1::Integer, I::Integer...) = A[to_indices(A, (i1, I...))...] function unsafe_getindex(A::AbstractArray, I...) @_inline_meta diff --git a/test/boundscheck_exec.jl b/test/boundscheck_exec.jl index 62a20921bd44e..e1a7029334a3d 100644 --- a/test/boundscheck_exec.jl +++ b/test/boundscheck_exec.jl @@ -251,5 +251,12 @@ if bc_opt == bc_default || bc_opt == bc_off @test occursin("vector.body", sprint(code_llvm, g27079, Tuple{Vector{Int}})) end +# Boundschecking removal of indices with different type, see #40281 +getindex_40281(v, a, b, c) = @inbounds getindex(v, a, b, c) +typed_40281 = sprint((io, args...) -> code_warntype(io, args...; optimize=true), getindex_40281, Tuple{Array{Float64, 3}, Int, UInt8, Int}) +if bc_opt == bc_default || bc_opt == bc_off + @test occursin("arrayref(false", typed_40281) + @test !occursin("arrayref(true", typed_40281) +end end From 5250207ebfa1a40e52ad6a620579aa8d9852f62b Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Thu, 1 Apr 2021 23:24:48 -0400 Subject: [PATCH 15/37] replace broken replaceuserpath function with existing contractuser one (#40274) Fixes #39674 (cherry picked from commit d07b5a134632d26bdbadde1b0352d2de8aae2906) --- base/errorshow.jl | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/base/errorshow.jl b/base/errorshow.jl index 0ef1234e4d616..49fe9680e180d 100644 --- a/base/errorshow.jl +++ b/base/errorshow.jl @@ -555,13 +555,6 @@ end # replace `sf` as needed. const update_stackframes_callback = Ref{Function}(identity) -function replaceuserpath(str) - str = replace(str, homedir() => "~") - # seems to be necessary for some paths with small letter drive c:// etc - str = replace(str, lowercasefirst(homedir()) => "~") - return str -end - const STACKTRACE_MODULECOLORS = [:magenta, :cyan, :green, :yellow] const STACKTRACE_FIXEDCOLORS = IdDict(Base => :light_black, Core => :light_black) @@ -701,7 +694,7 @@ end function print_stackframe(io, i, frame::StackFrame, n::Int, digit_align_width, modulecolor) file, line = string(frame.file), frame.line stacktrace_expand_basepaths() && (file = something(find_source_file(file), file)) - stacktrace_contract_userdir() && (file = replaceuserpath(file)) + stacktrace_contract_userdir() && (file = contractuser(file)) # Used by the REPL to make it possible to open # the location of a stackframe/method in the editor. From bef3e1a38377854cff6c3256f83e0d70ab330897 Mon Sep 17 00:00:00 2001 From: Jacob Quinn Date: Fri, 2 Apr 2021 12:12:56 -0600 Subject: [PATCH 16/37] Fix rounding cases for fixed-width printing in ryu routines Fixes #40303. When printing values to fixed widths through the `Ryu.writefixed` or `Ryu.writeexp` routines, we have a "cleanup" section after a value has been printed to see if it needs to be rounded given the input precision and width. The core issue was the terminating condition: it previously only checked if we were at the start of a buffer or had encountered the `'-'` character. Via Printf formatting, however, it also allows specifying the `'+'` and `' '` characters to preceed a formatted number. Hence, in the OP, the `'1'` character was getting "rounded" up to the `','` character. The fix here is correctly checking if the `plus` or `space` options were passed to the routine and if so, include those in our rounding termination check. The original issue only reported the "plus" case for the `f` format specifier, but the same bug affects the `e` format specifier and the "space" option. (cherry picked from commit fcf6779b1ec119b7a3686d08dfba7ba0acfd3f93) --- base/ryu/exp.jl | 2 +- base/ryu/fixed.jl | 2 +- stdlib/Printf/test/runtests.jl | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/base/ryu/exp.jl b/base/ryu/exp.jl index cf1fe23105b8c..6356206971f8b 100644 --- a/base/ryu/exp.jl +++ b/base/ryu/exp.jl @@ -213,7 +213,7 @@ roundPos = pos while true roundPos -= 1 - if roundPos == (startpos - 1) || buf[roundPos] == UInt8('-') + if roundPos == (startpos - 1) || buf[roundPos] == UInt8('-') || (plus && buf[roundPos] == UInt8('+')) || (space && buf[roundPos] == UInt8(' ')) buf[roundPos + 1] = UInt8('1') e += 1 break diff --git a/base/ryu/fixed.jl b/base/ryu/fixed.jl index 4be1b3741832e..14713111a95a1 100644 --- a/base/ryu/fixed.jl +++ b/base/ryu/fixed.jl @@ -166,7 +166,7 @@ dotPos = 1 while true roundPos -= 1 - if roundPos == (startpos - 1) || (buf[roundPos] == UInt8('-')) + if roundPos == (startpos - 1) || (buf[roundPos] == UInt8('-')) || (plus && buf[roundPos] == UInt8('+')) || (space && buf[roundPos] == UInt8(' ')) buf[roundPos + 1] = UInt8('1') if dotPos > 1 buf[dotPos] = UInt8('0') diff --git a/stdlib/Printf/test/runtests.jl b/stdlib/Printf/test/runtests.jl index d38c90734d4f1..c74739d66ba51 100644 --- a/stdlib/Printf/test/runtests.jl +++ b/stdlib/Printf/test/runtests.jl @@ -141,6 +141,10 @@ end @test Printf.@sprintf("%+ 09.1f", 1.234) == "+000001.2" @test Printf.@sprintf("%+ 09.0f", 1.234) == "+00000001" @test Printf.@sprintf("%+ #09.0f", 1.234) == "+0000001." + + #40303 + @test Printf.@sprintf("%+7.1f", 9.96) == " +10.0" + @test Printf.@sprintf("% 7.1f", 9.96) == " 10.0" end @testset "%e" begin @@ -202,6 +206,10 @@ end @test Printf.@sprintf("%+ 09.1e", 1.234) == "+01.2e+00" @test Printf.@sprintf("%+ 09.0e", 1.234) == "+0001e+00" @test Printf.@sprintf("%+ #09.0e", 1.234) == "+001.e+00" + + #40303 + @test Printf.@sprintf("%+9.1e", 9.96) == " +1.0e+01" + @test Printf.@sprintf("% 9.1e", 9.96) == " 1.0e+01" end @testset "strings" begin From 62e7cf4e437846103b4640b9f8692641254a87a3 Mon Sep 17 00:00:00 2001 From: Mustafa M Date: Sun, 4 Apr 2021 05:54:36 -0400 Subject: [PATCH 17/37] Fix relpath when path and startpath are in the same drive (#40323) * Fix relpath when path and startpath are in the same drive When startpath == ".", assume the startpath is in the same drive. This subsequently required tweaking the existing logic to then canonicalize the drive casing in instances where the drive casing differs. (cherry picked from commit 89fff18d590db9be84598e0045003b903d48d2df) --- base/path.jl | 14 +++++++++----- test/path.jl | 4 ++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/base/path.jl b/base/path.jl index d6566f209dd0c..91386cb562d56 100644 --- a/base/path.jl +++ b/base/path.jl @@ -514,12 +514,16 @@ function relpath(path::String, startpath::String = ".") curdir = "." pardir = ".." path == startpath && return curdir - path_drive, path_without_drive = splitdrive(path) - startpath_drive, startpath_without_drive = splitdrive(startpath) - path_arr = split(abspath(path_without_drive), path_separator_re) - start_arr = split(abspath(startpath_without_drive), path_separator_re) if Sys.iswindows() - lowercase(path_drive) != lowercase(startpath_drive) && return abspath(path) + path_drive, path_without_drive = splitdrive(path) + startpath_drive, startpath_without_drive = splitdrive(startpath) + isempty(startpath_drive) && (startpath_drive = path_drive) # by default assume same as path drive + uppercase(path_drive) == uppercase(startpath_drive) || return abspath(path) # if drives differ return first path + path_arr = split(abspath(path_drive * path_without_drive), path_separator_re) + start_arr = split(abspath(path_drive * startpath_without_drive), path_separator_re) + else + path_arr = split(abspath(path), path_separator_re) + start_arr = split(abspath(startpath), path_separator_re) end i = 0 while i < min(length(path_arr), length(start_arr)) diff --git a/test/path.jl b/test/path.jl index ca772e24d41de..e263b7c7db917 100644 --- a/test/path.jl +++ b/test/path.jl @@ -290,6 +290,10 @@ # Additional cases @test_throws ArgumentError relpath(S("$(sep)home$(sep)user$(sep)dir_withendsep$(sep)"), "") @test_throws ArgumentError relpath(S(""), S("$(sep)home$(sep)user$(sep)dir_withendsep$(sep)")) + + # issue 40237 + path = "..$(sep)a$(sep)b$(sep)c" + @test relpath(abspath(path)) == path end test_relpath() end From d080d85e8611f35aa8df3725f0770b5dd9ce879a Mon Sep 17 00:00:00 2001 From: Simeon Schaub Date: Wed, 31 Mar 2021 18:30:39 +0200 Subject: [PATCH 18/37] exempt begin and underscore from macro hygiene (#40280) (cherry picked from commit a52b43d04e7e5044d78858d7e8a374b1f181f138) --- src/macroexpand.scm | 2 +- test/syntax.jl | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/macroexpand.scm b/src/macroexpand.scm index 882fe88a2e648..a0f05a3af687a 100644 --- a/src/macroexpand.scm +++ b/src/macroexpand.scm @@ -324,7 +324,7 @@ m parent-scope inarg)) (define (resolve-expansion-vars- e env m parent-scope inarg) - (cond ((or (eq? e 'end) (eq? e 'ccall) (eq? e 'cglobal)) + (cond ((or (eq? e 'begin) (eq? e 'end) (eq? e 'ccall) (eq? e 'cglobal) (underscore-symbol? e)) e) ((symbol? e) (let ((a (assq e env))) diff --git a/test/syntax.jl b/test/syntax.jl index eb113ed4da2c5..1d6193b2f2634 100644 --- a/test/syntax.jl +++ b/test/syntax.jl @@ -2674,3 +2674,15 @@ end == 4 @test ncalls_in_lowered(:(.!(1 .< A .< 2)), GlobalRef(Base, :materialize)) == 1 @test ncalls_in_lowered(:((.!)(1 .< A .< 2)), GlobalRef(Base, :materialize)) == 1 end + +macro m_underscore_hygiene() + return :(_ = 1) +end + +@test @macroexpand(@m_underscore_hygiene()) == :(_ = 1) + +macro m_begin_hygiene(a) + return :($(esc(a))[begin]) +end + +@test @m_begin_hygiene([1, 2, 3]) == 1 From 9e996e7075f79710de5e14cb3d90d793bcc898a3 Mon Sep 17 00:00:00 2001 From: Simeon Schaub Date: Sat, 3 Apr 2021 04:43:39 +0200 Subject: [PATCH 19/37] fix macro hygiene for `@nospecialize(::T)` (#40293) (cherry picked from commit 73aa7e4df5775dce521615a0da5c09e1735a3cd2) --- src/macroexpand.scm | 3 ++- test/syntax.jl | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/macroexpand.scm b/src/macroexpand.scm index a0f05a3af687a..5e55c7bbb29c1 100644 --- a/src/macroexpand.scm +++ b/src/macroexpand.scm @@ -210,7 +210,8 @@ ((atom? v) '()) (else (case (car v) - ((... kw |::| =) (try-arg-name (cadr v))) + ((|::|) (if (length= v 2) '() (try-arg-name (cadr v)))) + ((... kw =) (try-arg-name (cadr v))) ((escape) (list v)) ((hygienic-scope) (try-arg-name (cadr v))) ((meta) ;; allow certain per-argument annotations diff --git a/test/syntax.jl b/test/syntax.jl index 1d6193b2f2634..76e15c78b2750 100644 --- a/test/syntax.jl +++ b/test/syntax.jl @@ -2686,3 +2686,9 @@ macro m_begin_hygiene(a) end @test @m_begin_hygiene([1, 2, 3]) == 1 + +macro m_nospecialize_unnamed_hygiene() + return :(f(@nospecialize(::Any)) = Any) +end + +@test @m_nospecialize_unnamed_hygiene()(1) === Any From dc387d5a8488fca0f5be952a2f115e2dbb7ebb42 Mon Sep 17 00:00:00 2001 From: Curtis Vogt Date: Mon, 25 Jan 2021 10:13:29 -0600 Subject: [PATCH 20/37] Update PCRE2 to 10.36 (#39310) (cherry picked from commit c889de7eb80d42f745652da84b99c127a581d0ff) --- deps/Versions.make | 2 +- deps/checksums/pcre | 64 ++--- deps/patches/pcre2-cet-flags.patch | 229 ---------------- .../pcre2-sljit-apple-silicon-support.patch | 244 ++++++++++++++++++ deps/pcre.mk | 12 +- stdlib/PCRE2_jll/Project.toml | 2 +- stdlib/PCRE2_jll/test/runtests.jl | 2 +- 7 files changed, 284 insertions(+), 271 deletions(-) delete mode 100644 deps/patches/pcre2-cet-flags.patch create mode 100644 deps/patches/pcre2-sljit-apple-silicon-support.patch diff --git a/deps/Versions.make b/deps/Versions.make index 1bae363ad8299..09fd082cc3e4f 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -91,7 +91,7 @@ P7ZIP_VER := 16.2.0 P7ZIP_JLL_NAME := p7zip # PCRE -PCRE_VER := 10.35 +PCRE_VER := 10.36 PCRE_JLL_NAME := PCRE2 # SuiteSparse diff --git a/deps/checksums/pcre b/deps/checksums/pcre index f89546fb71df4..421426e3d2389 100644 --- a/deps/checksums/pcre +++ b/deps/checksums/pcre @@ -1,32 +1,32 @@ -PCRE2.v10.35.0+0.aarch64-apple-darwin.tar.gz/md5/4c604a93fd5a1343ba0cd907655c2f7b -PCRE2.v10.35.0+0.aarch64-apple-darwin.tar.gz/sha512/9aeadea7c685cafe226d9e0059a1443e7ba408ced7689723d63851a05796da2bffaf2e8b469da16f569229d70515c75daa0e70eaca4b98368fb692c909545265 -PCRE2.v10.35.0+0.aarch64-linux-gnu.tar.gz/md5/be872ef012d842ec67307b38c70ee652 -PCRE2.v10.35.0+0.aarch64-linux-gnu.tar.gz/sha512/742334411e9d7251d863363a1df71b49fec6dec60d594825821bcca5beeac4681fec97da114dd2e7698b8012f521f282acfc076f367f2959c0c7ab3775e8a3a9 -PCRE2.v10.35.0+0.aarch64-linux-musl.tar.gz/md5/7fcfa6fd4263a601559e395c7ac5c1fa -PCRE2.v10.35.0+0.aarch64-linux-musl.tar.gz/sha512/66d291e2c2cfaefe575122c54b5b9d7ed62b0a1bd8db626bb7581d6981735a95ca42995b665023eba2704d04f38320518acfcbecf9fb9db71cae0c6ff4b4c96d -PCRE2.v10.35.0+0.armv6l-linux-gnueabihf.tar.gz/md5/1ce32c9911f40734463a5c44a127098b -PCRE2.v10.35.0+0.armv6l-linux-gnueabihf.tar.gz/sha512/94c0df8dda0fb658407a4f90b8e7e938938698a29dd2a0ee799572101f3093d308f1f99a92b7ef33302a1b0dd9954be2b6e84391d331ff047a178e908431bcf9 -PCRE2.v10.35.0+0.armv6l-linux-musleabihf.tar.gz/md5/ab61045ca69a27b6f13db3b26dbf1ee6 -PCRE2.v10.35.0+0.armv6l-linux-musleabihf.tar.gz/sha512/a1c46c49b42b5ff3e1d736bc6748c7a69c53b1dca18aa4a4e1c5076a894bfc51af152b71b9075ba46583737aa78f9324f94fb3036327adc95f28fc29145c3504 -PCRE2.v10.35.0+0.armv7l-linux-gnueabihf.tar.gz/md5/8e55ae4239c682b611fdb7b3e64f2fad -PCRE2.v10.35.0+0.armv7l-linux-gnueabihf.tar.gz/sha512/f63bb3b278b5f0e52fa30a5f8a0f67ad37a983a43d04fbcc9e5972978adcbc7d76dcc72d1bb7c8555cc1cbb3bd5907c4fdc23f5f24f962530c7313170228f9df -PCRE2.v10.35.0+0.armv7l-linux-musleabihf.tar.gz/md5/0e5da7ba4bb7930afd28e3b1f20db026 -PCRE2.v10.35.0+0.armv7l-linux-musleabihf.tar.gz/sha512/6b3c5b14ff799243121a056b4d79af762fd9fd6ea3e1b55e5146af25e98aad963d7a5b5b3ece07c8a2ceb934eee02edc238704e103a7cd5b7ce00a2776082adc -PCRE2.v10.35.0+0.i686-linux-gnu.tar.gz/md5/753232dcaa7cd3bf41cc65f5d10e9fac -PCRE2.v10.35.0+0.i686-linux-gnu.tar.gz/sha512/1377449341367c8546ddc010a38db9094c0e8f18626f8b010f020ef5f14077e0fca50945e1a9f6e4e18c3ea8c7ebd3f28954bb13c9ad8fcee8a8548bb0258925 -PCRE2.v10.35.0+0.i686-linux-musl.tar.gz/md5/ac3d8656f82251a925ba2c842938bc62 -PCRE2.v10.35.0+0.i686-linux-musl.tar.gz/sha512/736bca0879c4820bf2196244fd664d35d281e2f0a5ac969210de470e2d03182401294926753f67438fe8d0831366386e3a263c6e19a0cdea5ea2b87eedb901bd -PCRE2.v10.35.0+0.i686-w64-mingw32.tar.gz/md5/e80c503eb4ffa74ab486c18f2809c72c -PCRE2.v10.35.0+0.i686-w64-mingw32.tar.gz/sha512/ce252bb835bcdbae997825d9e7ee877509551a3d2063ac17bde8beb417bfdbe0461e9980d623608d5699804e5bf61e38c7a505d5083f6fc6964786928ed45165 -PCRE2.v10.35.0+0.powerpc64le-linux-gnu.tar.gz/md5/6c1cfcbe2e47d16bb345e68cf9a7d62a -PCRE2.v10.35.0+0.powerpc64le-linux-gnu.tar.gz/sha512/9977f3695bb8d4c065ed29acc56148017bb40ebfb2b08344e37cd7874e8934fa4e6ad8dfa552d45a65e8dbb6dc257b6663f8299ae1a1b49fa2217775e547cd8b -PCRE2.v10.35.0+0.x86_64-apple-darwin.tar.gz/md5/a41cd11abaf88d6331f382ff142d5631 -PCRE2.v10.35.0+0.x86_64-apple-darwin.tar.gz/sha512/37666cc9dbe686d6a614c99092eb8b636dc3f626c0619e832dd072c8fc2f9d5bae1435045471b87a4737218b107e3c265b65074bacf5762a813eff75b725bb39 -PCRE2.v10.35.0+0.x86_64-linux-gnu.tar.gz/md5/59785e82e8964eff86df5b3a4b6e4cce -PCRE2.v10.35.0+0.x86_64-linux-gnu.tar.gz/sha512/f09eff9864e944cc27f737329f466be32b7dc21ec68a425881f6a16bad358d999f203dc36c055e1ac4b613980878c51afd2fd7e379e61cc7a2812f775c323b71 -PCRE2.v10.35.0+0.x86_64-linux-musl.tar.gz/md5/043179f5a3622123e95128219571fa35 -PCRE2.v10.35.0+0.x86_64-linux-musl.tar.gz/sha512/7a689300101560f1053374089f33c6554a0b9b28f6a9022eadf1599747e419a9fbc98b70638640e065c0dc9d32e9e0bc05c87e46321b6b5aacfd61c04141fca7 -PCRE2.v10.35.0+0.x86_64-unknown-freebsd.tar.gz/md5/a18cb245ca057846802ccdcf0673d772 -PCRE2.v10.35.0+0.x86_64-unknown-freebsd.tar.gz/sha512/ff2ce9fea948561e87c1e68e29852ac917a690b807e43509b9184fd9233e5bb9d8ca98490d8936d2be43b31081e3e9829006cbb8b7cc160469e7d3df5215e820 -PCRE2.v10.35.0+0.x86_64-w64-mingw32.tar.gz/md5/04e7ecd60b039ba60fdbcb82a83e2e68 -PCRE2.v10.35.0+0.x86_64-w64-mingw32.tar.gz/sha512/a0cb69b73fb86de2f37c6e98633c4aeab83c6be871819baddec8cd483db65815043090ff0736e85aa2117f58dacf73e2b49cba9536e109b53840c5b45c3e3fb1 +PCRE2.v10.36.0+0.aarch64-apple-darwin.tar.gz/md5/34157dd76b931907009ec32aad7c6e5e +PCRE2.v10.36.0+0.aarch64-apple-darwin.tar.gz/sha512/f2c4a676fb4fad42bdcffcde4876b82d40e2e3aeb7668e3077aea4e98be022cb627110bb6c13a71db941d6135db64a455c969c0cc4b914a898dc8556a9d88e67 +PCRE2.v10.36.0+0.aarch64-linux-gnu.tar.gz/md5/4fb6705dfdd7889fc8f52616527a0956 +PCRE2.v10.36.0+0.aarch64-linux-gnu.tar.gz/sha512/7af0d79aa55c969fe434f89702e328ca04d236e78accced26d5038cd08fbf83c3b4feb7e02bb88fbf0338f94f8e13b099b454eaa3c59e5274d7b572dd2e3d687 +PCRE2.v10.36.0+0.aarch64-linux-musl.tar.gz/md5/968317b2a6fa8d71a82d5f9f1a7a7923 +PCRE2.v10.36.0+0.aarch64-linux-musl.tar.gz/sha512/ba7f89932447c1c3ca007c766c8987789f0792afba924d52b149d966010792b8182ab77d50911ec4fe6553d1794617d6c70ca74b5c3e8b8779fa69c61eb2f456 +PCRE2.v10.36.0+0.armv6l-linux-gnueabihf.tar.gz/md5/d760e518585dd9bfd9e3d3688417b8ef +PCRE2.v10.36.0+0.armv6l-linux-gnueabihf.tar.gz/sha512/d0da6bbbd01e67e5a0ec448ca7bf218d90d4fbee17fd71981221816b5d00d05722347899aa960d88ee8e609b700e7b33d5c9b802b2e5eeccd1710f5b5deda839 +PCRE2.v10.36.0+0.armv6l-linux-musleabihf.tar.gz/md5/b746d89f79fbd5ba5bda60848eac517b +PCRE2.v10.36.0+0.armv6l-linux-musleabihf.tar.gz/sha512/8d025fc4e7f58ba89b7f763ff6250738ef76eb58dbd82baf8257cb5f9fdf0a59730c7854747ab3bda754294f2e2ceb2fc769a51e0e504fdadd68da73b5fc8684 +PCRE2.v10.36.0+0.armv7l-linux-gnueabihf.tar.gz/md5/f4529eccf64a257b5df354f084807eb5 +PCRE2.v10.36.0+0.armv7l-linux-gnueabihf.tar.gz/sha512/46a4e6efa1a6ecbccecbeddeb0a66475917172350702b0c6eed077e2de1d25c266182999f9d0a48074e9124dcca812815d964fb0cce0033f117246e9d1933198 +PCRE2.v10.36.0+0.armv7l-linux-musleabihf.tar.gz/md5/896bdae6d898c2c71751341b5a10e344 +PCRE2.v10.36.0+0.armv7l-linux-musleabihf.tar.gz/sha512/c16c2291b2802037fec3ae5aec2b01ed072a712b7ef48bb2a02cdaae6715dd6dd9e6c4905134047a06ad435684856d7f400dc655ec8c42a9a5ec9a3eebc9a22a +PCRE2.v10.36.0+0.i686-linux-gnu.tar.gz/md5/c545dd71a854c328536d258d1defdf60 +PCRE2.v10.36.0+0.i686-linux-gnu.tar.gz/sha512/c9aa0d188f55ce3cd19b608832bfb5a22bed34fe23b58489e8716e3af2338728fb5bd9f281f29b203b0de00e885cc8bc35e046524d328e09b7371c353ba9fb2b +PCRE2.v10.36.0+0.i686-linux-musl.tar.gz/md5/927e70b0b164e7225019677c1ca8b1a7 +PCRE2.v10.36.0+0.i686-linux-musl.tar.gz/sha512/2d6e46a8cbe322950c905e6e845a5ad7426485e547d51ed5aae9a048a1fb284f2e7998f4dafe719cc512c22ce8ad8622b70d46e2140c4e01a85d1a053bc90190 +PCRE2.v10.36.0+0.i686-w64-mingw32.tar.gz/md5/3c5129a428239ef9bd6220ed6abc3a59 +PCRE2.v10.36.0+0.i686-w64-mingw32.tar.gz/sha512/e342d8fd180b4f663eddb93ac3893d45ab1757b4fefc4c81a42768cbf03d9ec6b27af42ffe5568b8cad42fbcce2ee3d01bb272eeecb2ebd75e236f8a22efb3fd +PCRE2.v10.36.0+0.powerpc64le-linux-gnu.tar.gz/md5/d4158e4c05a45b2a5e8fdf89de1d2d24 +PCRE2.v10.36.0+0.powerpc64le-linux-gnu.tar.gz/sha512/cd652a8acefcab959826239176585c003465e9d0220b712731ad83b0c24b24a6a6875f44a458f208872c3c50cdff205e3e178feed3984c6dbde1e1792a4a7da9 +PCRE2.v10.36.0+0.x86_64-apple-darwin.tar.gz/md5/efa1c7f36aa76f3c9278ea409e99cc4d +PCRE2.v10.36.0+0.x86_64-apple-darwin.tar.gz/sha512/5b3f37a5f99690937adc7346b0f7205b8f8743ee81acad72a8d605a896cd9e9b23a81b26a0dd18b7fac0434ab6a45fd9eed5cc12a97f48d8069d55f537228621 +PCRE2.v10.36.0+0.x86_64-linux-gnu.tar.gz/md5/41c18464e519fc53cc4d496a683b0088 +PCRE2.v10.36.0+0.x86_64-linux-gnu.tar.gz/sha512/afab98dd9cf808a094a7402e532d7adf0b7b562bf1858a3e036e3ad400fa704129c13a2c4d0b32cde6a9786b09d220b72f77e1af6ab2883bcc3ffc6fd7fa80b4 +PCRE2.v10.36.0+0.x86_64-linux-musl.tar.gz/md5/9a24b4e7dcb145c113f9b93f2fc82bef +PCRE2.v10.36.0+0.x86_64-linux-musl.tar.gz/sha512/329c86994da95725b04af4db340765ecf8620bbb255583a74932d9076b78da757e426ca79c0fe0002f9c4be4854fae861ea716c9c0c7b3d0962082c0506e90a7 +PCRE2.v10.36.0+0.x86_64-unknown-freebsd.tar.gz/md5/fb71d0f5c07f23c50dd9b9c5f26cf511 +PCRE2.v10.36.0+0.x86_64-unknown-freebsd.tar.gz/sha512/32f330d2492f9325c28d514343e6eb63e3958df769712814ef4c0975e2918d753a8898a30f49ea9ed5f9ff14fce8ec99cd5758e93c8964fb85ba1982c4c5a792 +PCRE2.v10.36.0+0.x86_64-w64-mingw32.tar.gz/md5/67991b37b9dd96541ba83999fb657ad5 +PCRE2.v10.36.0+0.x86_64-w64-mingw32.tar.gz/sha512/0978ead7b84db12fbeb9ca87b043982fc29350bf4a5342ebbf90746c6471c146b977b9c86cc5a090b013b919b2834745b18af10ace00db992bf82bc791124637 diff --git a/deps/patches/pcre2-cet-flags.patch b/deps/patches/pcre2-cet-flags.patch deleted file mode 100644 index 7c455175cdfe3..0000000000000 --- a/deps/patches/pcre2-cet-flags.patch +++ /dev/null @@ -1,229 +0,0 @@ -commit 6823a639a4a2d3e2b4a44bab6da78e1659431063 -Author: Elliot Saba -Date: Tue Nov 17 19:29:06 2020 +0000 - - Backport SVN revisions r1256 and r1257 to fix compilations errors - - Without this patch, compilation errors such as `"-mshstk is needed to compile with -fcf-protection"` - occur on newer Ubuntu distros. This is a backport of upstreams patch, along with a partial-update - of `configure` so that users do not have to run `aclocal` on their machines when building from source. - - X-ref: https://bugs.exim.org/show_bug.cgi?id=2578 - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 86b8896..a368523 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -92,6 +92,7 @@ - # library versioning. - # 2020-04-25 Carlo added function check for mkostemp used in ProtExecAllocator - # 2020-04-28 PH added function check for memfd_create based on Carlo's patch -+# 2020-05-25 PH added a check for Intel CET - - PROJECT(PCRE2 C) - -@@ -146,6 +147,23 @@ CHECK_C_SOURCE_COMPILES( - ) - set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS}) - -+# Check whether Intel CET is enabled, and if so, adjust compiler flags. This -+# code was written by PH, trying to imitate the logic from the autotools -+# configuration. -+ -+CHECK_C_SOURCE_COMPILES( -+ "#ifndef __CET__ -+ #error CET is not enabled -+ #endif -+ int main() { return 0; }" -+ INTEL_CET_ENABLED -+) -+ -+IF (INTEL_CET_ENABLED) -+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mshstk") -+ENDIF(INTEL_CET_ENABLED) -+ -+ - # User-configurable options - # - # Note: CMakeSetup displays these in alphabetical order, regardless of -diff --git a/ChangeLog b/ChangeLog -index 310eb60..f238cce 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,6 +1,15 @@ - Change Log for PCRE2 - -------------------- - -+Version 10.36-RC1 25-May-2020 -+----------------------------- -+ -+1. Add CET_CFLAGS so that when Intel CET is enabled, pass -mshstk to -+compiler. This fixes https://bugs.exim.org/show_bug.cgi?id=2578. Patch for -+Makefile.am and configure.ac by H.J. Lu. Equivalent patch for CMakeLists.txt -+invented by PH. -+ -+ - Version 10.35 09-May-2020 - --------------------------- - -diff --git a/Makefile.am b/Makefile.am -index bb888f2..6a771a5 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -391,6 +391,7 @@ nodist_libpcre2_8_la_SOURCES = \ - libpcre2_8_la_CFLAGS = \ - -DPCRE2_CODE_UNIT_WIDTH=8 \ - $(VISIBILITY_CFLAGS) \ -+ $(CET_CFLAGS) \ - $(AM_CFLAGS) - libpcre2_8_la_LIBADD = - endif # WITH_PCRE2_8 -@@ -404,6 +405,7 @@ nodist_libpcre2_16_la_SOURCES = \ - libpcre2_16_la_CFLAGS = \ - -DPCRE2_CODE_UNIT_WIDTH=16 \ - $(VISIBILITY_CFLAGS) \ -+ $(CET_CFLAGS) \ - $(AM_CFLAGS) - libpcre2_16_la_LIBADD = - endif # WITH_PCRE2_16 -@@ -417,6 +419,7 @@ nodist_libpcre2_32_la_SOURCES = \ - libpcre2_32_la_CFLAGS = \ - -DPCRE2_CODE_UNIT_WIDTH=32 \ - $(VISIBILITY_CFLAGS) \ -+ $(CET_CFLAGS) \ - $(AM_CFLAGS) - libpcre2_32_la_LIBADD = - endif # WITH_PCRE2_32 -diff --git a/Makefile.in b/Makefile.in -index 2873912..0ce7004 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -806,6 +806,7 @@ AUTOMAKE = @AUTOMAKE@ - AWK = @AWK@ - CC = @CC@ - CCDEPMODE = @CCDEPMODE@ -+CET_CFLAGS = @CET_CFLAGS@ - CFLAGS = @CFLAGS@ - CPP = @CPP@ - CPPFLAGS = @CPPFLAGS@ -@@ -1310,8 +1311,9 @@ COMMON_SOURCES = \ - @WITH_PCRE2_8_TRUE@ $(NODIST_SOURCES) - - @WITH_PCRE2_8_TRUE@libpcre2_8_la_CFLAGS = -DPCRE2_CODE_UNIT_WIDTH=8 \ --@WITH_PCRE2_8_TRUE@ $(VISIBILITY_CFLAGS) $(AM_CFLAGS) \ --@WITH_PCRE2_8_TRUE@ $(am__append_5) $(am__append_8) -+@WITH_PCRE2_8_TRUE@ $(VISIBILITY_CFLAGS) $(CET_CFLAGS) \ -+@WITH_PCRE2_8_TRUE@ $(AM_CFLAGS) $(am__append_5) \ -+@WITH_PCRE2_8_TRUE@ $(am__append_8) - @WITH_PCRE2_8_TRUE@libpcre2_8_la_LIBADD = - @WITH_PCRE2_16_TRUE@libpcre2_16_la_SOURCES = \ - @WITH_PCRE2_16_TRUE@ $(COMMON_SOURCES) -@@ -1321,8 +1323,9 @@ COMMON_SOURCES = \ - - @WITH_PCRE2_16_TRUE@libpcre2_16_la_CFLAGS = \ - @WITH_PCRE2_16_TRUE@ -DPCRE2_CODE_UNIT_WIDTH=16 \ --@WITH_PCRE2_16_TRUE@ $(VISIBILITY_CFLAGS) $(AM_CFLAGS) \ --@WITH_PCRE2_16_TRUE@ $(am__append_6) $(am__append_9) -+@WITH_PCRE2_16_TRUE@ $(VISIBILITY_CFLAGS) $(CET_CFLAGS) \ -+@WITH_PCRE2_16_TRUE@ $(AM_CFLAGS) $(am__append_6) \ -+@WITH_PCRE2_16_TRUE@ $(am__append_9) - @WITH_PCRE2_16_TRUE@libpcre2_16_la_LIBADD = - @WITH_PCRE2_32_TRUE@libpcre2_32_la_SOURCES = \ - @WITH_PCRE2_32_TRUE@ $(COMMON_SOURCES) -@@ -1332,8 +1335,9 @@ COMMON_SOURCES = \ - - @WITH_PCRE2_32_TRUE@libpcre2_32_la_CFLAGS = \ - @WITH_PCRE2_32_TRUE@ -DPCRE2_CODE_UNIT_WIDTH=32 \ --@WITH_PCRE2_32_TRUE@ $(VISIBILITY_CFLAGS) $(AM_CFLAGS) \ --@WITH_PCRE2_32_TRUE@ $(am__append_7) $(am__append_10) -+@WITH_PCRE2_32_TRUE@ $(VISIBILITY_CFLAGS) $(CET_CFLAGS) \ -+@WITH_PCRE2_32_TRUE@ $(AM_CFLAGS) $(am__append_7) \ -+@WITH_PCRE2_32_TRUE@ $(am__append_10) - @WITH_PCRE2_32_TRUE@libpcre2_32_la_LIBADD = - @WITH_PCRE2_8_TRUE@libpcre2_8_la_LDFLAGS = $(EXTRA_LIBPCRE2_8_LDFLAGS) - @WITH_PCRE2_16_TRUE@libpcre2_16_la_LDFLAGS = $(EXTRA_LIBPCRE2_16_LDFLAGS) -diff --git a/configure b/configure -index 615f638..322a3a4 100755 ---- a/configure -+++ b/configure -@@ -633,6 +633,7 @@ ac_subst_vars='am__EXEEXT_FALSE - am__EXEEXT_TRUE - LTLIBOBJS - LIBOBJS -+CET_CFLAGS - WITH_GCOV_FALSE - WITH_GCOV_TRUE - GCOV_LIBS -@@ -15493,6 +15494,46 @@ else - fi - - -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Intel CET is enabled" >&5 -+$as_echo_n "checking whether Intel CET is enabled... " >&6; } -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+#ifndef __CET__ -+# error CET is not enabled -+#endif -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ pcre2_cc_cv_intel_cet_enabled=yes -+else -+ pcre2_cc_cv_intel_cet_enabled=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pcre2_cc_cv_intel_cet_enabled" >&5 -+$as_echo "$pcre2_cc_cv_intel_cet_enabled" >&6; } -+if test "$pcre2_cc_cv_intel_cet_enabled" = yes; then -+ CET_CFLAGS="-mshstk" -+ -+fi -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ - # Produce these files, in addition to config.h. - ac_config_files="$ac_config_files Makefile libpcre2-8.pc libpcre2-16.pc libpcre2-32.pc libpcre2-posix.pc pcre2-config src/pcre2.h" - -diff --git a/configure.ac b/configure.ac -index 180d3dc..61b93ba 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1006,6 +1006,21 @@ fi # enable_coverage - - AM_CONDITIONAL([WITH_GCOV],[test "x$enable_coverage" = "xyes"]) - -+AC_MSG_CHECKING([whether Intel CET is enabled]) -+AC_LANG_PUSH([C]) -+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, -+ [[#ifndef __CET__ -+# error CET is not enabled -+#endif]])], -+ [pcre2_cc_cv_intel_cet_enabled=yes], -+ [pcre2_cc_cv_intel_cet_enabled=no]) -+AC_MSG_RESULT([$pcre2_cc_cv_intel_cet_enabled]) -+if test "$pcre2_cc_cv_intel_cet_enabled" = yes; then -+ CET_CFLAGS="-mshstk" -+ AC_SUBST([CET_CFLAGS]) -+fi -+AC_LANG_POP([C]) -+ - # Produce these files, in addition to config.h. - AC_CONFIG_FILES( - Makefile diff --git a/deps/patches/pcre2-sljit-apple-silicon-support.patch b/deps/patches/pcre2-sljit-apple-silicon-support.patch new file mode 100644 index 0000000000000..3aff832ca08fd --- /dev/null +++ b/deps/patches/pcre2-sljit-apple-silicon-support.patch @@ -0,0 +1,244 @@ +From e87e1ccf93768238db3d6e28d0272980dba707fa Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= +Date: Mon, 30 Nov 2020 01:35:13 -0800 +Subject: [PATCH] macos: add BigSur support to execalloc (#90) + +Apple Silicon requires that pages that will hold JIT code are +marked with MAP_JIT (even if not using the hardened runtime) +and that a call be made to a pthread function before writing +to them, so a special exception could be made to the current +thread[1]; add support for both. + +since the allocator keeps the metadata about chunk/block in the +executable pages, all functions that modify that metadata will +also need to be updated. + +note that since there is no need for an accurate pointer range +with the apple implementation, NULL is passed for the pointers. + +historically, adding MAP_JIT was only recommended when the hardened +runtime was being used as it adds several undocumented restrictions +(like not being able to use JIT pages accross fork()) so the +new codepath won't be used if running in Intel. + +Tested-by: @Keno +Fixes: #51 + +[1] https://developer.apple.com/documentation/apple_silicon/porting_just-in-time_compilers_to_apple_silicon?language=objc +--- + sljit_src/sljitExecAllocator.c | 113 ++++++++++++++++++--------------- + 1 file changed, 63 insertions(+), 50 deletions(-) + +diff --git a/sljit_src/sljitExecAllocator.c b/sljit_src/sljitExecAllocator.c +index 61a32f2..2e1c138 100644 +--- a/sljit_src/sljitExecAllocator.c ++++ b/sljit_src/sljitExecAllocator.c +@@ -79,6 +79,7 @@ + */ + + #ifdef _WIN32 ++#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) + + static SLJIT_INLINE void* alloc_chunk(sljit_uw size) + { +@@ -91,65 +92,76 @@ static SLJIT_INLINE void free_chunk(void *chunk, sljit_uw size) + VirtualFree(chunk, 0, MEM_RELEASE); + } + +-#else +- +-#ifdef __APPLE__ +-#ifdef MAP_ANON +-/* Configures TARGET_OS_OSX when appropriate */ +-#include +- +-#if TARGET_OS_OSX && defined(MAP_JIT) +-#include +-#endif /* TARGET_OS_OSX && MAP_JIT */ +- +-#ifdef MAP_JIT ++#else /* POSIX */ + ++#if defined(__APPLE__) && defined(MAP_JIT) + /* + On macOS systems, returns MAP_JIT if it is defined _and_ we're running on a +- version where it's OK to have more than one JIT block. ++ version where it's OK to have more than one JIT block or where MAP_JIT is ++ required. + On non-macOS systems, returns MAP_JIT if it is defined. + */ ++#include ++#if TARGET_OS_OSX ++#if defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86 ++#ifdef MAP_ANON ++#include ++#include ++ ++#define SLJIT_MAP_JIT (get_map_jit_flag()) ++ + static SLJIT_INLINE int get_map_jit_flag() + { +-#if TARGET_OS_OSX +- sljit_sw page_size = get_page_alignment() + 1; ++ sljit_sw page_size; + void *ptr; ++ struct utsname name; + static int map_jit_flag = -1; + +- /* +- The following code is thread safe because multiple initialization +- sets map_jit_flag to the same value and the code has no side-effects. +- Changing the kernel version witout system restart is (very) unlikely. +- */ +- if (map_jit_flag == -1) { +- struct utsname name; +- ++ if (map_jit_flag < 0) { + map_jit_flag = 0; + uname(&name); + +- /* Kernel version for 10.14.0 (Mojave) */ ++ /* Kernel version for 10.14.0 (Mojave) or later */ + if (atoi(name.release) >= 18) { ++ page_size = get_page_alignment() + 1; + /* Only use MAP_JIT if a hardened runtime is used */ ++ ptr = mmap(NULL, page_size, PROT_WRITE | PROT_EXEC, ++ MAP_PRIVATE | MAP_ANON, -1, 0); + +- ptr = mmap(NULL, page_size, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0); +- +- if (ptr == MAP_FAILED) { +- map_jit_flag = MAP_JIT; +- } else { ++ if (ptr != MAP_FAILED) + munmap(ptr, page_size); +- } ++ else ++ map_jit_flag = MAP_JIT; + } + } +- + return map_jit_flag; +-#else /* !TARGET_OS_OSX */ +- return MAP_JIT; +-#endif /* TARGET_OS_OSX */ + } +- +-#endif /* MAP_JIT */ + #endif /* MAP_ANON */ +-#endif /* __APPLE__ */ ++#else /* !SLJIT_CONFIG_X86 */ ++#if !(defined SLJIT_CONFIG_ARM && SLJIT_CONFIG_ARM) ++#error Unsupported architecture ++#endif /* SLJIT_CONFIG_ARM */ ++#include ++ ++#define SLJIT_MAP_JIT (MAP_JIT) ++#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) \ ++ apple_update_wx_flags(enable_exec) ++ ++static SLJIT_INLINE void apple_update_wx_flags(sljit_s32 enable_exec) ++{ ++ pthread_jit_write_protect_np(enable_exec); ++} ++#endif /* SLJIT_CONFIG_X86 */ ++#else /* !TARGET_OS_OSX */ ++#define SLJIT_MAP_JIT (MAP_JIT) ++#endif /* TARGET_OS_OSX */ ++#endif /* __APPLE__ && MAP_JIT */ ++#ifndef SLJIT_UPDATE_WX_FLAGS ++#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) ++#endif /* !SLJIT_UPDATE_WX_FLAGS */ ++#ifndef SLJIT_MAP_JIT ++#define SLJIT_MAP_JIT (0) ++#endif /* !SLJIT_MAP_JIT */ + + static SLJIT_INLINE void* alloc_chunk(sljit_uw size) + { +@@ -157,12 +169,7 @@ static SLJIT_INLINE void* alloc_chunk(sljit_uw size) + const int prot = PROT_READ | PROT_WRITE | PROT_EXEC; + + #ifdef MAP_ANON +- +- int flags = MAP_PRIVATE | MAP_ANON; +- +-#ifdef MAP_JIT +- flags |= get_map_jit_flag(); +-#endif ++ int flags = MAP_PRIVATE | MAP_ANON | SLJIT_MAP_JIT; + + retval = mmap(NULL, size, prot, flags, -1, 0); + #else /* !MAP_ANON */ +@@ -173,14 +180,15 @@ static SLJIT_INLINE void* alloc_chunk(sljit_uw size) + #endif /* MAP_ANON */ + + if (retval == MAP_FAILED) +- retval = NULL; +- else { +- if (mprotect(retval, size, prot) < 0) { +- munmap(retval, size); +- retval = NULL; +- } ++ return NULL; ++ ++ if (mprotect(retval, size, prot) < 0) { ++ munmap(retval, size); ++ return NULL; + } + ++ SLJIT_UPDATE_WX_FLAGS(retval, (uint8_t *)retval + size, 0); ++ + return retval; + } + +@@ -189,7 +197,7 @@ static SLJIT_INLINE void free_chunk(void *chunk, sljit_uw size) + munmap(chunk, size); + } + +-#endif ++#endif /* windows */ + + /* --------------------------------------------------------------------- */ + /* Common functions */ +@@ -261,6 +269,7 @@ SLJIT_API_FUNC_ATTRIBUTE void* sljit_malloc_exec(sljit_uw size) + while (free_block) { + if (free_block->size >= size) { + chunk_size = free_block->size; ++ SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 0); + if (chunk_size > size + 64) { + /* We just cut a block from the end of the free block. */ + chunk_size -= size; +@@ -326,6 +335,7 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr) + allocated_size -= header->size; + + /* Connecting free blocks together if possible. */ ++ SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 0); + + /* If header->prev_size == 0, free_block will equal to header. + In this case, free_block->header.size will be > 0. */ +@@ -358,6 +368,7 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr) + } + } + ++ SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 1); + SLJIT_ALLOCATOR_UNLOCK(); + } + +@@ -367,6 +378,7 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void) + struct free_block* next_free_block; + + SLJIT_ALLOCATOR_LOCK(); ++ SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 0); + + free_block = free_blocks; + while (free_block) { +@@ -381,5 +393,6 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void) + } + + SLJIT_ASSERT((total_size && free_blocks) || (!total_size && !free_blocks)); ++ SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 1); + SLJIT_ALLOCATOR_UNLOCK(); + } +-- +2.30.0 + diff --git a/deps/pcre.mk b/deps/pcre.mk index e2bed3502a333..c9d8c9c600dee 100644 --- a/deps/pcre.mk +++ b/deps/pcre.mk @@ -12,18 +12,16 @@ $(SRCCACHE)/pcre2-$(PCRE_VER)/source-extracted: $(SRCCACHE)/pcre2-$(PCRE_VER).ta $(JLCHECKSUM) $< cd $(dir $<) && $(TAR) jxf $(notdir $<) cp $(SRCDIR)/patches/config.sub $(SRCCACHE)/pcre2-$(PCRE_VER)/config.sub - cd $(SRCCACHE)/pcre2-$(PCRE_VER) && patch -p1 -f < $(SRCDIR)/patches/pcre2-cet-flags.patch - # Fix some old targets modified by the patching - touch -c $(SRCCACHE)/pcre2-$(PCRE_VER)/aclocal.m4 - touch -c $(SRCCACHE)/pcre2-$(PCRE_VER)/Makefile.am - touch -c $(SRCCACHE)/pcre2-$(PCRE_VER)/Makefile.in - touch -c $(SRCCACHE)/pcre2-$(PCRE_VER)/configure echo 1 > $@ checksum-pcre2: $(SRCCACHE)/pcre2-$(PCRE_VER).tar.bz2 $(JLCHECKSUM) $< -$(BUILDDIR)/pcre2-$(PCRE_VER)/build-configured: $(SRCCACHE)/pcre2-$(PCRE_VER)/source-extracted +$(SRCCACHE)/pcre2-$(PCRE_VER)/pcre2-sljit-apple-silicon-support.patch-applied: $(SRCCACHE)/pcre2-$(PCRE_VER)/source-extracted + cd $(SRCCACHE)/pcre2-$(PCRE_VER) && patch -d src/sljit -p2 -f < $(SRCDIR)/patches/pcre2-sljit-apple-silicon-support.patch + echo 1 > $@ + +$(BUILDDIR)/pcre2-$(PCRE_VER)/build-configured: $(SRCCACHE)/pcre2-$(PCRE_VER)/source-extracted $(SRCCACHE)/pcre2-$(PCRE_VER)/pcre2-sljit-apple-silicon-support.patch-applied mkdir -p $(dir $@) cd $(dir $@) && \ $(dir $<)/configure $(CONFIGURE_COMMON) --enable-jit --includedir=$(build_includedir) CFLAGS="$(CFLAGS) $(PCRE_CFLAGS)" LDFLAGS="$(LDFLAGS) $(PCRE_LDFLAGS)" diff --git a/stdlib/PCRE2_jll/Project.toml b/stdlib/PCRE2_jll/Project.toml index 4b57093d649b4..7f364d3fefd88 100644 --- a/stdlib/PCRE2_jll/Project.toml +++ b/stdlib/PCRE2_jll/Project.toml @@ -1,6 +1,6 @@ name = "PCRE2_jll" uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.35.0+0" +version = "10.36.0+0" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" diff --git a/stdlib/PCRE2_jll/test/runtests.jl b/stdlib/PCRE2_jll/test/runtests.jl index aa1d89f02cea5..b2446e7e5caab 100644 --- a/stdlib/PCRE2_jll/test/runtests.jl +++ b/stdlib/PCRE2_jll/test/runtests.jl @@ -6,5 +6,5 @@ using Test, Libdl, PCRE2_jll vstr = zeros(UInt8, 32) @test ccall((:pcre2_config_8, libpcre2_8), Cint, (UInt32, Ref{UInt8}), 11, vstr) > 0 vn = VersionNumber(split(unsafe_string(pointer(vstr)), " ")[1]) - @test vn == v"10.35.0" + @test vn == v"10.36.0" end From b97d6052640587507faab8635713c292d327fb63 Mon Sep 17 00:00:00 2001 From: Simeon Schaub Date: Wed, 31 Mar 2021 23:10:08 +0200 Subject: [PATCH 21/37] fix #40258: nested string interpolation (#40261) * fix #40258: nested string interpolation fixes #40258 * fix interpolation with varargs * add additional test case * add additional test cases Co-authored-by: Nathan Daly * keep previous behavior, don't try to be too smart Co-authored-by: Nathan Daly Co-authored-by: Jeff Bezanson (cherry picked from commit 637f52b8eb836bda45bdb282ff3dd3d347bef439) --- src/julia-syntax.scm | 11 ++++++----- test/syntax.jl | 8 ++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/julia-syntax.scm b/src/julia-syntax.scm index 620253de26bbc..f2861656015f6 100644 --- a/src/julia-syntax.scm +++ b/src/julia-syntax.scm @@ -2295,11 +2295,12 @@ 'string (lambda (e) (expand-forms - `(call (top string) ,@(map (lambda (s) - (if (and (pair? s) (eq? (car s) 'string)) - (cadr s) - s)) - (cdr e))))) + `(call (top string) + ,@(map (lambda (s) + (if (and (length= s 2) (eq? (car s) 'string) (string? (cadr s))) + (cadr s) + s)) + (cdr e))))) '|::| (lambda (e) diff --git a/test/syntax.jl b/test/syntax.jl index 76e15c78b2750..68f32b600b79d 100644 --- a/test/syntax.jl +++ b/test/syntax.jl @@ -2692,3 +2692,11 @@ macro m_nospecialize_unnamed_hygiene() end @test @m_nospecialize_unnamed_hygiene()(1) === Any + +# issue 40258 +@test "a $("b $("c")")" == "a b c" + +@test "$(([[:a, :b], [:c, :d]]...)...)" == "abcd" + +@test eval(Expr(:string, "a", Expr(:string, "b", "c"))) == "abc" +@test eval(Expr(:string, "a", Expr(:string, "b", Expr(:string, "c")))) == "abc" From da9786d8e27ce365d511cdffe9d62d493bcf8f89 Mon Sep 17 00:00:00 2001 From: Jacob Quinn Date: Fri, 2 Apr 2021 11:38:47 -0600 Subject: [PATCH 22/37] Fix #40318 by using UInt to convert instead of Int on Ptr (cherry picked from commit 0d9163b561a5f809b895b9cd8893d1a010197284) --- stdlib/Printf/src/Printf.jl | 2 +- stdlib/Printf/test/runtests.jl | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/stdlib/Printf/src/Printf.jl b/stdlib/Printf/src/Printf.jl index ac57f95ec6bb9..2b620873bd61a 100644 --- a/stdlib/Printf/src/Printf.jl +++ b/stdlib/Printf/src/Printf.jl @@ -547,7 +547,7 @@ const __BIG_FLOAT_MAX__ = 8192 end # pointers -fmt(buf, pos, arg, spec::Spec{Pointer}) = fmt(buf, pos, Int(arg), ptrfmt(spec, arg)) +fmt(buf, pos, arg, spec::Spec{Pointer}) = fmt(buf, pos, UInt(arg), ptrfmt(spec, arg)) # old Printf compat function fix_dec end diff --git a/stdlib/Printf/test/runtests.jl b/stdlib/Printf/test/runtests.jl index c74739d66ba51..f6645464b4797 100644 --- a/stdlib/Printf/test/runtests.jl +++ b/stdlib/Printf/test/runtests.jl @@ -19,6 +19,9 @@ using Test, Printf @test (@sprintf "%-20p" C_NULL) == "0x00000000 " end + #40318 + @test @sprintf("%p", 0xfffffffffffe0000) == "0xfffffffffffe0000" + end @testset "%a" begin From 162499adb0921bf478572e2ee0e126b61e46c680 Mon Sep 17 00:00:00 2001 From: Jacob Quinn Date: Fri, 2 Apr 2021 13:41:29 -0600 Subject: [PATCH 23/37] Fix 32-bit (cherry picked from commit 5332d7d4e40ca2189e4ab597bf937f272f471bda) --- stdlib/Printf/src/Printf.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/Printf/src/Printf.jl b/stdlib/Printf/src/Printf.jl index 2b620873bd61a..e00b6becbb0f1 100644 --- a/stdlib/Printf/src/Printf.jl +++ b/stdlib/Printf/src/Printf.jl @@ -547,7 +547,7 @@ const __BIG_FLOAT_MAX__ = 8192 end # pointers -fmt(buf, pos, arg, spec::Spec{Pointer}) = fmt(buf, pos, UInt(arg), ptrfmt(spec, arg)) +fmt(buf, pos, arg, spec::Spec{Pointer}) = fmt(buf, pos, UInt64(arg), ptrfmt(spec, arg)) # old Printf compat function fix_dec end From 73bdd12900bb4eaf04006b0f904a2297572770b4 Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Fri, 2 Apr 2021 23:25:14 -0400 Subject: [PATCH 24/37] Fix reduce(vcat,...) type inference (#40277) (#40294) (cherry picked from commit 03abc458ea73bfa14713a6362fc60b097e7be337) --- base/abstractarray.jl | 2 +- test/abstractarray.jl | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/base/abstractarray.jl b/base/abstractarray.jl index 4974c19dfcfee..eda9d9b03d81f 100644 --- a/base/abstractarray.jl +++ b/base/abstractarray.jl @@ -1489,7 +1489,7 @@ AbstractVecOrTuple{T} = Union{AbstractVector{<:T}, Tuple{Vararg{T}}} _typed_vcat_similar(V, ::Type{T}, n) where T = similar(V[1], T, n) _typed_vcat(::Type{T}, V::AbstractVecOrTuple{AbstractVector}) where T = - _typed_vcat!(_typed_vcat_similar(V, T, mapreduce(length, +, V)), V) + _typed_vcat!(_typed_vcat_similar(V, T, sum(map(length, V))), V) function _typed_vcat!(a::AbstractVector{T}, V::AbstractVecOrTuple{AbstractVector}) where T pos = 1 diff --git a/test/abstractarray.jl b/test/abstractarray.jl index bc7c4d646fd8e..d14c1592d70f6 100644 --- a/test/abstractarray.jl +++ b/test/abstractarray.jl @@ -1230,3 +1230,9 @@ end @test [1; 1:BigInt(5)] == [1; 1:5] @test [1:BigInt(5); 1] == [1:5; 1] end + +@testset "reduce(vcat, ...) inferrence #40277" begin + x_vecs = ([5, ], [1.0, 2.0, 3.0]) + @test @inferred(reduce(vcat, x_vecs)) == [5.0, 1.0, 2.0, 3.0] + @test @inferred(reduce(vcat, ([10.0], [20.0], Bool[]))) == [10.0, 20.0] +end From 81e452d5befae4736da5927c7470b53773b436c3 Mon Sep 17 00:00:00 2001 From: Benjamin Galliot Date: Wed, 7 Apr 2021 00:01:45 +0200 Subject: [PATCH 25/37] Backport 1.6 of PR #40328. (#40377) --- test/regex.jl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/regex.jl b/test/regex.jl index 76fecfb4e4f56..bc8506b17999b 100644 --- a/test/regex.jl +++ b/test/regex.jl @@ -90,6 +90,16 @@ @test sprint(show, m) == "RegexMatch(\"xyz\", a=\"x\", 2=\"y\", b=\"z\")" end + # Unicode named subpatterns and property mixes of scripts and classes (issues #35322/#35459 and #40231) + let m = match(r"(?\d)[\pZs]*(?<文本>[\p{Han}\p{P}]+)", "1 孔生雪笠,聖裔也。為人蘊藉,工詩。") + @test haskey(m, :numéro) + @test haskey(m, "文本") + @test !haskey(m, "ゑ") + @test (m[:numéro], m[:文本]) == ("1", "孔生雪笠,聖裔也。為人蘊藉,工詩。") + @test (m[1], m[2]) == (m[:numéro], m[:文本]) + @test sprint(show, m) == "RegexMatch(\"1 孔生雪笠,聖裔也。為人蘊藉,工詩。\", numéro=\"1\", 文本=\"孔生雪笠,聖裔也。為人蘊藉,工詩。\")" + end + # Backcapture reference in substitution string @test replace("abcde", r"(..)(?Pd)" => s"\gxy\\\1") == "adxy\\bce" @test_throws ErrorException replace("a", r"(?P)" => s"\g") From 230703e8a599a271742814ef7c30627b06b203e8 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Tue, 6 Apr 2021 15:35:18 -0400 Subject: [PATCH 26/37] fix #40249, reshaping SharedArray on another process (#40286) (cherry picked from commit 79e198b29f620114e86950cf9f24c48b049d9c67) --- stdlib/SharedArrays/src/SharedArrays.jl | 21 +++++++++++---------- stdlib/SharedArrays/test/runtests.jl | 6 ++++++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/stdlib/SharedArrays/src/SharedArrays.jl b/stdlib/SharedArrays/src/SharedArrays.jl index 08a7b6fbe2b3e..540f1d3f5fc34 100644 --- a/stdlib/SharedArrays/src/SharedArrays.jl +++ b/stdlib/SharedArrays/src/SharedArrays.jl @@ -295,14 +295,21 @@ size(S::SharedArray) = S.dims elsize(::Type{SharedArray{T,N}}) where {T,N} = elsize(Array{T,N}) # aka fieldtype(T, :s) IndexStyle(::Type{<:SharedArray}) = IndexLinear() +function local_array_by_id(refid) + if isa(refid, Future) + refid = remoteref_id(refid) + end + fetch(channel_from_id(refid)) +end + function reshape(a::SharedArray{T}, dims::NTuple{N,Int}) where {T,N} if length(a) != prod(dims) throw(DimensionMismatch("dimensions must be consistent with array size")) end refs = Vector{Future}(undef, length(a.pids)) for (i, p) in enumerate(a.pids) - refs[i] = remotecall(p, a.refs[i], dims) do r,d - reshape(fetch(r),d) + refs[i] = remotecall(p, a.refs[i], dims) do r, d + reshape(local_array_by_id(r), d) end end @@ -382,7 +389,7 @@ function shared_pids(pids) # only use workers on the current host pids = procs(myid()) if length(pids) > 1 - pids = filter(x -> x != 1, pids) + pids = filter(!=(1), pids) end onlocalhost = true @@ -419,13 +426,7 @@ sub_1dim(S::SharedArray, pidx) = view(S.s, range_1dim(S, pidx)) function init_loc_flds(S::SharedArray{T,N}, empty_local=false) where T where N if myid() in S.pids S.pidx = findfirst(isequal(myid()), S.pids) - if isa(S.refs[1], Future) - refid = remoteref_id(S.refs[S.pidx]) - else - refid = S.refs[S.pidx] - end - c = channel_from_id(refid) - S.s = fetch(c) + S.s = local_array_by_id(S.refs[S.pidx]) S.loc_subarr_1d = sub_1dim(S, S.pidx) else S.pidx = 0 diff --git a/stdlib/SharedArrays/test/runtests.jl b/stdlib/SharedArrays/test/runtests.jl index 7a4d46d4777b3..7f1bbb6891ce0 100644 --- a/stdlib/SharedArrays/test/runtests.jl +++ b/stdlib/SharedArrays/test/runtests.jl @@ -176,6 +176,12 @@ d = SharedArrays.shmem_fill(1.0, (10,10,10)) @test fill(1., 100, 10) == reshape(d,(100,10)) d = SharedArrays.shmem_fill(1.0, (10,10,10)) @test_throws DimensionMismatch reshape(d,(50,)) +# issue #40249, reshaping on another process +let m = SharedArray{ComplexF64}(10, 20, 30) + m2 = remotecall_fetch(() -> reshape(m, (100, :)), id_other) + @test size(m2) == (100, 60) + @test m2 isa SharedArray +end # rand, randn d = SharedArrays.shmem_rand(dims) From 60d493a3592c888a582044cb84743c5378f20285 Mon Sep 17 00:00:00 2001 From: Elliot Saba Date: Tue, 6 Apr 2021 14:10:05 -0700 Subject: [PATCH 27/37] [build] Add `symlink_system_library` calls for CSL (#40217) * [build] Add `symlink_system_library` calls for CSL We differentiate between a `USE_BINARYBUILDER_CSL=0` configuration (where we copy the CSL libraries into the Julia build tree) versus a `USE_SYSTEM_CSL=1` configuration (where we symlink them in a manner similar to other system libararies) * Expand `JL_PRIVATE_LIBS-1` for versioned library names as well Without this, we fail to install things like `libgcc_s.so.1` when installed into the private libdir by `symlink_system_libraries`. (cherry picked from commit 336cdf80f38b89b42e2fb72e1057f6fced1493d0) --- Make.inc | 23 +++++++++++++- Makefile | 7 ++-- base/Makefile | 88 ++++++++++++++++++++++++++++++--------------------- deps/csl.mk | 40 ++++++++--------------- 4 files changed, 92 insertions(+), 66 deletions(-) diff --git a/Make.inc b/Make.inc index f272bedca956c..438ab7fa02815 100644 --- a/Make.inc +++ b/Make.inc @@ -626,6 +626,21 @@ else SHLIB_EXT := so endif +ifeq ($(OS),WINNT) +define versioned_libname +$$(if $(2),$(1)-$(2).$(SHLIB_EXT),$(1).$(SHLIB_EXT)) +endef +else ifeq ($(OS),Darwin) +define versioned_libname +$$(if $(2),$(1).$(2).$(SHLIB_EXT),$(1).$(SHLIB_EXT)) +endef +else +define versioned_libname +$$(if $(2),$(1).$(SHLIB_EXT).$(2),$(1).$(SHLIB_EXT)) +endef +endif + + ifeq ($(SHLIB_EXT), so) define SONAME_FLAGS -Wl,-soname=$1 @@ -1178,6 +1193,8 @@ BB_TRIPLET_LIBGFORTRAN := $(subst $(SPACE),-,$(filter-out cxx%,$(subst -,$(SPACE BB_TRIPLET_CXXABI := $(subst $(SPACE),-,$(filter-out libgfortran%,$(subst -,$(SPACE),$(BB_TRIPLET_LIBGFORTRAN_CXXABI)))) BB_TRIPLET := $(subst $(SPACE),-,$(filter-out cxx%,$(filter-out libgfortran%,$(subst -,$(SPACE),$(BB_TRIPLET_LIBGFORTRAN_CXXABI))))) +LIBGFORTRAN_VERSION := $(subst libgfortran,,$(filter libgfortran%,$(subst -,$(SPACE),$(BB_TRIPLET_LIBGFORTRAN)))) + # This is the set of projects that BinaryBuilder dependencies are hooked up for. BB_PROJECTS := OPENBLAS LLVM SUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 NGHTTP2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP CSL define SET_BB_DEFAULT @@ -1552,8 +1569,12 @@ ifneq ($(findstring $(OS),Linux FreeBSD),) LIBGCC_NAME := libgcc_s.$(SHLIB_EXT).1 endif - +# USE_SYSTEM_CSL causes it to get symlinked into build_private_shlibdir +ifeq ($(USE_SYSTEM_CSL),1) +LIBGCC_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_private_shlibdir)/$(LIBGCC_NAME)) +else LIBGCC_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_shlibdir)/$(LIBGCC_NAME)) +endif LIBGCC_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/$(LIBGCC_NAME)) # USE_SYSTEM_LIBM and USE_SYSTEM_OPENLIBM causes it to get symlinked into build_private_shlibdir diff --git a/Makefile b/Makefile index fde327557d968..2fb9be55f9b34 100644 --- a/Makefile +++ b/Makefile @@ -291,8 +291,11 @@ endif done \ done for suffix in $(JL_PRIVATE_LIBS-1) ; do \ - lib=$(build_private_libdir)/$${suffix}.$(SHLIB_EXT); \ - $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \ + for lib in $(build_private_libdir)/$${suffix}.$(SHLIB_EXT)*; do \ + if [ "$${lib##*.}" != "dSYM" ]; then \ + $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \ + fi \ + done \ done endif # Install `7z` into libexec/ diff --git a/base/Makefile b/base/Makefile index e024e546f94d3..2bef6aab7f1f4 100644 --- a/base/Makefile +++ b/base/Makefile @@ -169,53 +169,69 @@ endif # echo "$$P" define symlink_system_library -symlink_$1: $$(build_private_libdir)/$1.$$(SHLIB_EXT) -$$(build_private_libdir)/$1.$$(SHLIB_EXT): - REALPATH=`$$(call spawn,$$(build_depsbindir)/libwhich) -p $$(notdir $$@)` && \ - $$(call resolve_path,REALPATH) && \ - [ -e "$$$$REALPATH" ] && \ - ([ ! -e "$$@" ] || rm "$$@") && \ - echo ln -sf "$$$$REALPATH" "$$@" && \ - ln -sf "$$$$REALPATH" "$$@" -ifneq ($2,) -ifneq ($$(USE_SYSTEM_$2),0) -SYMLINK_SYSTEM_LIBRARIES += symlink_$1 -endif +libname_$2 := $$(notdir $(call versioned_libname,$2,$3)) +libpath_$2 := $$(shell $$(call spawn,$$(build_depsbindir)/libwhich) -p $$(libname_$2) 2>/dev/null) +symlink_$2: $$(build_private_libdir)/$$(libname_$2) +$$(build_private_libdir)/$$(libname_$2): + @if [ -e "$$(libpath_$2)" ]; then \ + REALPATH=$$(libpath_$2); \ + $$(call resolve_path,REALPATH) && \ + [ -e "$$$$REALPATH" ] && \ + ([ ! -e "$$@" ] || rm "$$@") && \ + echo ln -sf "$$$$REALPATH" "$$@" && \ + ln -sf "$$$$REALPATH" "$$@"; \ + else \ + if [ "$4" != "ALLOW_FAILURE" ]; then \ + echo "System library symlink failure: Unable to locate $$(libname_$2) on your system!" >&2; \ + false; \ + fi; \ + fi +ifneq ($$(USE_SYSTEM_$1),0) +SYMLINK_SYSTEM_LIBRARIES += symlink_$2 endif endef # the following excludes: libuv.a, libutf8proc.a -$(eval $(call symlink_system_library,$(LIBMNAME))) ifneq ($(USE_SYSTEM_LIBM),0) -SYMLINK_SYSTEM_LIBRARIES += symlink_$(LIBMNAME) +$(eval $(call symlink_system_library,LIBM,$(LIBMNAME))) else ifneq ($(USE_SYSTEM_OPENLIBM),0) -SYMLINK_SYSTEM_LIBRARIES += symlink_$(LIBMNAME) +$(eval $(call symlink_system_library,OPENLIBM,$(LIBMNAME))) endif -$(eval $(call symlink_system_library,libpcre2-8,PCRE)) -$(eval $(call symlink_system_library,libdSFMT,DSFMT)) -$(eval $(call symlink_system_library,$(LIBBLASNAME),BLAS)) +$(eval $(call symlink_system_library,CSL,libgcc_s,1)) +ifneq (,$(LIBGFORTRAN_VERSION)) +$(eval $(call symlink_system_library,CSL,libgfortran,$(LIBGFORTRAN_VERSION))) +endif +$(eval $(call symlink_system_library,CSL,libquadmath,0)) +$(eval $(call symlink_system_library,CSL,libstdc++,6)) +# We allow libssp, libatomic and libgomp to fail as they are not available on all systems +$(eval $(call symlink_system_library,CSL,libssp,0,ALLOW_FAILURE)) +$(eval $(call symlink_system_library,CSL,libatomic,1,ALLOW_FAILURE)) +$(eval $(call symlink_system_library,CSL,libgomp,1,ALLOW_FAILURE)) +$(eval $(call symlink_system_library,PCRE,libpcre2-8)) +$(eval $(call symlink_system_library,DSFMT,libdSFMT)) +$(eval $(call symlink_system_library,BLAS,$(LIBBLASNAME))) ifneq ($(LIBLAPACKNAME),$(LIBBLASNAME)) -$(eval $(call symlink_system_library,$(LIBLAPACKNAME),LAPACK)) +$(eval $(call symlink_system_library,LAPACK,$(LIBLAPACKNAME))) endif -$(eval $(call symlink_system_library,libgmp,GMP)) -$(eval $(call symlink_system_library,libmpfr,MPFR)) -$(eval $(call symlink_system_library,libmbedtls,MBEDTLS)) -$(eval $(call symlink_system_library,libmbedcrypto,MBEDTLS)) -$(eval $(call symlink_system_library,libmbedx509,MBEDTLS)) -$(eval $(call symlink_system_library,libssh2,LIBSSH2)) -$(eval $(call symlink_system_library,libnghttp2,NGHTTP2)) -$(eval $(call symlink_system_library,libcurl,CURL)) -$(eval $(call symlink_system_library,libgit2,LIBGIT2)) -$(eval $(call symlink_system_library,libamd,SUITESPARSE)) -$(eval $(call symlink_system_library,libcamd,SUITESPARSE)) -$(eval $(call symlink_system_library,libccolamd,SUITESPARSE)) -$(eval $(call symlink_system_library,libcholmod,SUITESPARSE)) -$(eval $(call symlink_system_library,libcolamd,SUITESPARSE)) -$(eval $(call symlink_system_library,libumfpack,SUITESPARSE)) -$(eval $(call symlink_system_library,libspqr,SUITESPARSE)) -$(eval $(call symlink_system_library,libsuitesparseconfig,SUITESPARSE)) +$(eval $(call symlink_system_library,GMP,libgmp)) +$(eval $(call symlink_system_library,MPFR,libmpfr)) +$(eval $(call symlink_system_library,MBEDTLS,libmbedtls)) +$(eval $(call symlink_system_library,MBEDTLS,libmbedcrypto)) +$(eval $(call symlink_system_library,MBEDTLS,libmbedx509)) +$(eval $(call symlink_system_library,LIBSSH2,libssh2)) +$(eval $(call symlink_system_library,NGHTTP2,libnghttp2)) +$(eval $(call symlink_system_library,CURL,libcurl)) +$(eval $(call symlink_system_library,LIBGIT2,libgit2)) +$(eval $(call symlink_system_library,SUITESPARSE,libamd)) +$(eval $(call symlink_system_library,SUITESPARSE,libcamd)) +$(eval $(call symlink_system_library,SUITESPARSE,libccolamd)) +$(eval $(call symlink_system_library,SUITESPARSE,libcholmod)) +$(eval $(call symlink_system_library,SUITESPARSE,libcolamd)) +$(eval $(call symlink_system_library,SUITESPARSE,libumfpack)) +$(eval $(call symlink_system_library,SUITESPARSE,libspqr)) +$(eval $(call symlink_system_library,SUITESPARSE,libsuitesparseconfig)) # EXCLUDED LIBRARIES (installed/used, but not vendored for use with dlopen): # libunwind endif # WINNT diff --git a/deps/csl.mk b/deps/csl.mk index 2858d9919a454..75e970f6882d3 100644 --- a/deps/csl.mk +++ b/deps/csl.mk @@ -19,48 +19,34 @@ $$(build_shlibdir)/$(1): | $$(build_shlibdir) [ -n "$$$${SRC_LIB}" ] && cp $$$${SRC_LIB} $$(build_shlibdir) endef -ifeq ($(OS),WINNT) -define gen_libname -$$(if $(2),lib$(1)-$(2).$(SHLIB_EXT),lib$(1).$(SHLIB_EXT)) -endef -else ifeq ($(OS),Darwin) -define gen_libname -$$(if $(2),lib$(1).$(2).$(SHLIB_EXT),lib$(1).$(SHLIB_EXT)) -endef -else -define gen_libname -$$(if $(2),lib$(1).$(SHLIB_EXT).$(2),lib$(1).$(SHLIB_EXT)) -endef -endif - # libgfortran has multiple names; we're just going to copy any version we can find # Since we're only looking in the location given by `$(FC)` this should only succeed for one. -$(eval $(call copy_csl,$(call gen_libname,gfortran,3))) -$(eval $(call copy_csl,$(call gen_libname,gfortran,4))) -$(eval $(call copy_csl,$(call gen_libname,gfortran,5))) +$(eval $(call copy_csl,$(call versioned_libname,libgfortran,3))) +$(eval $(call copy_csl,$(call versioned_libname,libgfortran,4))) +$(eval $(call copy_csl,$(call versioned_libname,libgfortran,5))) # These are all libraries that we should always have -$(eval $(call copy_csl,$(call gen_libname,quadmath,0))) -$(eval $(call copy_csl,$(call gen_libname,stdc++,6))) -$(eval $(call copy_csl,$(call gen_libname,ssp,0))) -$(eval $(call copy_csl,$(call gen_libname,atomic,1))) -$(eval $(call copy_csl,$(call gen_libname,gomp,1))) +$(eval $(call copy_csl,$(call versioned_libname,libquadmath,0))) +$(eval $(call copy_csl,$(call versioned_libname,libstdc++,6))) +$(eval $(call copy_csl,$(call versioned_libname,libssp,0))) +$(eval $(call copy_csl,$(call versioned_libname,libatomic,1))) +$(eval $(call copy_csl,$(call versioned_libname,libgomp,1))) ifeq ($(OS),WINNT) # Windwos has special gcc_s names ifeq ($(ARCH),i686) -$(eval $(call copy_csl,$(call gen_libname,gcc_s_sjlj,1))) +$(eval $(call copy_csl,$(call versioned_libname,libgcc_s_sjlj,1))) else -$(eval $(call copy_csl,$(call gen_libname,gcc_s_seh,1))) +$(eval $(call copy_csl,$(call versioned_libname,libgcc_s_seh,1))) endif else -$(eval $(call copy_csl,$(call gen_libname,gcc_s,1))) +$(eval $(call copy_csl,$(call versioned_libname,libgcc_s,1))) endif # winpthread is only Windows, pthread is only others ifeq ($(OS),WINNT) -$(eval $(call copy_csl,$(call gen_libname,winpthread,1))) +$(eval $(call copy_csl,$(call versioned_libname,libwinpthread,1))) else -$(eval $(call copy_csl,$(call gen_libname,pthread,0))) +$(eval $(call copy_csl,$(call versioned_libname,libpthread,0))) endif get-csl: From fefe9553d4372e185a4a0e8d48ce8dfa5501fefc Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Thu, 8 Apr 2021 11:37:31 -0400 Subject: [PATCH 28/37] fix #40337, no error info from serialized TaskFailedException (#40395) (cherry picked from commit cc1e70a6e7d53e64c3769b60de196dd332a06584) --- base/task.jl | 7 +++++- stdlib/Distributed/src/clusterserialize.jl | 24 --------------------- stdlib/Distributed/test/distributed_exec.jl | 2 +- stdlib/Serialization/src/Serialization.jl | 14 +++++++++--- 4 files changed, 18 insertions(+), 29 deletions(-) diff --git a/base/task.jl b/base/task.jl index 8c9516fb39766..0d37e1fe9eae2 100644 --- a/base/task.jl +++ b/base/task.jl @@ -79,7 +79,12 @@ end function show_task_exception(io::IO, t::Task; indent = true) stack = catch_stack(t) b = IOBuffer() - show_exception_stack(IOContext(b, io), stack) + if isempty(stack) + # exception stack buffer not available; probably a serialized task + showerror(IOContext(b, io), t.result) + else + show_exception_stack(IOContext(b, io), stack) + end str = String(take!(b)) if indent str = replace(str, "\n" => "\n ") diff --git a/stdlib/Distributed/src/clusterserialize.jl b/stdlib/Distributed/src/clusterserialize.jl index 3fde2bb4c2bd6..e37987c5bf875 100644 --- a/stdlib/Distributed/src/clusterserialize.jl +++ b/stdlib/Distributed/src/clusterserialize.jl @@ -102,19 +102,6 @@ function serialize(s::ClusterSerializer, t::Core.TypeName) nothing end -function serialize(s::ClusterSerializer, t::Task) - serialize_cycle(s, t) && return - if istaskstarted(t) && !istaskdone(t) - error("cannot serialize a running Task") - end - writetag(s.io, TASK_TAG) - serialize(s, t.code) - serialize(s, t.storage) - serialize(s, t._state) - serialize(s, t.result) - serialize(s, t._isexception) -end - function serialize(s::ClusterSerializer, g::GlobalRef) # Record if required and then invoke the default GlobalRef serializer. sym = g.name @@ -244,17 +231,6 @@ function deserialize(s::ClusterSerializer, t::Type{<:CapturedException}) return CapturedException(capex, bt) end -function deserialize(s::ClusterSerializer, ::Type{Task}) - t = Task(nothing) - deserialize_cycle(s, t) - t.code = deserialize(s) - t.storage = deserialize(s) - t._state = deserialize(s)::UInt8 - t.result = deserialize(s) - t._isexception = deserialize(s) - t -end - """ clear!(syms, pids=workers(); mod=Main) diff --git a/stdlib/Distributed/test/distributed_exec.jl b/stdlib/Distributed/test/distributed_exec.jl index 656792e2d7337..7f804c51082ac 100644 --- a/stdlib/Distributed/test/distributed_exec.jl +++ b/stdlib/Distributed/test/distributed_exec.jl @@ -1697,7 +1697,7 @@ let e = @test_throws RemoteException pmap(1) do _ es = sprint(showerror, e.value) @test contains(es, ":\nTaskFailedException\nStacktrace:\n") @test contains(es, "\n\n nested task error:") - @test_broken contains(es, "\n\n nested task error: 42\n") + @test contains(es, "\n\n nested task error: 42\n") end # issue #27429, propagate relative `include` path to workers diff --git a/stdlib/Serialization/src/Serialization.jl b/stdlib/Serialization/src/Serialization.jl index 1c1cf00d0f426..80b1946e79564 100644 --- a/stdlib/Serialization/src/Serialization.jl +++ b/stdlib/Serialization/src/Serialization.jl @@ -444,11 +444,19 @@ function serialize(s::AbstractSerializer, t::Task) if istaskstarted(t) && !istaskdone(t) error("cannot serialize a running Task") end - state = [t.code, t.storage, t.state, t.result, t._isexception] writetag(s.io, TASK_TAG) - for fld in state - serialize(s, fld) + serialize(s, t.code) + serialize(s, t.storage) + serialize(s, t.state) + if t._isexception && (stk = Base.catch_stack(t); !isempty(stk)) + # the exception stack field is hidden inside the task, so if there + # is any information there make a CapturedException from it instead. + # TODO: Handle full exception chain, not just the first one. + serialize(s, CapturedException(stk[1][1], stk[1][2])) + else + serialize(s, t.result) end + serialize(s, t._isexception) end function serialize(s::AbstractSerializer, g::GlobalRef) From 639325e834dee793aeecc74d167fea9c9733b943 Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Thu, 8 Apr 2021 19:45:20 +0200 Subject: [PATCH 29/37] Fix temp install of BugReporting.jl (#40403) Fixes #40398 (cherry picked from commit f021c67fe9aba889f015b66c6d5bf6394762c60d) --- stdlib/InteractiveUtils/src/InteractiveUtils.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stdlib/InteractiveUtils/src/InteractiveUtils.jl b/stdlib/InteractiveUtils/src/InteractiveUtils.jl index 87bc01f159d51..b50c3240c04ab 100644 --- a/stdlib/InteractiveUtils/src/InteractiveUtils.jl +++ b/stdlib/InteractiveUtils/src/InteractiveUtils.jl @@ -396,9 +396,12 @@ function report_bug(kind) mktempdir() do tmp old_load_path = copy(LOAD_PATH) push!(empty!(LOAD_PATH), joinpath(tmp, "Project.toml")) + old_active_project = Base.ACTIVE_PROJECT[] + Base.ACTIVE_PROJECT[] = nothing Pkg.add(Pkg.PackageSpec(BugReportingId.name, BugReportingId.uuid)) BugReporting = Base.require(BugReportingId) append!(empty!(LOAD_PATH), old_load_path) + Base.ACTIVE_PROJECT[] = old_active_project end end else From f2392e71bffdd787860d22d77a8d0d28ca8740e0 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Sat, 10 Apr 2021 18:32:45 +0200 Subject: [PATCH 30/37] fix a typo in TOML error message (#40428) * fix a typo in TOML error message (cherry picked from commit e260f2bccada3ef162c1f322bd80581a3d95fb64) --- base/toml_parser.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/toml_parser.jl b/base/toml_parser.jl index 956c62196d6b8..916a93fdf0d22 100644 --- a/base/toml_parser.jl +++ b/base/toml_parser.jl @@ -242,7 +242,7 @@ const err_message = Dict( ErrExpectedEqualAfterKey => "expected equal sign after key", ErrNoTrailingDigitAfterDot => "expected digit after dot", ErrOverflowError => "overflowed when parsing integer", - ErrInvalidUnicodeScalar => "invalid uncidode scalar", + ErrInvalidUnicodeScalar => "invalid unicode scalar", ErrInvalidEscapeCharacter => "invalid escape character", ErrUnexpectedEofExpectedValue => "unexpected end of file, expected a value" ) From 7ee87dd5e53ef424c70870d20f216ed538931c6b Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Mon, 5 Apr 2021 21:13:58 -0400 Subject: [PATCH 31/37] argmin ranges bug: you cannot pass an unsorted array to searchsorted (cherry picked from commit 454fc51714c9ba2a5122268fb9405e6f6f4bfc11) --- base/range.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/range.jl b/base/range.jl index 86ec0912e96b0..39129dd1b9b4f 100644 --- a/base/range.jl +++ b/base/range.jl @@ -632,7 +632,7 @@ function argmin(r::AbstractRange) elseif step(r) > 0 firstindex(r) else - first(searchsorted(r, last(r))) + lastindex(r) end end @@ -647,7 +647,7 @@ function argmax(r::AbstractRange) if isempty(r) throw(ArgumentError("range must be non-empty")) elseif step(r) > 0 - first(searchsorted(r, last(r))) + lastindex(r) else firstindex(r) end From f2bc4d3dd367804448873993de1a67382b724b01 Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Mon, 5 Apr 2021 20:30:25 -0400 Subject: [PATCH 32/37] searchsorted ranges: simplify code, fix bug with Unsigned needle This avoids computing `length` unnecessarily, which often requires a division, and is therefore often expensive. (cherry picked from commit 40d4f4a0d71b3129282e58b9a2f9b7f930ad13d3) --- base/sort.jl | 82 ++++++++++++++++--------------------------------- test/sorting.jl | 45 +++++++++++++++++---------- 2 files changed, 54 insertions(+), 73 deletions(-) diff --git a/base/sort.jl b/base/sort.jl index 36601ebb70f92..a5d899feb6955 100644 --- a/base/sort.jl +++ b/base/sort.jl @@ -231,92 +231,62 @@ end function searchsortedlast(a::AbstractRange{<:Real}, x::Real, o::DirectOrdering)::keytype(a) require_one_based_indexing(a) - if step(a) == 0 - lt(o, x, first(a)) ? 0 : length(a) + f, h, l = first(a), step(a), last(a) + if lt(o, x, f) + 0 + elseif h == 0 || !lt(o, x, l) + length(a) else - n = round(Integer, clamp((x - first(a)) / step(a) + 1, 1, length(a))) + n = round(Integer, (x - f) / h + 1) lt(o, x, a[n]) ? n - 1 : n end end function searchsortedfirst(a::AbstractRange{<:Real}, x::Real, o::DirectOrdering)::keytype(a) require_one_based_indexing(a) - if step(a) == 0 - lt(o, first(a), x) ? length(a) + 1 : 1 + f, h, l = first(a), step(a), last(a) + if !lt(o, f, x) + 1 + elseif h == 0 || lt(o, l, x) + length(a) + 1 else - n = round(Integer, clamp((x - first(a)) / step(a) + 1, 1, length(a))) + n = round(Integer, (x - f) / h + 1) lt(o, a[n], x) ? n + 1 : n end end function searchsortedlast(a::AbstractRange{<:Integer}, x::Real, o::DirectOrdering)::keytype(a) require_one_based_indexing(a) - h = step(a) - if h == 0 - lt(o, x, first(a)) ? 0 : length(a) - elseif h > 0 && x < first(a) - firstindex(a) - 1 - elseif h > 0 && x >= last(a) - lastindex(a) - elseif h < 0 && x > first(a) - firstindex(a) - 1 - elseif h < 0 && x <= last(a) - lastindex(a) + f, h, l = first(a), step(a), last(a) + if lt(o, x, f) + 0 + elseif h == 0 || !lt(o, x, l) + length(a) else if o isa ForwardOrdering - fld(floor(Integer, x) - first(a), h) + 1 + fld(floor(Integer, x) - f, h) + 1 else - fld(ceil(Integer, x) - first(a), h) + 1 + fld(ceil(Integer, x) - f, h) + 1 end end end function searchsortedfirst(a::AbstractRange{<:Integer}, x::Real, o::DirectOrdering)::keytype(a) require_one_based_indexing(a) - h = step(a) - if h == 0 - lt(o, first(a), x) ? length(a)+1 : 1 - elseif h > 0 && x <= first(a) - firstindex(a) - elseif h > 0 && x > last(a) - lastindex(a) + 1 - elseif h < 0 && x >= first(a) - firstindex(a) - elseif h < 0 && x < last(a) - lastindex(a) + 1 + f, h, l = first(a), step(a), last(a) + if !lt(o, f, x) + 1 + elseif h == 0 || lt(o, l, x) + length(a) + 1 else if o isa ForwardOrdering - -fld(floor(Integer, -x) + Signed(first(a)), h) + 1 + cld(ceil(Integer, x) - f, h) + 1 else - -fld(ceil(Integer, -x) + Signed(first(a)), h) + 1 + cld(floor(Integer, x) - f, h) + 1 end end end -function searchsortedfirst(a::AbstractRange{<:Integer}, x::Unsigned, o::DirectOrdering)::keytype(a) - require_one_based_indexing(a) - if lt(o, first(a), x) - if step(a) == 0 - length(a) + 1 - else - min(cld(x - first(a), step(a)), length(a)) + 1 - end - else - 1 - end -end - -function searchsortedlast(a::AbstractRange{<:Integer}, x::Unsigned, o::DirectOrdering)::keytype(a) - require_one_based_indexing(a) - if lt(o, x, first(a)) - 0 - elseif step(a) == 0 - length(a) - else - min(fld(x - first(a), step(a)) + 1, length(a)) - end -end - searchsorted(a::AbstractRange{<:Real}, x::Real, o::DirectOrdering) = searchsortedfirst(a, x, o) : searchsortedlast(a, x, o) diff --git a/test/sorting.jl b/test/sorting.jl index 6bf7d60bd859d..718a7f819e203 100644 --- a/test/sorting.jl +++ b/test/sorting.jl @@ -105,7 +105,7 @@ end @test searchsorted(fill(R(1), 15), T(1), 6, 10, Forward) == 6:10 end - for (rg,I) in [(49:57,47:59), (1:2:17,-1:19), (-3:0.5:2,-5:.5:4)] + for (rg,I) in Any[(49:57,47:59), (1:2:17,-1:19), (-3:0.5:2,-5:.5:4)] rg_r = reverse(rg) rgv, rgv_r = [rg;], [rg_r;] for i = I @@ -144,7 +144,7 @@ end @testset "issue 32568" begin for R in numTypes, T in numTypes - for arr in [R[1:5;], R(1):R(5), R(1):2:R(5)] + for arr in Any[R[1:5;], R(1):R(5), R(1):2:R(5)] @test eltype(searchsorted(arr, T(2))) == keytype(arr) @test eltype(searchsorted(arr, T(2), big(1), big(4), Forward)) == keytype(arr) @test searchsortedfirst(arr, T(2)) isa keytype(arr) @@ -164,35 +164,46 @@ end @test searchsorted([1,2], Inf) === 3:2 @test searchsorted(1:2, Inf) === 3:2 - for coll in [ + for coll in Any[ Base.OneTo(10), 1:2, + 0x01:0x02, -4:6, 5:2:10, [1,2], 1.0:4, [10.0,20.0], ] - for huge in [Inf, 1e300] + for huge in Any[Inf, 1e300, typemax(Int64), typemax(UInt64)] @test searchsortedfirst(coll, huge) === lastindex(coll) + 1 - @test searchsortedfirst(coll, -huge)=== firstindex(coll) @test searchsortedlast(coll, huge) === lastindex(coll) - @test searchsortedlast(coll, -huge) === firstindex(coll) - 1 @test searchsorted(coll, huge) === lastindex(coll)+1 : lastindex(coll) - @test searchsorted(coll, -huge) === firstindex(coll) : firstindex(coll) - 1 - - @test searchsortedfirst(reverse(coll), huge, rev=true) === firstindex(coll) - @test searchsortedfirst(reverse(coll), -huge, rev=true) === lastindex(coll) + 1 - @test searchsortedlast(reverse(coll), huge, rev=true) === firstindex(coll) - 1 - @test searchsortedlast(reverse(coll), -huge, rev=true) === lastindex(coll) - @test searchsorted(reverse(coll), huge, rev=true) === firstindex(coll):firstindex(coll) - 1 - @test searchsorted(reverse(coll), -huge, rev=true) === lastindex(coll)+1:lastindex(coll) + if !(eltype(coll) <: Unsigned) + @test searchsortedfirst(reverse(coll), huge, rev=true) === firstindex(coll) + @test searchsortedlast(reverse(coll), huge, rev=true) === firstindex(coll) - 1 + @test searchsorted(reverse(coll), huge, rev=true) === firstindex(coll):firstindex(coll) - 1 + end + + if !(huge isa Unsigned) + @test searchsortedfirst(coll, -huge)=== firstindex(coll) + @test searchsortedlast(coll, -huge) === firstindex(coll) - 1 + @test searchsorted(coll, -huge) === firstindex(coll) : firstindex(coll) - 1 + if !(eltype(coll) <: Unsigned) + @test searchsortedfirst(reverse(coll), -huge, rev=true) === lastindex(coll) + 1 + @test searchsortedlast(reverse(coll), -huge, rev=true) === lastindex(coll) + @test searchsorted(reverse(coll), -huge, rev=true) === lastindex(coll)+1:lastindex(coll) + end + end end end - @testset "issue ##34408" begin + + @test_broken length(reverse(0x1:0x2)) == 2 + @testset "issue #34408" begin r = 1f8-10:1f8 # collect(r) = Float32[9.999999e7, 9.999999e7, 9.999999e7, 9.999999e7, 1.0e8, 1.0e8, 1.0e8, 1.0e8, 1.0e8] - @test_broken searchsorted(collect(r)) == searchsorted(r) + for i in r + @test_broken searchsorted(collect(r), i) == searchsorted(r, i) + end end end @testset "issue #35272" begin @@ -329,7 +340,7 @@ end @test insorted(T(10), R.(collect(1:10)), by=(>=(5))) end - for (rg,I) in [(49:57,47:59), (1:2:17,-1:19), (-3:0.5:2,-5:.5:4)] + for (rg,I) in Any[(49:57,47:59), (1:2:17,-1:19), (-3:0.5:2,-5:.5:4)] rg_r = reverse(rg) rgv, rgv_r = collect(rg), collect(rg_r) for i = I From 43c621f59b51c11de4d2e659334cbf14bc778ab2 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Mon, 5 Apr 2021 22:31:57 -0400 Subject: [PATCH 33/37] fix #32843, codegen attempting `typeof(NULL)` for some union tags also fixes part of #40065 (cherry picked from commit 00cf7b0542c4b6f6e5e4d5b6d8ce81a75693fedd) --- src/cgutils.cpp | 30 +++++++++++++++++++++++++++--- src/codegen.cpp | 6 ++++-- test/compiler/codegen.jl | 8 ++++++++ 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/cgutils.cpp b/src/cgutils.cpp index 5c293f7bfb40d..106a5d4aad6fd 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -2472,6 +2472,27 @@ static Value *compute_box_tindex(jl_codectx_t &ctx, Value *datatype, jl_value_t return tindex; } +// Returns typeof(v), or null if v is a null pointer at run time. +// This is used when the value might have come from an undefined variable, +// yet we try to read its type to compute a union index when moving the value. +static Value *emit_typeof_or_null(jl_codectx_t &ctx, Value *v) +{ + BasicBlock *nonnull = BasicBlock::Create(jl_LLVMContext, "nonnull", ctx.f); + BasicBlock *postBB = BasicBlock::Create(jl_LLVMContext, "postnull", ctx.f); + Value *isnull = ctx.builder.CreateICmpEQ(v, Constant::getNullValue(v->getType())); + ctx.builder.CreateCondBr(isnull, postBB, nonnull); + BasicBlock *entry = ctx.builder.GetInsertBlock(); + ctx.builder.SetInsertPoint(nonnull); + Value *typof = emit_typeof(ctx, v); + ctx.builder.CreateBr(postBB); + nonnull = ctx.builder.GetInsertBlock(); // could have changed + ctx.builder.SetInsertPoint(postBB); + PHINode *ti = ctx.builder.CreatePHI(typof->getType(), 2); + ti->addIncoming(Constant::getNullValue(typof->getType()), entry); + ti->addIncoming(typof, nonnull); + return ti; +} + // get the runtime tindex value, assuming val is already converted to type typ if it has a TIndex static Value *compute_tindex_unboxed(jl_codectx_t &ctx, const jl_cgval_t &val, jl_value_t *typ) { @@ -2482,9 +2503,12 @@ static Value *compute_tindex_unboxed(jl_codectx_t &ctx, const jl_cgval_t &val, j if (val.TIndex) return ctx.builder.CreateAnd(val.TIndex, ConstantInt::get(T_int8, 0x7f)); - if (val.isboxed) - return compute_box_tindex(ctx, emit_typeof_boxed(ctx, val), val.typ, typ); - return compute_box_tindex(ctx, emit_typeof_boxed(ctx, val), val.typ, typ); + Value *typof; + if (val.isboxed && !jl_is_concrete_type(val.typ) && !jl_is_type_type(val.typ)) + typof = emit_typeof_or_null(ctx, val.V); + else + typof = emit_typeof_boxed(ctx, val); + return compute_box_tindex(ctx, typof, val.typ, typ); } static void union_alloca_type(jl_uniontype_t *ut, diff --git a/src/codegen.cpp b/src/codegen.cpp index 817aceddfe403..95b38952eb70c 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -1499,11 +1499,13 @@ static jl_cgval_t convert_julia_type_union(jl_codectx_t &ctx, const jl_cgval_t & // actually need it. Value *union_box_dt = NULL; BasicBlock *union_isaBB = NULL; + BasicBlock *post_union_isaBB = NULL; auto maybe_setup_union_isa = [&]() { if (!union_isaBB) { union_isaBB = BasicBlock::Create(jl_LLVMContext, "union_isa", ctx.f); ctx.builder.SetInsertPoint(union_isaBB); - union_box_dt = emit_typeof(ctx, v.Vboxed); + union_box_dt = emit_typeof_or_null(ctx, v.Vboxed); + post_union_isaBB = ctx.builder.GetInsertBlock(); } }; @@ -1535,7 +1537,7 @@ static jl_cgval_t convert_julia_type_union(jl_codectx_t &ctx, const jl_cgval_t & ctx.builder.SetInsertPoint(postBB); PHINode *tindex_phi = ctx.builder.CreatePHI(T_int8, 2); tindex_phi->addIncoming(new_tindex, currBB); - tindex_phi->addIncoming(union_box_tindex, union_isaBB); + tindex_phi->addIncoming(union_box_tindex, post_union_isaBB); new_tindex = tindex_phi; } } diff --git a/test/compiler/codegen.jl b/test/compiler/codegen.jl index 2b7b266751a08..2e4dadcc68df8 100644 --- a/test/compiler/codegen.jl +++ b/test/compiler/codegen.jl @@ -551,3 +551,11 @@ end end @test occursin("llvm.julia.gc_preserve_begin", get_llvm(f4, Tuple{Bool}, true, false, false)) end + +# issue #32843 +function f32843(vals0, v) + (length(vals0) > 1) && (vals = v[1]) + (length(vals0) == 1 && vals0[1]==1) && (vals = 1:2) + vals +end +@test_throws UndefVarError f32843([6], Vector[[1]]) From 01d77e28b9e8d138474fe06d320fdfbcaeaf3b77 Mon Sep 17 00:00:00 2001 From: Kristoffer Date: Wed, 14 Apr 2021 11:21:01 +0200 Subject: [PATCH 34/37] bump Pkg to 1.6.1 --- .../Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/md5 | 1 - .../Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/sha512 | 1 - .../Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/md5 | 1 + .../Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/sha512 | 1 + stdlib/Pkg.version | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/md5 delete mode 100644 deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/sha512 create mode 100644 deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/md5 create mode 100644 deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/sha512 diff --git a/deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/md5 b/deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/md5 deleted file mode 100644 index e2ce6025ee72b..0000000000000 --- a/deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -4b827aa3727f565648ac27fc9daf7db3 diff --git a/deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/sha512 b/deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/sha512 deleted file mode 100644 index 97fc8d97e8e7e..0000000000000 --- a/deps/checksums/Pkg-05fa7f93f73afdabd251247d03144de9f7b36b50.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -082bfe39acd6ac6ca08f69cbdeb70bebd7842922741da6ef5b5057c7126b56a5e91fe2ad96dd5f72aedf2a7a6e63b424f9a756ac6eedda089847da3152cb2f4c diff --git a/deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/md5 b/deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/md5 new file mode 100644 index 0000000000000..03c0211855c10 --- /dev/null +++ b/deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/md5 @@ -0,0 +1 @@ +f41525db1fd7ede8bfd785677e8a2383 diff --git a/deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/sha512 b/deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/sha512 new file mode 100644 index 0000000000000..66208e9b92af7 --- /dev/null +++ b/deps/checksums/Pkg-c78a8be9af8aa0944b74f297791e10933f223aad.tar.gz/sha512 @@ -0,0 +1 @@ +56bda43f19ef787c11fa67c4e90623279c569e77af9e6f52dbbd672fb5fd197f2b6591791aa62eccaa6fdc81b8e90f959269bd0639f158284fd4e954a485ceab diff --git a/stdlib/Pkg.version b/stdlib/Pkg.version index f379c4e6af7f9..b9170acec51b0 100644 --- a/stdlib/Pkg.version +++ b/stdlib/Pkg.version @@ -1,2 +1,2 @@ PKG_BRANCH = release-1.6 -PKG_SHA1 = 05fa7f93f73afdabd251247d03144de9f7b36b50 +PKG_SHA1 = c78a8be9af8aa0944b74f297791e10933f223aad From bd307efb2aad02ae58b926ac883e96482a4e2a28 Mon Sep 17 00:00:00 2001 From: DilumAluthgeBot <43731525+DilumAluthgeBot@users.noreply.github.com> Date: Fri, 9 Apr 2021 22:26:20 +0000 Subject: [PATCH 35/37] [automated] Bump the Tar stdlib from ac4d442 to 86825ec (#40421) Co-authored-by: Dilum Aluthge (cherry picked from commit 2f0156a6c79566bf265397641effa17a202f7ab4) --- .../Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/md5 | 1 + .../Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/sha512 | 1 + .../Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/md5 | 1 - .../Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/sha512 | 1 - stdlib/Tar.version | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/md5 create mode 100644 deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/sha512 delete mode 100644 deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/md5 delete mode 100644 deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/sha512 diff --git a/deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/md5 b/deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/md5 new file mode 100644 index 0000000000000..30d64c2600751 --- /dev/null +++ b/deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/md5 @@ -0,0 +1 @@ +e2b8b646355ba71a6e30dbe9c0fdc6ac diff --git a/deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/sha512 b/deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/sha512 new file mode 100644 index 0000000000000..be161a529bc83 --- /dev/null +++ b/deps/checksums/Tar-86825ecf1e8b6f57105bf0632e93c532cee200a4.tar.gz/sha512 @@ -0,0 +1 @@ +db66086d531bbf2210207449ac464d4e865562a849f8a4197feca4636c90ca577140977daf3d0fb4c4c61240866934a10ccc6120b7bc95b1a18ff16f9491aed9 diff --git a/deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/md5 b/deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/md5 deleted file mode 100644 index 5f1a8151702d6..0000000000000 --- a/deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -8e142a0c1761068128b4ac229aae584d diff --git a/deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/sha512 b/deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/sha512 deleted file mode 100644 index 0c3dd7423504f..0000000000000 --- a/deps/checksums/Tar-ac4d442266a676ce2d1a43acb55fc07d1edc6566.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d899b09c3ab4d94605297c716838f21dae7f1467b2785c9fff960ddad645161148fcdb2bc114e94da24f567098af4abce49960986f91eb26a2c234928fe6bdc9 diff --git a/stdlib/Tar.version b/stdlib/Tar.version index 0ab47a82fd468..2997467cdd1bd 100644 --- a/stdlib/Tar.version +++ b/stdlib/Tar.version @@ -1,2 +1,2 @@ TAR_BRANCH = master -TAR_SHA1 = ac4d442266a676ce2d1a43acb55fc07d1edc6566 +TAR_SHA1 = 86825ecf1e8b6f57105bf0632e93c532cee200a4 From 5d046b5c546af2fa8c053c998d7e9db30aba6b26 Mon Sep 17 00:00:00 2001 From: Martin Holters Date: Tue, 6 Apr 2021 05:03:45 +0200 Subject: [PATCH 36/37] Normalize (simplify) `UnionAll`s when used as type parameter (#36211) (cherry picked from commit fedefe913a265581d6ba4444b8bcd6dbf77e333b) --- src/jltypes.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ test/core.jl | 9 +++++ test/subtype.jl | 2 +- 3 files changed, 102 insertions(+), 1 deletion(-) diff --git a/src/jltypes.c b/src/jltypes.c index d952a68cd4c0d..935ddf749b70f 100644 --- a/src/jltypes.c +++ b/src/jltypes.c @@ -1120,6 +1120,93 @@ static jl_value_t *normalize_vararg(jl_value_t *va) return va; } +int _may_substitute_ub(jl_value_t *v, jl_tvar_t *var, int inside_inv, int *cov_count) JL_NOTSAFEPOINT +{ + if (v == (jl_value_t*)var) { + if (inside_inv) { + return 0; + } + else { + (*cov_count)++; + return *cov_count <= 1 || jl_is_concrete_type(var->ub); + } + } + else if (jl_is_uniontype(v)) { + return _may_substitute_ub(((jl_uniontype_t*)v)->a, var, inside_inv, cov_count) && + _may_substitute_ub(((jl_uniontype_t*)v)->b, var, inside_inv, cov_count); + } + else if (jl_is_unionall(v)) { + jl_unionall_t *ua = (jl_unionall_t*)v; + if (ua->var == var) + return 1; + return _may_substitute_ub(ua->var->lb, var, inside_inv, cov_count) && + _may_substitute_ub(ua->var->ub, var, inside_inv, cov_count) && + _may_substitute_ub(ua->body, var, inside_inv, cov_count); + } + else if (jl_is_vararg_type(v)) { + int old_count = *cov_count; + jl_value_t *vaT = jl_tparam0(v); + jl_value_t *vaN = jl_tparam1(v); + if (!_may_substitute_ub(vaT, var, inside_inv, cov_count)) + return 0; + if (*cov_count > old_count && !jl_is_concrete_type(var->ub)) + return 0; + if (!_may_substitute_ub(vaN, var, 1, cov_count)) + return 0; + } + else if (jl_is_datatype(v)) { + int invar = inside_inv || !jl_is_tuple_type(v); + for (size_t i = 0; i < jl_nparams(v); i++) { + if (!_may_substitute_ub(jl_tparam(v,i), var, invar, cov_count)) + return 0; + } + } + return 1; +} + +// Check whether `var` may be replaced with its upper bound `ub` in `v where var<:ub` +// Conditions: +// * `var` does not appear in invariant position +// * `var` appears at most once (in covariant position) and not in a `Vararg` +// unless the upper bound is concrete (diagonal rule) +int may_substitute_ub(jl_value_t *v, jl_tvar_t *var) JL_NOTSAFEPOINT +{ + int cov_count = 0; + return _may_substitute_ub(v, var, 0, &cov_count); +} + +jl_value_t *normalize_unionalls(jl_value_t *t) +{ + JL_GC_PUSH1(&t); + if (jl_is_uniontype(t)) { + jl_uniontype_t *u = (jl_uniontype_t*)t; + jl_value_t *a = NULL; + jl_value_t *b = NULL; + JL_GC_PUSH2(&a, &b); + a = normalize_unionalls(u->a); + b = normalize_unionalls(u->b); + if (a != u->a || b != u->b) { + t = jl_new_struct(jl_uniontype_type, a, b); + } + JL_GC_POP(); + } + else if (jl_is_unionall(t)) { + jl_unionall_t *u = (jl_unionall_t*)t; + jl_value_t *body = normalize_unionalls(u->body); + if (body != u->body) { + JL_GC_PUSH1(&body); + t = jl_new_struct(jl_unionall_type, u->var, body); + JL_GC_POP(); + u = (jl_unionall_t*)t; + } + + if (u->var->lb == u->var->ub || may_substitute_ub(body, u->var)) + t = jl_instantiate_unionall(u, u->var->ub); + } + JL_GC_POP(); + return t; +} + static jl_value_t *_jl_instantiate_type_in_env(jl_value_t *ty, jl_unionall_t *env, jl_value_t **vals, jl_typeenv_t *prev, jl_typestack_t *stack); static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value_t **iparams, size_t ntp, @@ -1129,6 +1216,11 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value jl_typename_t *tn = dt->name; int istuple = (tn == jl_tuple_typename); int isnamedtuple = (tn == jl_namedtuple_typename); + if (dt->name != jl_type_typename) { + for (size_t i = 0; i < ntp; i++) + iparams[i] = normalize_unionalls(iparams[i]); + } + // check type cache if (cacheable) { size_t i; diff --git a/test/core.jl b/test/core.jl index 910f75feb63c8..ffd11c8e783ef 100644 --- a/test/core.jl +++ b/test/core.jl @@ -7540,3 +7540,12 @@ for _ in 1:5 @test all(x->ismissing(x.i), a) end end + +# issue #35130 +const T35130 = Tuple{Vector{Int}, <:Any} +@eval struct A35130 + x::Vector{Tuple{Vector{Int}, Any}} + A35130(x) = $(Expr(:new, :A35130, :x)) +end +h35130(x) = A35130(Any[x][1]::Vector{T35130}) +@test h35130(T35130[([1],1)]) isa A35130 diff --git a/test/subtype.jl b/test/subtype.jl index 031a1815b2930..fd5e3156493f1 100644 --- a/test/subtype.jl +++ b/test/subtype.jl @@ -140,7 +140,7 @@ function test_diagonal() @test !issub(Type{Tuple{T,Any} where T}, Type{Tuple{T,T}} where T) @test !issub(Type{Tuple{T,Any,T} where T}, Type{Tuple{T,T,T}} where T) @test_broken issub(Type{Tuple{T} where T}, Type{Tuple{T}} where T) - @test_broken issub(Ref{Tuple{T} where T}, Ref{Tuple{T}} where T) + @test issub(Ref{Tuple{T} where T}, Ref{Tuple{T}} where T) @test !issub(Type{Tuple{T,T} where T}, Type{Tuple{T,T}} where T) @test !issub(Type{Tuple{T,T,T} where T}, Type{Tuple{T,T,T}} where T) @test isequal_type(Ref{Tuple{T, T} where Int<:T<:Int}, From 23e5f6fef1c70f607e65e224232739fe7e840337 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Thu, 15 Apr 2021 09:59:40 +0200 Subject: [PATCH 37/37] prevent conj! into uninitialized memory (#40481) (cherry picked from commit aa7d8797223422a31573b0593ce7267b6c0ea63a) --- stdlib/LinearAlgebra/src/matmul.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/LinearAlgebra/src/matmul.jl b/stdlib/LinearAlgebra/src/matmul.jl index 27bd9c2f23b15..e755cc88c6572 100644 --- a/stdlib/LinearAlgebra/src/matmul.jl +++ b/stdlib/LinearAlgebra/src/matmul.jl @@ -683,7 +683,7 @@ function copyto!(B::AbstractVecOrMat, ir_dest::UnitRange{Int}, jr_dest::UnitRang copyto!(B, ir_dest, jr_dest, M, ir_src, jr_src) else LinearAlgebra.copy_transpose!(B, ir_dest, jr_dest, M, jr_src, ir_src) - tM == 'C' && conj!(B) + tM == 'C' && conj!(@view B[ir_dest, jr_dest]) end B end @@ -693,7 +693,7 @@ function copy_transpose!(B::AbstractMatrix, ir_dest::UnitRange{Int}, jr_dest::Un LinearAlgebra.copy_transpose!(B, ir_dest, jr_dest, M, ir_src, jr_src) else copyto!(B, ir_dest, jr_dest, M, jr_src, ir_src) - tM == 'C' && conj!(B) + tM == 'C' && conj!(@view B[ir_dest, jr_dest]) end B end