From 9c4cedccd338d4c75f5a3b032e3c9b94e524bdf1 Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Sat, 19 Aug 2023 21:36:52 -0400 Subject: [PATCH 01/45] Use rr-safe `nopl; rdtsc` sequence (#50975) When running under `rr`, it needs to patch out `rdtsc` to record the values returned. If this is not possible, `rr` falls back to an expensive signal-based emulation. As of rr master, a specific `nopl; rdtsc` sequence may be used to guarantee that `rdtsc` patching is always possible. Use this sequence for uses of rdtsc in our runtime. (cherry picked from commit ce3f97cd3c24f8e58e57f1a6112dffb5a5f6bf53) --- src/julia_internal.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/julia_internal.h b/src/julia_internal.h index cf65521770681..3e4c01365a2fc 100644 --- a/src/julia_internal.h +++ b/src/julia_internal.h @@ -208,8 +208,17 @@ JL_DLLEXPORT void jl_unlock_profile_wr(void) JL_NOTSAFEPOINT JL_NOTSAFEPOINT_LEA static inline uint64_t cycleclock(void) JL_NOTSAFEPOINT { #if defined(_CPU_X86_64_) + // This is nopl 0(%rax, %rax, 1), but assembler are incosistent about whether + // they emit that as a 4 or 5 byte sequence and we need to be guaranteed to use + // the 5 byte one. +#define NOP5_OVERRIDE_NOP ".byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\t" uint64_t low, high; - __asm__ volatile("rdtsc" : "=a"(low), "=d"(high)); + // This instruction sequence is promised by rr to be patchable. rr can usually + // also patch `rdtsc` in regular code, but without the preceeding nop, there could + // be an interfering branch into the middle of rr's patch region. Using this + // sequence prevents a massive rr-induced slowdown if the compiler happens to emit + // an unlucky pattern. See https://github.com/rr-debugger/rr/pull/3580. + __asm__ volatile(NOP5_OVERRIDE_NOP "rdtsc" : "=a"(low), "=d"(high)); return (high << 32) | low; #elif defined(_CPU_X86_) int64_t ret; From b248b6b19ed18d60431534f813510d7e01a2163c Mon Sep 17 00:00:00 2001 From: Gabriel Baraldi Date: Thu, 14 Sep 2023 17:13:21 -0300 Subject: [PATCH 02/45] Avoid infinite loop when doing SIGTRAP in arm64-apple (#51284) The guard instruction for unreachables and other crashes in aarch64 is `brk`, in macos there isn't a distinction between a brk for a breakpoint and one for a crash, as an attempt we check the value of `pc` when the signal is triggered, if it is `brk #0x1` we say that it is a crash and go into the sigdie_handler. We should probably do the same in aarch64 linux, though I haven't dug too deep into what values it uses for traps, and if what compiler used matters, on apple I assumed we use clang/LLVM It might be possible to test this by calling some inline assembly. This means that something like https://github.com/JuliaLang/julia/issues/51267 actually crashes with ```c [16908] signal (5): Trace/BPT trap: 5 in expression starting at /Users/gabrielbaraldi/julia/test.jl:2 _collect at ./array.jl:768 collect at ./array.jl:757 top-level scope at /Users/gabrielbaraldi/julia/test.jl:5 _jl_invoke at /Users/gabrielbaraldi/julia/src/gf.c:2892 jl_toplevel_eval_flex at /Users/gabrielbaraldi/julia/src/toplevel.c:925 jl_toplevel_eval_flex at /Users/gabrielbaraldi/julia/src/toplevel.c:877 ijl_toplevel_eval at /Users/gabrielbaraldi/julia/src/toplevel.c:943 [inlined] ijl_toplevel_eval_in at /Users/gabrielbaraldi/julia/src/toplevel.c:985 eval at ./boot.jl:383 [inlined] include_string at ./loading.jl:2070 _jl_invoke at /Users/gabrielbaraldi/julia/src/gf.c:2873 ijl_apply_generic at /Users/gabrielbaraldi/julia/src/gf.c:3074 _include at ./loading.jl:2130 include at ./Base.jl:494 jfptr_include_46486 at /Users/gabrielbaraldi/julia/usr/lib/julia/sys.dylib (unknown line) _jl_invoke at /Users/gabrielbaraldi/julia/src/gf.c:2873 ijl_apply_generic at /Users/gabrielbaraldi/julia/src/gf.c:3074 exec_options at ./client.jl:317 _start at ./client.jl:552 jfptr__start_83179 at /Users/gabrielbaraldi/julia/usr/lib/julia/sys.dylib (unknown line) _jl_invoke at /Users/gabrielbaraldi/julia/src/gf.c:2873 ijl_apply_generic at /Users/gabrielbaraldi/julia/src/gf.c:3074 jl_apply at /Users/gabrielbaraldi/julia/src/./julia.h:1970 [inlined] true_main at /Users/gabrielbaraldi/julia/src/jlapi.c:582 jl_repl_entrypoint at /Users/gabrielbaraldi/julia/src/jlapi.c:731 Allocations: 570978 (Pool: 570031; Big: 947); GC: 1 fish: Job 1, './julia test.jl' terminated by signal SIGTRAP (Trace or breakpoint trap) ``` instead of hanging silently --------- Co-authored-by: Jameson Nash (cherry picked from commit d51ad06f664b3439b4aee51b5cd5edd6b9d53c69) --- src/signals-unix.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/signals-unix.c b/src/signals-unix.c index 4c21d25d3622c..b2056947e2b8a 100644 --- a/src/signals-unix.c +++ b/src/signals-unix.c @@ -994,6 +994,19 @@ static void sigint_handler(int sig) jl_sigint_passed = 1; } +#if defined(_OS_DARWIN_) && defined(_CPU_AARCH64_) +static void sigtrap_handler(int sig, siginfo_t *info, void *context) +{ + uintptr_t pc = ((ucontext_t*)context)->uc_mcontext->__ss.__pc; // TODO: Do this in linux as well + uint32_t* code = (uint32_t*)(pc); // https://gcc.gnu.org/legacy-ml/gcc-patches/2013-11/msg02228.html + if (*code == 0xd4200020) { // brk #0x1 which is what LLVM defines as trap + signal(sig, SIG_DFL); + sig = SIGILL; // redefine this as as an "unreachable reached" error message + sigdie_handler(sig, info, context); + } +} +#endif + void jl_install_default_signal_handlers(void) { struct sigaction actf; @@ -1004,6 +1017,20 @@ void jl_install_default_signal_handlers(void) if (sigaction(SIGFPE, &actf, NULL) < 0) { jl_errorf("fatal error: sigaction: %s", strerror(errno)); } +#if defined(_OS_DARWIN_) && defined(_CPU_AARCH64_) + struct sigaction acttrap; + memset(&acttrap, 0, sizeof(struct sigaction)); + sigemptyset(&acttrap.sa_mask); + acttrap.sa_sigaction = sigtrap_handler; + acttrap.sa_flags = SA_ONSTACK | SA_SIGINFO; + if (sigaction(SIGTRAP, &acttrap, NULL) < 0) { + jl_errorf("fatal error: sigaction: %s", strerror(errno)); + } +#else + if (signal(SIGTRAP, SIG_IGN) == SIG_ERR) { + jl_error("fatal error: Couldn't set SIGTRAP"); + } +#endif struct sigaction actint; memset(&actint, 0, sizeof(struct sigaction)); sigemptyset(&actint.sa_mask); @@ -1015,9 +1042,6 @@ void jl_install_default_signal_handlers(void) if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { jl_error("fatal error: Couldn't set SIGPIPE"); } - if (signal(SIGTRAP, SIG_IGN) == SIG_ERR) { - jl_error("fatal error: Couldn't set SIGTRAP"); - } #if defined(HAVE_MACH) allocate_mach_handler(); From 4f6a4f47c2ba0a2114e4c4ab9691f947aec2fbb7 Mon Sep 17 00:00:00 2001 From: Nathan Zimmerberg <39104088+nhz2@users.noreply.github.com> Date: Fri, 15 Sep 2023 18:28:26 -0400 Subject: [PATCH 03/45] [Random] Add s4 field to Xoshiro type (#51332) This PR adds an optional field to the existing `Xoshiro` struct to be able to faithfully copy the task-local RNG state. Fixes #51255 Redo of #51271 Background context: #49110 added an additional state to the task-local RNG. However, before this PR `copy(default_rng())` did not include this extra state, causing subtle errors in `Test` where `copy(default_rng())` is assumed to contain the full task-local RNG state. (cherry picked from commit 41b41abb3ce87dc22fca70475d8a46e19feba4de) --- stdlib/Random/src/Xoshiro.jl | 45 ++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/stdlib/Random/src/Xoshiro.jl b/stdlib/Random/src/Xoshiro.jl index 3be276ad23754..a25e2c1077e04 100644 --- a/stdlib/Random/src/Xoshiro.jl +++ b/stdlib/Random/src/Xoshiro.jl @@ -48,28 +48,37 @@ mutable struct Xoshiro <: AbstractRNG s1::UInt64 s2::UInt64 s3::UInt64 + s4::UInt64 # internal splitmix state - Xoshiro(s0::Integer, s1::Integer, s2::Integer, s3::Integer) = new(s0, s1, s2, s3) + Xoshiro(s0::Integer, s1::Integer, s2::Integer, s3::Integer, s4::Integer) = new(s0, s1, s2, s3, s4) + Xoshiro(s0::UInt64, s1::UInt64, s2::UInt64, s3::UInt64) = new(s0, s1, s2, s3, 1s0 + 3s1 + 5s2 + 7s3) Xoshiro(seed=nothing) = seed!(new(), seed) end -function setstate!(x::Xoshiro, s0::UInt64, s1::UInt64, s2::UInt64, s3::UInt64) +Xoshiro(s0::Integer, s1::Integer, s2::Integer, s3::Integer) = Xoshiro(UInt64(s0), UInt64(s1), UInt64(s2), UInt64(s3)) + +function setstate!( + x::Xoshiro, + s0::UInt64, s1::UInt64, s2::UInt64, s3::UInt64, # xoshiro256 state + s4::UInt64, # internal splitmix state +) x.s0 = s0 x.s1 = s1 x.s2 = s2 x.s3 = s3 + x.s4 = s4 x end -copy(rng::Xoshiro) = Xoshiro(rng.s0, rng.s1, rng.s2, rng.s3) +copy(rng::Xoshiro) = Xoshiro(rng.s0, rng.s1, rng.s2, rng.s3, rng.s4) function copy!(dst::Xoshiro, src::Xoshiro) - dst.s0, dst.s1, dst.s2, dst.s3 = src.s0, src.s1, src.s2, src.s3 + dst.s0, dst.s1, dst.s2, dst.s3, dst.s4 = src.s0, src.s1, src.s2, src.s3, src.s4 dst end function ==(a::Xoshiro, b::Xoshiro) - a.s0 == b.s0 && a.s1 == b.s1 && a.s2 == b.s2 && a.s3 == b.s3 + a.s0 == b.s0 && a.s1 == b.s1 && a.s2 == b.s2 && a.s3 == b.s3 && a.s4 == b.s4 end rng_native_52(::Xoshiro) = UInt64 @@ -116,7 +125,7 @@ rng_native_52(::TaskLocalRNG) = UInt64 function setstate!( x::TaskLocalRNG, s0::UInt64, s1::UInt64, s2::UInt64, s3::UInt64, # xoshiro256 state - s4::UInt64 = 1s0 + 3s1 + 5s2 + 7s3, # internal splitmix state + s4::UInt64, # internal splitmix state ) t = current_task() t.rngState0 = s0 @@ -148,14 +157,20 @@ end function seed!(rng::Union{TaskLocalRNG,Xoshiro}) # as we get good randomness from RandomDevice, we can skip hashing rd = RandomDevice() - setstate!(rng, rand(rd, UInt64), rand(rd, UInt64), rand(rd, UInt64), rand(rd, UInt64)) + s0 = rand(rd, UInt64) + s1 = rand(rd, UInt64) + s2 = rand(rd, UInt64) + s3 = rand(rd, UInt64) + s4 = 1s0 + 3s1 + 5s2 + 7s3 + setstate!(rng, s0, s1, s2, s3, s4) end function seed!(rng::Union{TaskLocalRNG,Xoshiro}, seed::Union{Vector{UInt32}, Vector{UInt64}}) c = SHA.SHA2_256_CTX() SHA.update!(c, reinterpret(UInt8, seed)) s0, s1, s2, s3 = reinterpret(UInt64, SHA.digest!(c)) - setstate!(rng, s0, s1, s2, s3) + s4 = 1s0 + 3s1 + 5s2 + 7s3 + setstate!(rng, s0, s1, s2, s3, s4) end seed!(rng::Union{TaskLocalRNG, Xoshiro}, seed::Integer) = seed!(rng, make_seed(seed)) @@ -178,24 +193,30 @@ end function copy(rng::TaskLocalRNG) t = current_task() - Xoshiro(t.rngState0, t.rngState1, t.rngState2, t.rngState3) + Xoshiro(t.rngState0, t.rngState1, t.rngState2, t.rngState3, t.rngState4) end function copy!(dst::TaskLocalRNG, src::Xoshiro) t = current_task() - setstate!(dst, src.s0, src.s1, src.s2, src.s3) + setstate!(dst, src.s0, src.s1, src.s2, src.s3, src.s4) return dst end function copy!(dst::Xoshiro, src::TaskLocalRNG) t = current_task() - setstate!(dst, t.rngState0, t.rngState1, t.rngState2, t.rngState3) + setstate!(dst, t.rngState0, t.rngState1, t.rngState2, t.rngState3, t.rngState4) return dst end function ==(a::Xoshiro, b::TaskLocalRNG) t = current_task() - a.s0 == t.rngState0 && a.s1 == t.rngState1 && a.s2 == t.rngState2 && a.s3 == t.rngState3 + ( + a.s0 == t.rngState0 && + a.s1 == t.rngState1 && + a.s2 == t.rngState2 && + a.s3 == t.rngState3 && + a.s4 == t.rngState4 + ) end ==(a::TaskLocalRNG, b::Xoshiro) = b == a From 0c39aef634ba4afab029f00e5c704031ca2a0aa0 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Wed, 20 Sep 2023 14:08:52 +0200 Subject: [PATCH 04/45] call Pkg precompile hook in latest world (#51397) Fixes https://github.com/JuliaLang/julia/issues/51280. (cherry picked from commit c22adc04994518e198d840ae5da9ebd89bb41451) --- base/loading.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/loading.jl b/base/loading.jl index dd7038845f4f8..ef0d5e4bf6f5f 100644 --- a/base/loading.jl +++ b/base/loading.jl @@ -1954,7 +1954,7 @@ function _require(pkg::PkgId, env=nothing) pkg_precompile_attempted = true unlock(require_lock) try - PKG_PRECOMPILE_HOOK[](pkg.name, _from_loading = true) + @invokelatest PKG_PRECOMPILE_HOOK[](pkg.name, _from_loading = true) finally lock(require_lock) end From 77b74c3ff7df1e1b0bcdb2ae1552229fff2d30ed Mon Sep 17 00:00:00 2001 From: Nicholas Bauer Date: Thu, 28 Sep 2023 09:47:25 -0400 Subject: [PATCH 05/45] Remove fallback that assigns a module to inlined frames. (#51405) The work I did in #41099 introduced code which, if method information could not be found for an inlined frame, would fall back to use the module of the next-higher stack frame. This often worked there because the only frames that would not be assigned a module at this point would be e.g., `macro expansion` frames. However, due to the performance impact of the way method roots are currently encoded, the extra method roots were removed in #50546. The result is that inlined frames were being assigned a potentially incorrect module, rather than being left blank. Example: ``` julia> @btime plot([1 2 3], seriestype = :blah) ... [13] #invokelatest#2 @ BenchmarkTools ./essentials.jl:901 [inlined] [14] invokelatest @ BenchmarkTools ./essentials.jl:896 [inlined] ... ``` (cherry picked from commit ed891d6751def90f449e2f37a079514a2089a2fb) --- base/stacktraces.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/base/stacktraces.jl b/base/stacktraces.jl index 9c942814eefad..bb70b7ea1c099 100644 --- a/base/stacktraces.jl +++ b/base/stacktraces.jl @@ -206,7 +206,6 @@ Base.@constprop :none function lookup(pointer::Ptr{Cvoid}) elseif miroots !== nothing linfo = lookup_inline_frame_info(func, file, miroots) end - linfo = linfo === nothing ? parentmodule(res[i + 1]) : linfo # e.g. `macro expansion` end res[i] = StackFrame(func, file, linenum, linfo, info[5]::Bool, info[6]::Bool, pointer) end From 765c1af13bcc6dd6387c4be9556202f617e65c08 Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Thu, 28 Sep 2023 15:57:19 -0400 Subject: [PATCH 06/45] Throw clearer ArgumentError for strip with two string args (#51491) (cherry picked from commit 66fe51f0ad9531fa782c4dece0669076456f396c) --- base/strings/util.jl | 4 ++++ test/strings/util.jl | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/base/strings/util.jl b/base/strings/util.jl index c77d45255a735..bd4da03ce1571 100644 --- a/base/strings/util.jl +++ b/base/strings/util.jl @@ -369,6 +369,7 @@ function lstrip(f, s::AbstractString) end lstrip(s::AbstractString) = lstrip(isspace, s) lstrip(s::AbstractString, chars::Chars) = lstrip(in(chars), s) +lstrip(::AbstractString, ::AbstractString) = throw(ArgumentError("Both arguments are strings. The second argument should be a `Char` or collection of `Char`s")) """ rstrip([pred=isspace,] str::AbstractString) -> SubString @@ -402,6 +403,8 @@ function rstrip(f, s::AbstractString) end rstrip(s::AbstractString) = rstrip(isspace, s) rstrip(s::AbstractString, chars::Chars) = rstrip(in(chars), s) +rstrip(::AbstractString, ::AbstractString) = throw(ArgumentError("Both arguments are strings. The second argument should be a `Char` or collection of `Char`s")) + """ strip([pred=isspace,] str::AbstractString) -> SubString @@ -429,6 +432,7 @@ julia> strip("{3, 5}\\n", ['{', '}', '\\n']) """ strip(s::AbstractString) = lstrip(rstrip(s)) strip(s::AbstractString, chars::Chars) = lstrip(rstrip(s, chars), chars) +strip(::AbstractString, ::AbstractString) = throw(ArgumentError("Both arguments are strings. The second argument should be a `Char` or collection of `Char`s")) strip(f, s::AbstractString) = lstrip(f, rstrip(f, s)) ## string padding functions ## diff --git a/test/strings/util.jl b/test/strings/util.jl index 8b58c2f36d8c4..0ad958eebb7f9 100644 --- a/test/strings/util.jl +++ b/test/strings/util.jl @@ -89,6 +89,10 @@ end @test rstrip(isnumeric, "abc0123") == "abc" @test lstrip("ello", ['e','o']) == "llo" @test rstrip("ello", ['e','o']) == "ell" + + @test_throws ArgumentError strip("", "") + @test_throws ArgumentError lstrip("", "") + @test_throws ArgumentError rstrip("", "") end @testset "partition" begin From 4dc08dcc93dd305907bbdff6717ad3feb4e958b5 Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Sat, 30 Sep 2023 17:12:35 -0400 Subject: [PATCH 07/45] fix `_tryonce_download_from_cache` (busybox.exe download error) (#51531) (cherry picked from commit ca862df7bfc534d22d4d39d265d1f74d59c1ab77) --- test/spawn.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spawn.jl b/test/spawn.jl index 0241c65573886..3fdfa794ff39e 100644 --- a/test/spawn.jl +++ b/test/spawn.jl @@ -22,7 +22,7 @@ lscmd = `ls` havebb = false function _tryonce_download_from_cache(desired_url::AbstractString) - cache_url = "https://cache.julialang.org/foo/$(desired_url)" + cache_url = "https://cache.julialang.org/$(desired_url)" cache_output_filename = joinpath(mktempdir(), "myfile") cache_response = Downloads.request( cache_url; From 0e9adddd33d7a1365125d333cd764dd080a8a5fd Mon Sep 17 00:00:00 2001 From: Jakob Nybo Nissen Date: Mon, 2 Oct 2023 13:13:24 +0200 Subject: [PATCH 08/45] Fix string index error in tab completion code, fixes #51540 (#51541) (cherry picked from commit 6ce15fce1cf92bd2d86d04ceccd501a383656b81) --- stdlib/REPL/src/REPLCompletions.jl | 2 +- stdlib/REPL/test/replcompletions.jl | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/stdlib/REPL/src/REPLCompletions.jl b/stdlib/REPL/src/REPLCompletions.jl index 20d26953eb22b..57797583de75f 100644 --- a/stdlib/REPL/src/REPLCompletions.jl +++ b/stdlib/REPL/src/REPLCompletions.jl @@ -943,7 +943,7 @@ function complete_identifiers!(suggestions::Vector{Completion}, @nospecialize(ff ex = nothing comp_keywords && append!(suggestions, complete_keyword(name)) if dotpos > 1 && string[dotpos] == '.' - s = string[1:dotpos-1] + s = string[1:prevind(string, dotpos)] # First see if the whole string up to `pos` is a valid expression. If so, use it. ex = Meta.parse(s, raise=false, depwarn=false) if isexpr(ex, :incomplete) diff --git a/stdlib/REPL/test/replcompletions.jl b/stdlib/REPL/test/replcompletions.jl index b2199e10bef55..4c777a78cf593 100644 --- a/stdlib/REPL/test/replcompletions.jl +++ b/stdlib/REPL/test/replcompletions.jl @@ -23,6 +23,8 @@ let ex = quote end type_test = Test_x(Test_y(1)) (::Test_y)() = "", "" + unicode_αβγ = Test_y(1) + module CompletionFoo2 end @@ -253,6 +255,11 @@ let s = "Main.CompletionFoo.type_test.x" @test s[r] == "x" end +let s = "Main.CompletionFoo.unicode_αβγ.y" + c, r = test_complete(s) + @test "yy" in c +end + let s = "Main.CompletionFoo.bar.no_val_available" c, r = test_complete(s) @test length(c)==0 From e1f1cc8f71eb64f25ff138eaa2cbf9d6604d60b4 Mon Sep 17 00:00:00 2001 From: pchintalapudi <34727397+pchintalapudi@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:42:23 +0000 Subject: [PATCH 09/45] Don't mark nonlocal symbols as hidden (#51530) Co-authored-by: Valentin Churavy (cherry picked from commit ac8246fa60b9b51b80b5d553d9e56d22e41d3206) --- src/aotcompile.cpp | 8 ++++++-- src/codegen.cpp | 4 ++++ src/staticdata.c | 12 ++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/aotcompile.cpp b/src/aotcompile.cpp index 05088394500c1..a1a8a40a5ce55 100644 --- a/src/aotcompile.cpp +++ b/src/aotcompile.cpp @@ -835,8 +835,12 @@ static SmallVector partitionModule(Module &M, unsigned threads) { continue; if (!canPartition(G)) continue; - G.setLinkage(GlobalValue::ExternalLinkage); - G.setVisibility(GlobalValue::HiddenVisibility); + // Currently ccallable global aliases have extern linkage, we only want to make the + // internally linked functions/global variables extern+hidden + if (G.hasLocalLinkage()) { + G.setLinkage(GlobalValue::ExternalLinkage); + G.setVisibility(GlobalValue::HiddenVisibility); + } if (auto F = dyn_cast(&G)) { partitioner.make(&G, getFunctionWeight(*F).weight); } else { diff --git a/src/codegen.cpp b/src/codegen.cpp index f72c2ae2056b9..9dc671dc0ea97 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -6801,6 +6801,10 @@ const char *jl_generate_ccallable(LLVMOrcThreadSafeModuleRef llvmmod, void *sysi int found = jl_dlsym(sysimg_handle, name, &addr, 0); if (found) add_named_global(name, addr); + else { + err = jl_get_exceptionf(jl_errorexception_type, "%s not found in sysimg", name); + jl_throw(err); + } } else { jl_method_instance_t *lam = jl_get_specialization1((jl_tupletype_t*)sigt, world, &min_valid, &max_valid, 0); diff --git a/src/staticdata.c b/src/staticdata.c index a974d98a39835..31e7a4c812b1c 100644 --- a/src/staticdata.c +++ b/src/staticdata.c @@ -3371,7 +3371,7 @@ static jl_value_t *jl_validate_cache_file(ios_t *f, jl_array_t *depmods, uint64_ } // TODO?: refactor to make it easier to create the "package inspector" -static jl_value_t *jl_restore_package_image_from_stream(ios_t *f, jl_image_t *image, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) +static jl_value_t *jl_restore_package_image_from_stream(void* pkgimage_handle, ios_t *f, jl_image_t *image, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) { JL_TIMING(LOAD_IMAGE, LOAD_Pkgimg); jl_timing_printf(JL_TIMING_DEFAULT_BLOCK, pkgname); @@ -3426,7 +3426,7 @@ static jl_value_t *jl_restore_package_image_from_stream(ios_t *f, jl_image_t *im size_t world = jl_atomic_load_acquire(&jl_world_counter); jl_insert_backedges((jl_array_t*)edges, (jl_array_t*)ext_targets, (jl_array_t*)new_specializations, world); // restore external backedges (needs to be last) // reinit ccallables - jl_reinit_ccallable(&ccallable_list, base, NULL); + jl_reinit_ccallable(&ccallable_list, base, pkgimage_handle); arraylist_free(&ccallable_list); if (completeinfo) { @@ -3457,11 +3457,11 @@ static void jl_restore_system_image_from_stream(ios_t *f, jl_image_t *image, uin jl_restore_system_image_from_stream_(f, image, NULL, checksum | ((uint64_t)0xfdfcfbfa << 32), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } -JL_DLLEXPORT jl_value_t *jl_restore_incremental_from_buf(const char *buf, jl_image_t *image, size_t sz, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) +JL_DLLEXPORT jl_value_t *jl_restore_incremental_from_buf(void* pkgimage_handle, const char *buf, jl_image_t *image, size_t sz, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) { ios_t f; ios_static_buffer(&f, (char*)buf, sz); - jl_value_t *ret = jl_restore_package_image_from_stream(&f, image, depmods, completeinfo, pkgname, needs_permalloc); + jl_value_t *ret = jl_restore_package_image_from_stream(pkgimage_handle, &f, image, depmods, completeinfo, pkgname, needs_permalloc); ios_close(&f); return ret; } @@ -3474,7 +3474,7 @@ JL_DLLEXPORT jl_value_t *jl_restore_incremental(const char *fname, jl_array_t *d "Cache file \"%s\" not found.\n", fname); } jl_image_t pkgimage = {}; - jl_value_t *ret = jl_restore_package_image_from_stream(&f, &pkgimage, depmods, completeinfo, pkgname, true); + jl_value_t *ret = jl_restore_package_image_from_stream(NULL, &f, &pkgimage, depmods, completeinfo, pkgname, true); ios_close(&f); return ret; } @@ -3545,7 +3545,7 @@ JL_DLLEXPORT jl_value_t *jl_restore_package_image_from_file(const char *fname, j jl_image_t pkgimage = jl_init_processor_pkgimg(pkgimg_handle); - jl_value_t* mod = jl_restore_incremental_from_buf(pkgimg_data, &pkgimage, *plen, depmods, completeinfo, pkgname, false); + jl_value_t* mod = jl_restore_incremental_from_buf(pkgimg_handle, pkgimg_data, &pkgimage, *plen, depmods, completeinfo, pkgname, false); return mod; } From 37a1b6fb53f43be2ab5c77729377dc52f33dd941 Mon Sep 17 00:00:00 2001 From: Rafael Fourquet Date: Fri, 22 Sep 2023 15:57:37 +0200 Subject: [PATCH 10/45] make `hash(::Xoshiro)` compatible with `==` (#51376) --- stdlib/Random/src/Xoshiro.jl | 8 ++++++ stdlib/Random/test/runtests.jl | 51 ++++++++++++++++++++++------------ 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/stdlib/Random/src/Xoshiro.jl b/stdlib/Random/src/Xoshiro.jl index a25e2c1077e04..cb050f9c56b5a 100644 --- a/stdlib/Random/src/Xoshiro.jl +++ b/stdlib/Random/src/Xoshiro.jl @@ -81,6 +81,8 @@ function ==(a::Xoshiro, b::Xoshiro) a.s0 == b.s0 && a.s1 == b.s1 && a.s2 == b.s2 && a.s3 == b.s3 && a.s4 == b.s4 end +hash(x::Xoshiro, h::UInt) = hash((x.s0, x.s1, x.s2, x.s3, x.s4), h + 0x49a62c2dda6fa9be % UInt) + rng_native_52(::Xoshiro) = UInt64 @inline function rand(rng::Xoshiro, ::SamplerType{UInt64}) @@ -221,6 +223,12 @@ end ==(a::TaskLocalRNG, b::Xoshiro) = b == a +function hash(x::TaskLocalRNG, h::UInt) + t = current_task() + hash((t.rngState0, t.rngState1, t.rngState2, t.rngState3, t.rngState4), h + 0x49a62c2dda6fa9be % UInt) +end + + # for partial words, use upper bits from Xoshiro rand(r::Union{TaskLocalRNG, Xoshiro}, ::SamplerTrivial{UInt52Raw{UInt64}}) = rand(r, UInt64) >>> 12 diff --git a/stdlib/Random/test/runtests.jl b/stdlib/Random/test/runtests.jl index 3f570d862b743..4fe30a50143d2 100644 --- a/stdlib/Random/test/runtests.jl +++ b/stdlib/Random/test/runtests.jl @@ -594,24 +594,41 @@ guardseed() do Random.seed!(typemax(UInt128)) end -# copy, == and hash -let seed = rand(UInt32, 10) - r = MersenneTwister(seed) - @test r == MersenneTwister(seed) # r.vals should be all zeros - @test hash(r) == hash(MersenneTwister(seed)) - s = copy(r) - @test s == r && s !== r - @test hash(s) == hash(r) - skip, len = rand(0:2000, 2) - for j=1:skip - rand(r) - rand(s) +@testset "copy, == and hash" begin + for RNG = (MersenneTwister, Xoshiro) + seed = rand(UInt32, 10) + r = RNG(seed) + t = RNG(seed) + @test r == t + @test hash(r) == hash(t) + s = copy(r) + @test s == r == t && s !== r + @test hash(s) == hash(r) + skip, len = rand(0:2000, 2) + for j=1:skip + rand(r) + @test r != s + @test hash(r) != hash(s) + rand(s) + end + @test rand(r, len) == rand(s, len) + @test s == r + @test hash(s) == hash(r) + h = rand(UInt) + @test hash(s, h) == hash(r, h) + if RNG == Xoshiro + t = copy(TaskLocalRNG()) + @test hash(t) == hash(TaskLocalRNG()) + @test hash(t, h) == hash(TaskLocalRNG(), h) + x = rand() + @test hash(t) != hash(TaskLocalRNG()) + @test rand(t) == x + @test hash(t) == hash(TaskLocalRNG()) + copy!(TaskLocalRNG(), r) + @test hash(TaskLocalRNG()) == hash(r) + @test TaskLocalRNG() == r + end end - @test rand(r, len) == rand(s, len) - @test s == r - @test hash(s) == hash(r) - h = rand(UInt) - @test hash(s, h) == hash(r, h) end # MersenneTwister initialization with invalid values From 510550b1471803d1c5bb9419d633e6cc9ba1498a Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Tue, 3 Oct 2023 20:24:16 -0400 Subject: [PATCH 11/45] Fix last startup & shutdown precompiles (#51557) (cherry picked from commit f2d1276be8a1d4831addb62376eb19550494d3d1) --- contrib/generate_precompile.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/generate_precompile.jl b/contrib/generate_precompile.jl index fea4ca6bc1fe3..7ad976e1e0106 100644 --- a/contrib/generate_precompile.jl +++ b/contrib/generate_precompile.jl @@ -28,6 +28,7 @@ const fancyprint = (stdout isa Base.TTY) && Base.get_bool_env("CI", false) !== t ## CTRL_C = '\x03' +CTRL_D = '\x04' CTRL_R = '\x12' UP_ARROW = "\e[A" DOWN_ARROW = "\e[B" @@ -44,6 +45,7 @@ precompile(Tuple{typeof(delete!), Dict{Base.PkgId,Vector{Function}}, Base.PkgId} precompile(Tuple{typeof(push!), Vector{Function}, Function}) # miscellaneous +precompile(Tuple{typeof(Base.exit)}) precompile(Tuple{typeof(Base.require), Base.PkgId}) precompile(Tuple{typeof(Base.recursive_prefs_merge), Base.Dict{String, Any}}) precompile(Tuple{typeof(Base.recursive_prefs_merge), Base.Dict{String, Any}, Base.Dict{String, Any}, Vararg{Base.Dict{String, Any}}}) @@ -373,7 +375,7 @@ generate_precompile_statements() = try # Make sure `ansi_enablecursor` is printe end end end - write(ptm, "exit()\n") + write(ptm, "$CTRL_D") wait(tee) success(p) || Base.pipeline_error(p) close(ptm) From 8cb319795448063df78d897839f7602952808a95 Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Fri, 15 Sep 2023 14:02:41 -0400 Subject: [PATCH 12/45] complete false & true more generally as vals (#51326) (cherry picked from commit e85f0a5a718f68e581b07eb60fd0d8203b0cd0da) --- stdlib/REPL/src/REPLCompletions.jl | 41 ++++++++++++++++++++--------- stdlib/REPL/test/replcompletions.jl | 9 +++++++ 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/stdlib/REPL/src/REPLCompletions.jl b/stdlib/REPL/src/REPLCompletions.jl index 57797583de75f..a6cb12ab05211 100644 --- a/stdlib/REPL/src/REPLCompletions.jl +++ b/stdlib/REPL/src/REPLCompletions.jl @@ -19,6 +19,10 @@ struct KeywordCompletion <: Completion keyword::String end +struct KeyvalCompletion <: Completion + keyval::String +end + struct PathCompletion <: Completion path::String end @@ -99,6 +103,7 @@ end _completion_text(c::TextCompletion) = c.text _completion_text(c::KeywordCompletion) = c.keyword +_completion_text(c::KeyvalCompletion) = c.keyval _completion_text(c::PathCompletion) = c.path _completion_text(c::ModuleCompletion) = c.mod _completion_text(c::PackageCompletion) = c.package @@ -213,24 +218,30 @@ function complete_symbol(@nospecialize(ex), name::String, @nospecialize(ffunc), suggestions end +function complete_from_list(T::Type, list::Vector{String}, s::Union{String,SubString{String}}) + r = searchsorted(list, s) + i = first(r) + n = length(list) + while i <= n && startswith(list[i],s) + r = first(r):i + i += 1 + end + Completion[T(kw) for kw in list[r]] +end + const sorted_keywords = [ "abstract type", "baremodule", "begin", "break", "catch", "ccall", - "const", "continue", "do", "else", "elseif", "end", "export", "false", + "const", "continue", "do", "else", "elseif", "end", "export", "finally", "for", "function", "global", "if", "import", "let", "local", "macro", "module", "mutable struct", "primitive type", "quote", "return", "struct", - "true", "try", "using", "while"] + "try", "using", "while"] -function complete_keyword(s::Union{String,SubString{String}}) - r = searchsorted(sorted_keywords, s) - i = first(r) - n = length(sorted_keywords) - while i <= n && startswith(sorted_keywords[i],s) - r = first(r):i - i += 1 - end - Completion[KeywordCompletion(kw) for kw in sorted_keywords[r]] -end +complete_keyword(s::Union{String,SubString{String}}) = complete_from_list(KeywordCompletion, sorted_keywords, s) + +const sorted_keyvals = ["false", "true"] + +complete_keyval(s::Union{String,SubString{String}}) = complete_from_list(KeyvalCompletion, sorted_keyvals, s) function complete_path(path::AbstractString, pos::Int; use_envpath=false, shell_escape=false, @@ -919,6 +930,7 @@ function complete_keyword_argument(partial, last_idx, context_module) suggestions = Completion[KeywordArgumentCompletion(kwarg) for kwarg in kwargs] append!(suggestions, complete_symbol(nothing, last_word, Returns(true), context_module)) + append!(suggestions, complete_keyval(last_word)) return sort!(suggestions, by=completion_text), wordrange end @@ -941,7 +953,10 @@ end function complete_identifiers!(suggestions::Vector{Completion}, @nospecialize(ffunc::Function), context_module::Module, string::String, name::String, pos::Int, dotpos::Int, startpos::Int, comp_keywords=false) ex = nothing - comp_keywords && append!(suggestions, complete_keyword(name)) + if comp_keywords + append!(suggestions, complete_keyword(name)) + append!(suggestions, complete_keyval(name)) + end if dotpos > 1 && string[dotpos] == '.' s = string[1:prevind(string, dotpos)] # First see if the whole string up to `pos` is a valid expression. If so, use it. diff --git a/stdlib/REPL/test/replcompletions.jl b/stdlib/REPL/test/replcompletions.jl index 4c777a78cf593..501193b15e2f4 100644 --- a/stdlib/REPL/test/replcompletions.jl +++ b/stdlib/REPL/test/replcompletions.jl @@ -1880,3 +1880,12 @@ let s = "`abc`.e" # (completions for the fields of `Cmd`) @test c == Any["env", "exec"] end + +Issue49892(x) = x +let s = "Issue49892(fal" + c, r, res = test_complete_context(s, @__MODULE__) + @test res + for n in ("false", "falses") + @test n in c + end +end From ddec9e4530742aae8c904b478f3c5e15679455e7 Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Wed, 4 Oct 2023 09:53:51 -0400 Subject: [PATCH 13/45] Revert "Don't mark nonlocal symbols as hidden (#51530)" This reverts commit e1f1cc8f71eb64f25ff138eaa2cbf9d6604d60b4. --- src/aotcompile.cpp | 8 ++------ src/codegen.cpp | 4 ---- src/staticdata.c | 12 ++++++------ 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/aotcompile.cpp b/src/aotcompile.cpp index a1a8a40a5ce55..05088394500c1 100644 --- a/src/aotcompile.cpp +++ b/src/aotcompile.cpp @@ -835,12 +835,8 @@ static SmallVector partitionModule(Module &M, unsigned threads) { continue; if (!canPartition(G)) continue; - // Currently ccallable global aliases have extern linkage, we only want to make the - // internally linked functions/global variables extern+hidden - if (G.hasLocalLinkage()) { - G.setLinkage(GlobalValue::ExternalLinkage); - G.setVisibility(GlobalValue::HiddenVisibility); - } + G.setLinkage(GlobalValue::ExternalLinkage); + G.setVisibility(GlobalValue::HiddenVisibility); if (auto F = dyn_cast(&G)) { partitioner.make(&G, getFunctionWeight(*F).weight); } else { diff --git a/src/codegen.cpp b/src/codegen.cpp index 9dc671dc0ea97..f72c2ae2056b9 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -6801,10 +6801,6 @@ const char *jl_generate_ccallable(LLVMOrcThreadSafeModuleRef llvmmod, void *sysi int found = jl_dlsym(sysimg_handle, name, &addr, 0); if (found) add_named_global(name, addr); - else { - err = jl_get_exceptionf(jl_errorexception_type, "%s not found in sysimg", name); - jl_throw(err); - } } else { jl_method_instance_t *lam = jl_get_specialization1((jl_tupletype_t*)sigt, world, &min_valid, &max_valid, 0); diff --git a/src/staticdata.c b/src/staticdata.c index 31e7a4c812b1c..a974d98a39835 100644 --- a/src/staticdata.c +++ b/src/staticdata.c @@ -3371,7 +3371,7 @@ static jl_value_t *jl_validate_cache_file(ios_t *f, jl_array_t *depmods, uint64_ } // TODO?: refactor to make it easier to create the "package inspector" -static jl_value_t *jl_restore_package_image_from_stream(void* pkgimage_handle, ios_t *f, jl_image_t *image, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) +static jl_value_t *jl_restore_package_image_from_stream(ios_t *f, jl_image_t *image, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) { JL_TIMING(LOAD_IMAGE, LOAD_Pkgimg); jl_timing_printf(JL_TIMING_DEFAULT_BLOCK, pkgname); @@ -3426,7 +3426,7 @@ static jl_value_t *jl_restore_package_image_from_stream(void* pkgimage_handle, i size_t world = jl_atomic_load_acquire(&jl_world_counter); jl_insert_backedges((jl_array_t*)edges, (jl_array_t*)ext_targets, (jl_array_t*)new_specializations, world); // restore external backedges (needs to be last) // reinit ccallables - jl_reinit_ccallable(&ccallable_list, base, pkgimage_handle); + jl_reinit_ccallable(&ccallable_list, base, NULL); arraylist_free(&ccallable_list); if (completeinfo) { @@ -3457,11 +3457,11 @@ static void jl_restore_system_image_from_stream(ios_t *f, jl_image_t *image, uin jl_restore_system_image_from_stream_(f, image, NULL, checksum | ((uint64_t)0xfdfcfbfa << 32), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } -JL_DLLEXPORT jl_value_t *jl_restore_incremental_from_buf(void* pkgimage_handle, const char *buf, jl_image_t *image, size_t sz, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) +JL_DLLEXPORT jl_value_t *jl_restore_incremental_from_buf(const char *buf, jl_image_t *image, size_t sz, jl_array_t *depmods, int completeinfo, const char *pkgname, bool needs_permalloc) { ios_t f; ios_static_buffer(&f, (char*)buf, sz); - jl_value_t *ret = jl_restore_package_image_from_stream(pkgimage_handle, &f, image, depmods, completeinfo, pkgname, needs_permalloc); + jl_value_t *ret = jl_restore_package_image_from_stream(&f, image, depmods, completeinfo, pkgname, needs_permalloc); ios_close(&f); return ret; } @@ -3474,7 +3474,7 @@ JL_DLLEXPORT jl_value_t *jl_restore_incremental(const char *fname, jl_array_t *d "Cache file \"%s\" not found.\n", fname); } jl_image_t pkgimage = {}; - jl_value_t *ret = jl_restore_package_image_from_stream(NULL, &f, &pkgimage, depmods, completeinfo, pkgname, true); + jl_value_t *ret = jl_restore_package_image_from_stream(&f, &pkgimage, depmods, completeinfo, pkgname, true); ios_close(&f); return ret; } @@ -3545,7 +3545,7 @@ JL_DLLEXPORT jl_value_t *jl_restore_package_image_from_file(const char *fname, j jl_image_t pkgimage = jl_init_processor_pkgimg(pkgimg_handle); - jl_value_t* mod = jl_restore_incremental_from_buf(pkgimg_handle, pkgimg_data, &pkgimage, *plen, depmods, completeinfo, pkgname, false); + jl_value_t* mod = jl_restore_incremental_from_buf(pkgimg_data, &pkgimage, *plen, depmods, completeinfo, pkgname, false); return mod; } From 674f440b1ab98da6796b9f3cdf7b5ea6a775d4df Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Thu, 5 Oct 2023 01:30:14 -0400 Subject: [PATCH 14/45] avoid limiting Type{Any} to Type (#51512) Fix #51510 (cherry picked from commit 25f510a34523922f45f9d676d156123959a29f47) --- base/compiler/typelimits.jl | 2 +- test/compiler/inference.jl | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/base/compiler/typelimits.jl b/base/compiler/typelimits.jl index 4552c4f815337..09372b2dc9613 100644 --- a/base/compiler/typelimits.jl +++ b/base/compiler/typelimits.jl @@ -135,8 +135,8 @@ function _limit_type_size(@nospecialize(t), @nospecialize(c), sources::SimpleVec ct = Union{} end Qt = __limit_type_size(tt, ct, sources, depth + 1, 0) - Qt === Any && return Type Qt === tt && return t + Qt === Any && return Type # Can't form Type{<:Qt} just yet, without first make sure we limited the depth # enough, since this moves Qt outside of Type for is_derived_type_from_any Qt = __limit_type_size(tt, ct, sources, depth + 2, 0) diff --git a/test/compiler/inference.jl b/test/compiler/inference.jl index d767b2cfe3eb3..dc46bc2495c7f 100644 --- a/test/compiler/inference.jl +++ b/test/compiler/inference.jl @@ -121,6 +121,11 @@ end @test Core.Compiler.limit_type_size(Type{Union{Int,Type{Int}}}, Type{Type{Int}}, Union{}, 0, 0) == Type +@test Core.Compiler.limit_type_size(Type{Any}, Union{}, Union{}, 0, 0) == + Core.Compiler.limit_type_size(Type{Any}, Any, Union{}, 0, 0) == + Core.Compiler.limit_type_size(Type{Any}, Type, Union{}, 0, 0) == + Type{Any} + # issue #43296 #43296 struct C43296{t,I} end r43296(b) = r43296(typeof(b)) From 1e95bf8be02ee858d707c7346c53bab7d787a422 Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Thu, 5 Oct 2023 08:29:49 -0400 Subject: [PATCH 15/45] reset `maxprobe` on `empty!` (#51595) As pointed out in https://github.com/JuliaLang/julia/issues/51594#issuecomment-1747781744, this is necessary for the assertion added in https://github.com/JuliaLang/julia/pull/49447 to be valid. Fix #51594 (cherry picked from commit c18e48559ce471e30a14ffd96eafd3ee6600552e) --- base/dict.jl | 2 ++ test/dict.jl | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/base/dict.jl b/base/dict.jl index 8a78c1fa8da45..68423482f21b7 100644 --- a/base/dict.jl +++ b/base/dict.jl @@ -176,6 +176,7 @@ end resize!(h.keys, newsz) resize!(h.vals, newsz) h.ndel = 0 + h.maxprobe = 0 return h end @@ -251,6 +252,7 @@ function empty!(h::Dict{K,V}) where V where K resize!(h.vals, sz) h.ndel = 0 h.count = 0 + h.maxprobe = 0 h.age += 1 h.idxfloor = sz return h diff --git a/test/dict.jl b/test/dict.jl index 6a47c3c6eea8b..c935ae1be5dac 100644 --- a/test/dict.jl +++ b/test/dict.jl @@ -1371,3 +1371,24 @@ for T in (Int, Float64, String, Symbol) @test !Core.Compiler.is_nothrow(Base.infer_effects(getindex, (Dict{T,Any}, T))) @test Core.Compiler.is_terminates(Base.infer_effects(getindex, (Dict{T,Any}, T))) end + +struct BadHash + i::Int +end +Base.hash(::BadHash, ::UInt)=UInt(1) +@testset "maxprobe reset #51595" begin + d = Dict(BadHash(i)=>nothing for i in 1:20) + empty!(d) + sizehint!(d, 0) + @test d.maxprobe < length(d.keys) + d[BadHash(1)]=nothing + @test !(BadHash(2) in keys(d)) + d = Dict(BadHash(i)=>nothing for i in 1:20) + for _ in 1:20 + pop!(d) + end + sizehint!(d, 0) + @test d.maxprobe < length(d.keys) + d[BadHash(1)]=nothing + @test !(BadHash(2) in keys(d)) +end From 8c387e3b2f5cf904f3ae3b3fb82bfcee16b1fda4 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Thu, 5 Oct 2023 18:22:47 +0530 Subject: [PATCH 16/45] Aggressive constprop in LinearAlgebra.wrap (#51582) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This helps with type-stability, as the flag `tA` is usually known from the type of the matrix. On master, ```julia julia> f(A) = LinearAlgebra.wrap(A, 'N') f (generic function with 1 method) julia> @code_typed f([1;;]) CodeInfo( 1 ─ %1 = invoke LinearAlgebra.wrap(A::Matrix{Int64}, 'N'::Char)::Union{Adjoint{Int64, Matrix{Int64}}, Hermitian{Int64, Matrix{Int64}}, Symmetric{Int64, Matrix{Int64}}, Transpose{Int64, Matrix{Int64}}, Matrix{Int64}} └── return %1 ) => Union{Adjoint{Int64, Matrix{Int64}}, Hermitian{Int64, Matrix{Int64}}, Symmetric{Int64, Matrix{Int64}}, Transpose{Int64, Matrix{Int64}}, Matrix{Int64}} ``` This PR ```julia julia> @code_typed f([1;;]) CodeInfo( 1 ─ return A ) => Matrix{Int64} ``` (cherry picked from commit 0fd7f72109a8741720650f72ca41b10d95e9e39e) --- stdlib/LinearAlgebra/src/LinearAlgebra.jl | 2 +- stdlib/LinearAlgebra/test/matmul.jl | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/stdlib/LinearAlgebra/src/LinearAlgebra.jl b/stdlib/LinearAlgebra/src/LinearAlgebra.jl index 386de771d666f..85ba1d2770ba7 100644 --- a/stdlib/LinearAlgebra/src/LinearAlgebra.jl +++ b/stdlib/LinearAlgebra/src/LinearAlgebra.jl @@ -465,7 +465,7 @@ wrapper_char(A::Hermitian) = A.uplo == 'U' ? 'H' : 'h' wrapper_char(A::Hermitian{<:Real}) = A.uplo == 'U' ? 'S' : 's' wrapper_char(A::Symmetric) = A.uplo == 'U' ? 'S' : 's' -function wrap(A::AbstractVecOrMat, tA::AbstractChar) +Base.@constprop :aggressive function wrap(A::AbstractVecOrMat, tA::AbstractChar) if tA == 'N' return A elseif tA == 'T' diff --git a/stdlib/LinearAlgebra/test/matmul.jl b/stdlib/LinearAlgebra/test/matmul.jl index e6000a4b24e2d..86606654e911a 100644 --- a/stdlib/LinearAlgebra/test/matmul.jl +++ b/stdlib/LinearAlgebra/test/matmul.jl @@ -17,6 +17,14 @@ mul_wrappers = [ m -> adjoint(m), m -> transpose(m)] +@testset "wrap" begin + f(A) = LinearAlgebra.wrap(A, 'N') + A = ones(1,1) + @test @inferred(f(A)) === A + g(A) = LinearAlgebra.wrap(A, 'T') + @test @inferred(g(A)) === transpose(A) +end + @testset "matrices with zero dimensions" begin for (dimsA, dimsB, dimsC) in ( ((0, 5), (5, 3), (0, 3)), From b3898c34561353aac16826c96624f80cb6cd43cc Mon Sep 17 00:00:00 2001 From: Diogo Netto <61364108+d-netto@users.noreply.github.com> Date: Thu, 5 Oct 2023 11:04:23 -0300 Subject: [PATCH 17/45] correctly track element pointer in heap snapshot (#51592) Fixes https://github.com/JuliaLang/julia/issues/51576 on a simple snapshot I collected on my machine. (cherry picked from commit 5bdc1b34cf29db9261a540faecea97ebd941885f) --- src/gc.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/gc.c b/src/gc.c index 1984c92ec3c14..8969969ab66f5 100644 --- a/src/gc.c +++ b/src/gc.c @@ -1975,7 +1975,8 @@ STATIC_INLINE void gc_mark_objarray(jl_ptls_t ptls, jl_value_t *obj_parent, jl_v // the first young object before starting this chunk // (this also would be valid for young objects, but probably less beneficial) for (; obj_begin < obj_end; obj_begin += step) { - new_obj = *obj_begin; + jl_value_t **slot = obj_begin; + new_obj = *slot; if (new_obj != NULL) { verify_parent2("obj array", obj_parent, obj_begin, "elem(%d)", gc_slot_to_arrayidx(obj_parent, obj_begin)); @@ -1984,7 +1985,7 @@ STATIC_INLINE void gc_mark_objarray(jl_ptls_t ptls, jl_value_t *obj_parent, jl_v nptr |= 1; if (!gc_marked(o->header)) break; - gc_heap_snapshot_record_array_edge(obj_parent, &new_obj); + gc_heap_snapshot_record_array_edge(obj_parent, slot); } } } @@ -2006,13 +2007,14 @@ STATIC_INLINE void gc_mark_objarray(jl_ptls_t ptls, jl_value_t *obj_parent, jl_v } } for (; obj_begin < scan_end; obj_begin += step) { + jl_value_t **slot = obj_begin; new_obj = *obj_begin; if (new_obj != NULL) { verify_parent2("obj array", obj_parent, obj_begin, "elem(%d)", gc_slot_to_arrayidx(obj_parent, obj_begin)); gc_assert_parent_validity(obj_parent, new_obj); gc_try_claim_and_push(mq, new_obj, &nptr); - gc_heap_snapshot_record_array_edge(obj_parent, &new_obj); + gc_heap_snapshot_record_array_edge(obj_parent, slot); } } if (too_big) { @@ -2043,7 +2045,8 @@ STATIC_INLINE void gc_mark_array8(jl_ptls_t ptls, jl_value_t *ary8_parent, jl_va for (; ary8_begin < ary8_end; ary8_begin += elsize) { int early_end = 0; for (uint8_t *pindex = elem_begin; pindex < elem_end; pindex++) { - new_obj = ary8_begin[*pindex]; + jl_value_t **slot = &ary8_begin[*pindex]; + new_obj = *slot; if (new_obj != NULL) { verify_parent2("array", ary8_parent, &new_obj, "elem(%d)", gc_slot_to_arrayidx(ary8_parent, ary8_begin)); @@ -2054,7 +2057,7 @@ STATIC_INLINE void gc_mark_array8(jl_ptls_t ptls, jl_value_t *ary8_parent, jl_va early_end = 1; break; } - gc_heap_snapshot_record_array_edge(ary8_parent, &new_obj); + gc_heap_snapshot_record_array_edge(ary8_parent, slot); } } if (early_end) @@ -2080,13 +2083,14 @@ STATIC_INLINE void gc_mark_array8(jl_ptls_t ptls, jl_value_t *ary8_parent, jl_va } for (; ary8_begin < ary8_end; ary8_begin += elsize) { for (uint8_t *pindex = elem_begin; pindex < elem_end; pindex++) { - new_obj = ary8_begin[*pindex]; + jl_value_t **slot = &ary8_begin[*pindex]; + new_obj = *slot; if (new_obj != NULL) { verify_parent2("array", ary8_parent, &new_obj, "elem(%d)", gc_slot_to_arrayidx(ary8_parent, ary8_begin)); gc_assert_parent_validity(ary8_parent, new_obj); gc_try_claim_and_push(mq, new_obj, &nptr); - gc_heap_snapshot_record_array_edge(ary8_parent, &new_obj); + gc_heap_snapshot_record_array_edge(ary8_parent, slot); } } } @@ -2118,7 +2122,8 @@ STATIC_INLINE void gc_mark_array16(jl_ptls_t ptls, jl_value_t *ary16_parent, jl_ for (; ary16_begin < ary16_end; ary16_begin += elsize) { int early_end = 0; for (uint16_t *pindex = elem_begin; pindex < elem_end; pindex++) { - new_obj = ary16_begin[*pindex]; + jl_value_t **slot = &ary16_begin[*pindex]; + new_obj = *slot; if (new_obj != NULL) { verify_parent2("array", ary16_parent, &new_obj, "elem(%d)", gc_slot_to_arrayidx(ary16_parent, ary16_begin)); @@ -2129,7 +2134,7 @@ STATIC_INLINE void gc_mark_array16(jl_ptls_t ptls, jl_value_t *ary16_parent, jl_ early_end = 1; break; } - gc_heap_snapshot_record_array_edge(ary16_parent, &new_obj); + gc_heap_snapshot_record_array_edge(ary16_parent, slot); } } if (early_end) @@ -2155,13 +2160,14 @@ STATIC_INLINE void gc_mark_array16(jl_ptls_t ptls, jl_value_t *ary16_parent, jl_ } for (; ary16_begin < scan_end; ary16_begin += elsize) { for (uint16_t *pindex = elem_begin; pindex < elem_end; pindex++) { - new_obj = ary16_begin[*pindex]; + jl_value_t **slot = &ary16_begin[*pindex]; + new_obj = *slot; if (new_obj != NULL) { verify_parent2("array", ary16_parent, &new_obj, "elem(%d)", gc_slot_to_arrayidx(ary16_parent, ary16_begin)); gc_assert_parent_validity(ary16_parent, new_obj); gc_try_claim_and_push(mq, new_obj, &nptr); - gc_heap_snapshot_record_array_edge(ary16_parent, &new_obj); + gc_heap_snapshot_record_array_edge(ary16_parent, slot); } } } From 2523d15dfc791231b960198c7b43fc11e2a9931e Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Wed, 4 Oct 2023 17:16:41 -0400 Subject: [PATCH 18/45] fix annotations on `sym_in` (#51573) This seems to be the right combination of annotations to fix both #50562 and an inference regression in PropertyDicts.jl on the 1.10 release branch. When backported the `@noinline` should be restored for 1.10. (cherry picked from commit f7e8f924f524b102ce8bb50e6662ca9b16e02c30) --- base/tuple.jl | 5 +++-- test/namedtuple.jl | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/base/tuple.jl b/base/tuple.jl index ae5de41586848..518641de1c143 100644 --- a/base/tuple.jl +++ b/base/tuple.jl @@ -606,14 +606,15 @@ any(x::Tuple{Bool, Bool}) = x[1]|x[2] any(x::Tuple{Bool, Bool, Bool}) = x[1]|x[2]|x[3] # a version of `in` esp. for NamedTuple, to make it pure, and not compiled for each tuple length -function sym_in(x::Symbol, @nospecialize itr::Tuple{Vararg{Symbol}}) +function sym_in(x::Symbol, itr::Tuple{Vararg{Symbol}}) + @noinline @_total_meta for y in itr y === x && return true end return false end -in(x::Symbol, @nospecialize itr::Tuple{Vararg{Symbol}}) = sym_in(x, itr) +in(x::Symbol, itr::Tuple{Vararg{Symbol}}) = sym_in(x, itr) """ diff --git a/test/namedtuple.jl b/test/namedtuple.jl index eb3846c8cbffd..0e9648dbcb9c0 100644 --- a/test/namedtuple.jl +++ b/test/namedtuple.jl @@ -394,3 +394,23 @@ let a = Base.NamedTuple{(:a, :b), Tuple{Any, Any}}((1, 2)), b = Base.NamedTuple{ @test typeof(Base.merge(a, b)) == Base.NamedTuple{(:a, :b), Tuple{Any, Float64}} @test typeof(Base.structdiff(a, b)) == Base.NamedTuple{(:a,), Tuple{Any}} end + +function mergewith51009(combine, a::NamedTuple{an}, b::NamedTuple{bn}) where {an, bn} + names = Base.merge_names(an, bn) + NamedTuple{names}(ntuple(Val{nfields(names)}()) do i + n = getfield(names, i) + if Base.sym_in(n, an) + if Base.sym_in(n, bn) + combine(getfield(a, n), getfield(b, n)) + else + getfield(a, n) + end + else + getfield(b, n) + end + end) +end +let c = (a=1, b=2), + d = (b=3, c=(d=1,)) + @test @inferred(mergewith51009((x,y)->y, c, d)) === (a = 1, b = 3, c = (d = 1,)) +end From d117058fa50c1a46111ae8955461dda13409c896 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Wed, 11 Oct 2023 14:41:30 +0200 Subject: [PATCH 19/45] [LibCURL_jll] Upgrade to v8.4.0 (#51667) (cherry picked from commit abf5d9e8062dd338e55962f411d2e24652e20015) --- deps/checksums/curl | 68 ++++++++++++++++----------------- deps/curl.version | 2 +- stdlib/LibCURL_jll/Project.toml | 2 +- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/deps/checksums/curl b/deps/checksums/curl index a00275ccdde4d..a6eeccca3833c 100644 --- a/deps/checksums/curl +++ b/deps/checksums/curl @@ -1,36 +1,36 @@ LibCURL-a65b64f6eabc932f63c2c0a4a5fb5d75f3e688d0.tar.gz/md5/e8c53aa3fb963c80921787d5d565eb2c LibCURL-a65b64f6eabc932f63c2c0a4a5fb5d75f3e688d0.tar.gz/sha512/8e442ea834299df9c02acb87226c121395ad8e550025ac5ee1103df09c6ff43817e9e48dd1bcbc92c80331ef3ddff531962430269115179acbec2bab2de5b011 -LibCURL.v8.0.1+1.aarch64-apple-darwin.tar.gz/md5/f697b4391608c2916ef159187e0d0b29 -LibCURL.v8.0.1+1.aarch64-apple-darwin.tar.gz/sha512/41da87eed77ffac391a60a4af7fdc707f117affebe54960eaf43e3077440ce17d95fbe0f47de41bb1456e222e7a126d687fa0beb26cf98713b3472e9b3ba9e57 -LibCURL.v8.0.1+1.aarch64-linux-gnu.tar.gz/md5/710e50aaf42370a38fa8f920b5d056f3 -LibCURL.v8.0.1+1.aarch64-linux-gnu.tar.gz/sha512/4e0db50a9022c4adacf37c60f6bf1312018bef2f6427064bfe90aca31e20e9e3242efaea7e488f5a2ffca1f123ae1de651c73257b2038ec786061b07dc30c2cc -LibCURL.v8.0.1+1.aarch64-linux-musl.tar.gz/md5/b2b5a812aecbfc5ba98f1a30d48f3fd1 -LibCURL.v8.0.1+1.aarch64-linux-musl.tar.gz/sha512/38cfe9e0bb7e6f5723fab27ed8f51d80c8a3919510ebd6eec65025e649b55a4efed7033aa82e962110c3c5d07b8367a7ba310b8afeb5b98268af6a1e197eb122 -LibCURL.v8.0.1+1.armv6l-linux-gnueabihf.tar.gz/md5/ccb09d04429ad300a2b3a83edb8becaf -LibCURL.v8.0.1+1.armv6l-linux-gnueabihf.tar.gz/sha512/cde5303869670866568cdbd53196f874ee754f030b76720ba334915d987b2cfb4a8ef0c5dabc43e7fd517be96ba5225f69e23129049501902bcdbc2333ecefd3 -LibCURL.v8.0.1+1.armv6l-linux-musleabihf.tar.gz/md5/a326606b34caebd8feb3bab402eac1ea -LibCURL.v8.0.1+1.armv6l-linux-musleabihf.tar.gz/sha512/94a7159ba74184eaf6c26bf3ec0fe11fc44923507bb4fae3e3bbb401099ed2f2b1016046005a43e5066402517dd98ad815c4fbf27e718289c42453a781b1ae90 -LibCURL.v8.0.1+1.armv7l-linux-gnueabihf.tar.gz/md5/bfba4cd2a3bf49e8c3ef2964e9c8a904 -LibCURL.v8.0.1+1.armv7l-linux-gnueabihf.tar.gz/sha512/b3277858e67cbfcfca02bb62493c169e4317a541289435d9f849ee58d54763251ff38d69f87f24da9f5b5cff7bce50e8fe539519fce65c0bf0b23f7fbe5d4921 -LibCURL.v8.0.1+1.armv7l-linux-musleabihf.tar.gz/md5/f229ffb2993da2c8d0e032a540966145 -LibCURL.v8.0.1+1.armv7l-linux-musleabihf.tar.gz/sha512/129f3e77a6155f5cbd38aa7196b641e5dfbe03babbb0b64e2677ce040710bf1586f1d7bc0e511b0172eeb17e79edcade094420bd19872688c2a0217f5133ee9e -LibCURL.v8.0.1+1.i686-linux-gnu.tar.gz/md5/c1000a39b9a7411b1fc32f9a5f44348a -LibCURL.v8.0.1+1.i686-linux-gnu.tar.gz/sha512/ed015c5a62eebee0191a6910d97446f6af9fc6871b7a4213fe05c33ef4694801082a84bfffc25e2c575d497934910ff50260540c7fa0df90c25dbe1e2241386f -LibCURL.v8.0.1+1.i686-linux-musl.tar.gz/md5/270bab5961328c8ed95d20e7a4578fbf -LibCURL.v8.0.1+1.i686-linux-musl.tar.gz/sha512/f24c0deae950479d176de47c27b0a73f6059319c9d66d3b868172558cc03e4e20ce31d86fc9ecaf07fb51640f37da4b8fe1c67e5f0c79ec97d604675d0ceac00 -LibCURL.v8.0.1+1.i686-w64-mingw32.tar.gz/md5/9d1cdb92455130345833c92f572e7877 -LibCURL.v8.0.1+1.i686-w64-mingw32.tar.gz/sha512/1d9d0eff49d85cbf3f6c0be478f3d01a828ea080b475e28154987ea3815c327bf13630e6805cee9cf9b0bf328d4d875bb8727ce6c119c3eeaa3c5375dffe6dc6 -LibCURL.v8.0.1+1.powerpc64le-linux-gnu.tar.gz/md5/8918b54901051222e07af43fb33b93cf -LibCURL.v8.0.1+1.powerpc64le-linux-gnu.tar.gz/sha512/f147c1c26f4fb6a8d04b3146fbe45efc2f13b425d432995b63d12995d3daa8d36d2107e490a6c62d7851fb31ee837f4beab52e61df6dc8fab1d22aa2f00fb1fb -LibCURL.v8.0.1+1.x86_64-apple-darwin.tar.gz/md5/10a19a4f428951adbca7cfee91406498 -LibCURL.v8.0.1+1.x86_64-apple-darwin.tar.gz/sha512/28ddbad4310ed886c65edf28ccf01a5aba77fe11784740600aaec2aaa5c10c5e5915e297a4d72dd85bbc5304bb2027f5d18b95f13868b4bb1353fafed7bce4e0 -LibCURL.v8.0.1+1.x86_64-linux-gnu.tar.gz/md5/0c2a633d3ab15df3369018b608488e8d -LibCURL.v8.0.1+1.x86_64-linux-gnu.tar.gz/sha512/59d13e33fbb2705996e567fa12fd5216d262b929003c2e59ab4c61a1d15641430e0e6173d1e14ed54811fc466c2a97826701c9356d16a6a8ce8e6f685193a904 -LibCURL.v8.0.1+1.x86_64-linux-musl.tar.gz/md5/2387b901f2a5bbb3b837d30a62838960 -LibCURL.v8.0.1+1.x86_64-linux-musl.tar.gz/sha512/93da418d402f8fb1d7074b9951c9378c6becb9c1f07bed18f700351fd2b5da9849da46b735bf7c6dd8380df5c3286ec90068866d1006d312f2181d710afec028 -LibCURL.v8.0.1+1.x86_64-unknown-freebsd.tar.gz/md5/90fec1618ec5bd774f241f6076faa896 -LibCURL.v8.0.1+1.x86_64-unknown-freebsd.tar.gz/sha512/fd83752fb0bf9200f44f3a3b4f01cf649d352abc0c750e5aef19bd9bfd128300df3977f4ad2f614222cd1cc8f4d39a0dc33376ed34543b55d74bd109db0f9071 -LibCURL.v8.0.1+1.x86_64-w64-mingw32.tar.gz/md5/db973bbb7961678a139087e911c37f3c -LibCURL.v8.0.1+1.x86_64-w64-mingw32.tar.gz/sha512/700cb1ad207a62ba0997fc625fdb3595eee859c6eb88242f3fd9269c2035d24aef36f3fff610fa37ecc783ecf88a5f65fd29a492338b54649bb930611672db5c -curl-8.0.1.tar.bz2/md5/b2e694208b4891d7396d118712148ff3 -curl-8.0.1.tar.bz2/sha512/24e84e922612ebf19341525c5f12f36e730cd21a5279cbea6421742d1ba61e5fa404f2add2e71d64e5692a1feabfa92c5a5d56501f161d1e157718fee467e0a5 +LibCURL.v8.4.0+0.aarch64-apple-darwin.tar.gz/md5/7e1b8b96f4f38cd775c1be5bfd4d9b14 +LibCURL.v8.4.0+0.aarch64-apple-darwin.tar.gz/sha512/598c8418731770387f9d1b489eb0794978c4b98c9098f2c9b024fe758e6550ff82202fa4c911a6029ac39a9d395f1dccb9b5539dac788c29a85e79c958ab3bf9 +LibCURL.v8.4.0+0.aarch64-linux-gnu.tar.gz/md5/c8ef2231800a5ad488e2952e14a48710 +LibCURL.v8.4.0+0.aarch64-linux-gnu.tar.gz/sha512/1cc786ce4836e6ae904685bb44e47354eabf66dd82229d84cbeaa0d5b549900b77b68f878d915f04049c4f4118e5849262a6706fa9fac845b8a976e02140dea2 +LibCURL.v8.4.0+0.aarch64-linux-musl.tar.gz/md5/7fdc14704e467d7d9d71b54d48f690f4 +LibCURL.v8.4.0+0.aarch64-linux-musl.tar.gz/sha512/1af938d244e141c6ad77844c115afbff0ab75145e4e1422cf1444226ec0183a7449040c4a86c3dfb445820377278567427f8df77823a5ae0bede705a9b01335e +LibCURL.v8.4.0+0.armv6l-linux-gnueabihf.tar.gz/md5/77534d50dbb631146c85b6f2b92c7f84 +LibCURL.v8.4.0+0.armv6l-linux-gnueabihf.tar.gz/sha512/b7a4294ae8f7d24b5dcc10df52d76dd35ca1b4d0dc955307968f6f1a6a2edef194d134bcf6891a960d63e8763b1bc2738786db84393183210730d4d2d486dcdb +LibCURL.v8.4.0+0.armv6l-linux-musleabihf.tar.gz/md5/35e4dee0f70564d3d16d2dd8ef7c2c5d +LibCURL.v8.4.0+0.armv6l-linux-musleabihf.tar.gz/sha512/e9292a6dc52be228919a9af2b1e73a6968af843d508ffb216ae956a651822ddc1bcbb9fce495da05a11ffb9211903462f7504aa5da78f19f4db5c63c80fc9baf +LibCURL.v8.4.0+0.armv7l-linux-gnueabihf.tar.gz/md5/dbb847d7f7162b4a2ea5395eca8d7c30 +LibCURL.v8.4.0+0.armv7l-linux-gnueabihf.tar.gz/sha512/3a2c2779392eb19fe9202397688466fc05813a8e35ea6bf85d628e802759c97fae346939902e897313914ce2b38dcfabe0775be6a4a1b1d4264a327687d6a2f3 +LibCURL.v8.4.0+0.armv7l-linux-musleabihf.tar.gz/md5/f9e9557080e09fda47c92f14d5c89de4 +LibCURL.v8.4.0+0.armv7l-linux-musleabihf.tar.gz/sha512/603821f647d17daa1d731a63c7fff35b756b052ee53b6c86d9f35582356d57914336f8b9bb44567f10b437b2c0c677177959ae691e0244bab1262818eb61aa1e +LibCURL.v8.4.0+0.i686-linux-gnu.tar.gz/md5/eabf3f3392cf8717782c2cb1c1b71478 +LibCURL.v8.4.0+0.i686-linux-gnu.tar.gz/sha512/9584f28cf8f72a6e15afb96a2c27d82b74a12042311c07aecb61732fd6525227f082d448b81950a67c6cc880b39c0921cf039e97bf0bdd4329e2196de42ec81e +LibCURL.v8.4.0+0.i686-linux-musl.tar.gz/md5/dceef0a3aa971e3b7e3db44b5de159d1 +LibCURL.v8.4.0+0.i686-linux-musl.tar.gz/sha512/483dfe8a3b4589e59794b3b4efba1e60baf9fb45efad6c0b1b9626ad6e492fd803fda3f99545303a32749010df5b9bb89faf608d57eb4fee4c3f387d0b197a5e +LibCURL.v8.4.0+0.i686-w64-mingw32.tar.gz/md5/2a0a87e126ebaf7bcaff746e30f6905f +LibCURL.v8.4.0+0.i686-w64-mingw32.tar.gz/sha512/5a2867e8ac27a82e30bb88ea4c3f52faddfbd0b199f25dbef3a77a47be16a4b9299883fc84d50ce965aa2d01d473310b4cbc28c60dad3602f2ee6b56345ea6a5 +LibCURL.v8.4.0+0.powerpc64le-linux-gnu.tar.gz/md5/1f532601778a4dcf9932681e0e47833e +LibCURL.v8.4.0+0.powerpc64le-linux-gnu.tar.gz/sha512/6ddf56c44124e682eda9cedacb8893ada1e07b6a2cb10fd301afc04b3d1c981b25129b2495efb4d5e37784ee2bb5e47da13be9c2f367ff397a8ce7122136f6e2 +LibCURL.v8.4.0+0.x86_64-apple-darwin.tar.gz/md5/d7c9ab15d9739df8fb4329c0bb2546f6 +LibCURL.v8.4.0+0.x86_64-apple-darwin.tar.gz/sha512/5d5f17534053504dbc3c0b1251f329358bac60c14b734f6b82b4321f96f944b1733254cfd7489504c41d3d2cda5ae991e6cb4f9fa864990a6660cb4464f14530 +LibCURL.v8.4.0+0.x86_64-linux-gnu.tar.gz/md5/f8697c76204df4ac5a04608b6a480f3b +LibCURL.v8.4.0+0.x86_64-linux-gnu.tar.gz/sha512/ed583b6abc52f6b5a8ee0c93a4e9b877d2830eb131117ac17da044d2fadb218bc293ec6c625a526583aea01f41994a3f9bb5ed5b4263838bab8c251c672b8160 +LibCURL.v8.4.0+0.x86_64-linux-musl.tar.gz/md5/fcb9be4148376414f94d3ddb54f42d12 +LibCURL.v8.4.0+0.x86_64-linux-musl.tar.gz/sha512/8e53219d68fdb4c412de8a19f53572dbd74dc35bba3c6f3c5aab622f05aa76a28e386201d9dd1c78d37d0ea636bb43ad98d1e19599480ba307cc45098600818a +LibCURL.v8.4.0+0.x86_64-unknown-freebsd.tar.gz/md5/aa4b18c0b8be4be432e24c9cc88670da +LibCURL.v8.4.0+0.x86_64-unknown-freebsd.tar.gz/sha512/69548673aec3d199a0514ae0e90d6f8700ace47579631522a93ea351151af258127f3bd1fc82f110f22ac6b7c3eab884665773d99842dfc56fa94040a69f1043 +LibCURL.v8.4.0+0.x86_64-w64-mingw32.tar.gz/md5/b477d32139cef0e810e88ceed68b322c +LibCURL.v8.4.0+0.x86_64-w64-mingw32.tar.gz/sha512/3035a1e9af9eda70018ef56a5a620d5b07b46f63739e0f2e028518c6144577d51a9f9a9e76ed1bf28ee4a5811ea4f502ddeab46694432e441e0151056d5c7e6d +curl-8.4.0.tar.bz2/md5/1a61fde1fe5c7db5c29c1196435188a5 +curl-8.4.0.tar.bz2/sha512/27a27c5427acce3501833ac37125daaa03c90165692252115329c820a5a6396cdc79c11d12fe962af37a329549c2051addce3c91e8a8bc3ce3a48cb09d860086 diff --git a/deps/curl.version b/deps/curl.version index f704bc2bebc61..288347a9935ed 100644 --- a/deps/curl.version +++ b/deps/curl.version @@ -3,4 +3,4 @@ CURL_JLL_NAME := LibCURL ## source build -CURL_VER := 8.0.1 +CURL_VER := 8.4.0 diff --git a/stdlib/LibCURL_jll/Project.toml b/stdlib/LibCURL_jll/Project.toml index b4f979b4815ca..aa84637e0dc82 100644 --- a/stdlib/LibCURL_jll/Project.toml +++ b/stdlib/LibCURL_jll/Project.toml @@ -1,6 +1,6 @@ name = "LibCURL_jll" uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.0.1+1" +version = "8.4.0+0" [deps] LibSSH2_jll = "29816b5a-b9ab-546f-933c-edad1886dfa8" From 110e9baf534f746216c413efbd061f55bf673912 Mon Sep 17 00:00:00 2001 From: Lionel Zoubritzky Date: Thu, 12 Oct 2023 13:15:22 +0200 Subject: [PATCH 20/45] Handle infix operators in REPL completion (#51366) Fix https://github.com/JuliaLang/julia/issues/51194 This PR fixes a regression introduced in https://github.com/JuliaLang/julia/pull/49294, so I believe it should be backported to v1.10. In the current code, completion of `qux(foo, bar.` is detected by parsing `foo(qux, bar` as an incomplete expression, and then looking for the sub-expression to complete (here, `bar.`). This approach fails however for infix calls, since completing `foo + bar.` starts by parsing `foo + bar`, which is a complete call expression, and so the code behaves as if completing `(foo + bar).` instead of `bar.`. This leads to the current problematic behaviour: ```julia julia> Complex(1, 3) + (4//5).#TAB im re ``` which would be correct for `(Complex(1, 3) + (4//5)).#TAB`, but here we expect ```julia julia> Complex(1, 3) + (4//5).#TAB den num ``` This PR fixes that by trying to detect infix calls. In the long term, all this ad-hoc and probably somewhat wrong string processing should be replaced by proper use of `JuliaSyntax` (as mentioned in https://github.com/JuliaLang/julia/pull/49294#issue-1659443492, https://github.com/JuliaLang/julia/issues/50817#issuecomment-1668773346 and probably other places), but for now at least this fixes the regression. (cherry picked from commit e949236f29347f3e57a1a3a7d5ec656872ad8347) --- stdlib/REPL/src/REPLCompletions.jl | 11 +++++++++++ stdlib/REPL/test/replcompletions.jl | 15 +++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/stdlib/REPL/src/REPLCompletions.jl b/stdlib/REPL/src/REPLCompletions.jl index a6cb12ab05211..debe568b25f64 100644 --- a/stdlib/REPL/src/REPLCompletions.jl +++ b/stdlib/REPL/src/REPLCompletions.jl @@ -997,6 +997,17 @@ function complete_identifiers!(suggestions::Vector{Completion}, @nospecialize(ff ex = Meta.parse(lookup_name, raise=false, depwarn=false) end isexpr(ex, :incomplete) && (ex = nothing) + elseif isexpr(ex, :call) && length(ex.args) > 1 + isinfix = s[end] != ')' + # A complete call expression that does not finish with ')' is an infix call. + if !isinfix + # Handle infix call argument completion of the form bar + foo(qux). + frange, end_of_identifier = find_start_brace(@view s[1:prevind(s, end)]) + isinfix = Meta.parse(@view(s[frange[1]:end]), raise=false, depwarn=false) == ex.args[end] + end + if isinfix + ex = ex.args[end] + end end end append!(suggestions, complete_symbol(ex, name, ffunc, context_module)) diff --git a/stdlib/REPL/test/replcompletions.jl b/stdlib/REPL/test/replcompletions.jl index 501193b15e2f4..c5a2d1c8e006e 100644 --- a/stdlib/REPL/test/replcompletions.jl +++ b/stdlib/REPL/test/replcompletions.jl @@ -25,6 +25,7 @@ let ex = quote (::Test_y)() = "", "" unicode_αβγ = Test_y(1) + Base.:(+)(x::Test_x, y::Test_y) = Test_x(Test_y(x.xx.yy + y.yy)) module CompletionFoo2 end @@ -1889,3 +1890,17 @@ let s = "Issue49892(fal" @test n in c end end + +# issue #51194 +for (s, compl) in (("2*CompletionFoo.nam", "named"), + (":a isa CompletionFoo.test!1", "test!12"), + ("-CompletionFoo.Test_y(3).", "yy"), + ("99 ⨷⁻ᵨ⁷ CompletionFoo.type_test.", "xx"), + ("CompletionFoo.type_test + CompletionFoo.Test_y(2).", "yy"), + ("(CompletionFoo.type_test + CompletionFoo.Test_y(2)).", "xx"), + ("CompletionFoo.type_test + CompletionFoo.unicode_αβγ.", "yy"), + ("(CompletionFoo.type_test + CompletionFoo.unicode_αβγ).", "xx"), + ("foo'CompletionFoo.test!1", "test!12")) + c, r = test_complete(s) + @test only(c) == compl +end From d4809e5b773c93e34c171302f5f7ae7edc7b6b24 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Mon, 16 Oct 2023 16:16:08 -0400 Subject: [PATCH 21/45] Upgrade SuiteSparse to 7.2.1 --- .../md5 | 1 + .../sha512 | 1 + .../md5 | 1 + .../sha512 | 1 + deps/checksums/suitesparse | 70 +++++++++---------- deps/libsuitesparse.mk | 2 +- deps/libsuitesparse.version | 5 +- stdlib/SuiteSparse_jll/Project.toml | 4 +- 8 files changed, 43 insertions(+), 42 deletions(-) create mode 100644 deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 create mode 100644 deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 create mode 100644 deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/md5 create mode 100644 deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/sha512 diff --git a/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 b/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 new file mode 100644 index 0000000000000..12314ebe27beb --- /dev/null +++ b/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 @@ -0,0 +1 @@ +6427ffc68076c0555b0d3a02eaf88160 diff --git a/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 b/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 new file mode 100644 index 0000000000000..5c7602b6707cc --- /dev/null +++ b/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 @@ -0,0 +1 @@ +7a4c6dae45b739bb1b22c53c8b2b32fc765995767580338218a99f671749bbd5c5d9b61f45718c3b80e153b524737501141481ede2a6f24856de1c028f07ad3a diff --git a/deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/md5 b/deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/md5 new file mode 100644 index 0000000000000..2f81a0d9191b5 --- /dev/null +++ b/deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/md5 @@ -0,0 +1 @@ +46541001073d1c3c85e18d910f8308f3 diff --git a/deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/sha512 b/deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/sha512 new file mode 100644 index 0000000000000..e2eb44845e276 --- /dev/null +++ b/deps/checksums/SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/sha512 @@ -0,0 +1 @@ +f7470a447b934ca9315e216a07b97e363f11bc93186f9aa057b20b2d05092c58ae4f1b733de362de4a0730861c00be4ca5588d0b3ba65f018c1798b9122b9672 diff --git a/deps/checksums/suitesparse b/deps/checksums/suitesparse index ad571d8be1f28..7578826fe3f0e 100644 --- a/deps/checksums/suitesparse +++ b/deps/checksums/suitesparse @@ -1,36 +1,34 @@ -SuiteSparse-7.2.0.tar.gz/md5/a751b1161f03eb6bd8bd7b9c9be74b67 -SuiteSparse-7.2.0.tar.gz/sha512/62fc796a77f2a8c95cd688a4fa0e39c19d7ccfafde7a6623d62ca6928cee68ac9863a0f721959a1d5a07e62888ab621a4b1cb4f63371f4ac10f4ffe513241340 -SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/md5/46541001073d1c3c85e18d910f8308f3 -SuiteSparse-e8285dd13a6d5b5cf52d8124793fc4d622d07554.tar.gz/sha512/f7470a447b934ca9315e216a07b97e363f11bc93186f9aa057b20b2d05092c58ae4f1b733de362de4a0730861c00be4ca5588d0b3ba65f018c1798b9122b9672 -SuiteSparse.v7.2.0+1.aarch64-apple-darwin.tar.gz/md5/1a10261e5bed293a66849c7a50605a1c -SuiteSparse.v7.2.0+1.aarch64-apple-darwin.tar.gz/sha512/11ecce872aac1f30a3d4ce870920ebb03c7828d0fd740c3789d3f65c3f91ed3682372e9807b0593e2850ae9024450306451ee2e03866afee16b4169e4b5de1c6 -SuiteSparse.v7.2.0+1.aarch64-linux-gnu.tar.gz/md5/65e2e7ae54e94e00b306d17a1d08ed34 -SuiteSparse.v7.2.0+1.aarch64-linux-gnu.tar.gz/sha512/7714598448c6f98a7d931822f9ddb661a903342d4c8384648c1b7457511794ff95ad64266c9377a4a5856dcb1fb8864cb05eab1c7787fca58802473270313570 -SuiteSparse.v7.2.0+1.aarch64-linux-musl.tar.gz/md5/95eb68e02c04d075d6ecc974c3b44457 -SuiteSparse.v7.2.0+1.aarch64-linux-musl.tar.gz/sha512/1d7835106cd5baef701a3b670778a757d97ab9933f7da909e1e5521150f7e44bee30cf4dc7c1e9f57731366db0fca1b91d1cdfddbc53b7cc7457ca11534be6d7 -SuiteSparse.v7.2.0+1.armv6l-linux-gnueabihf.tar.gz/md5/5f627cc9c9d4d70e2f0d749e09926b1a -SuiteSparse.v7.2.0+1.armv6l-linux-gnueabihf.tar.gz/sha512/5ae4b79b418b45d954bfb578ac384afd6fff10a602d16d8b503997ba15251a7db0e12da66061ffd27c23b7459ff56b4a5d200c7c8aaa4a33c608a88752535c15 -SuiteSparse.v7.2.0+1.armv6l-linux-musleabihf.tar.gz/md5/61b5ee7e2b50665caf15e7c4f7353048 -SuiteSparse.v7.2.0+1.armv6l-linux-musleabihf.tar.gz/sha512/854c0165bceeb8202aeeaa16e6ba1f643e8cb9bf0561816cf2c44d1c7334ba7c376ee9e9085316439ca7e27dd4e37814f4916382096a5889c6bb656d22a7fb8d -SuiteSparse.v7.2.0+1.armv7l-linux-gnueabihf.tar.gz/md5/618b9687ce30e630a52f72a8f34cfb9f -SuiteSparse.v7.2.0+1.armv7l-linux-gnueabihf.tar.gz/sha512/add77a8842faf6515d94dc1d000784247d13f0211a9bb3f98edbc65b5f8994c0101940875fa050ca7a4605aaf33ec14daeaaf6b837673b3b4c600d4c5c0f4876 -SuiteSparse.v7.2.0+1.armv7l-linux-musleabihf.tar.gz/md5/b84d7f98b953772517689478d6bfc121 -SuiteSparse.v7.2.0+1.armv7l-linux-musleabihf.tar.gz/sha512/2c461eb23194bf61d3166abd8eb308dc643d865ff07466a88a580aa5a040f3c4fbfeadf7c78e1a3ce737fe0602909ff2b25be439741d36a780a260ccfdc6ed83 -SuiteSparse.v7.2.0+1.i686-linux-gnu.tar.gz/md5/3a38deddb5c1952584782378892d9579 -SuiteSparse.v7.2.0+1.i686-linux-gnu.tar.gz/sha512/5d6a9090c1c275c2bdcdc8d510c6372913109c1a775819354922c0d0afc2bc13a27950ed0e8cb8e05bc94d245220e322d93879054e5082814b7796b305981987 -SuiteSparse.v7.2.0+1.i686-linux-musl.tar.gz/md5/8076c50a73ab08ce0b9374956c2dbf29 -SuiteSparse.v7.2.0+1.i686-linux-musl.tar.gz/sha512/e54bcfe7eb9b266514a35a3c48676b7a792b59830e44bfcd5dfcf35be790f534cc31bd2e63ce4da1a22fcb3b0afb0ebebcc94f0e596806d6e832c3f68195cc5b -SuiteSparse.v7.2.0+1.i686-w64-mingw32.tar.gz/md5/45ac2448ac7a1a9c67114ea58e8ceacf -SuiteSparse.v7.2.0+1.i686-w64-mingw32.tar.gz/sha512/ed65a4071144c0096dfa768f26fd6216d4554c606a981658675d42f201865032972d9ce252dca5dc8a4a7ab0e33411c77bba9287e8013bdb0907ed6cb63d576f -SuiteSparse.v7.2.0+1.powerpc64le-linux-gnu.tar.gz/md5/64845ee8bb2f3f44a0837297e47e412d -SuiteSparse.v7.2.0+1.powerpc64le-linux-gnu.tar.gz/sha512/5f935e497db4ebbcdfb96603a7ee9c6c520d7f4df04f65952305ceff4271ab637079e9144b98044c5f159b4bed0963df8c95ed1578d2828f1a2356e6d34d7042 -SuiteSparse.v7.2.0+1.x86_64-apple-darwin.tar.gz/md5/fb8b00d4ca63004fe8ab8c159128e01f -SuiteSparse.v7.2.0+1.x86_64-apple-darwin.tar.gz/sha512/bcfb18c11be4b1147ff857e2ad0c881c9fc4ae16db8e88fb6e7e0448418c1fc4bff9ea8f1e6aa7202c277273c44c1afb3cc6c2bfcaa0735c7c09052f033248c7 -SuiteSparse.v7.2.0+1.x86_64-linux-gnu.tar.gz/md5/043594ee1cb90fd47b36acfa829fffb8 -SuiteSparse.v7.2.0+1.x86_64-linux-gnu.tar.gz/sha512/6a5bb3c85bb7e97b915f7dd40e8be1ed1bbbd5c756ef510deaecc8505b95bd42f3662f82e25c80055947060e0429e2ce427d4ff67b434acbe28d46b88279c65f -SuiteSparse.v7.2.0+1.x86_64-linux-musl.tar.gz/md5/67c6d3a7fd8635a43bd86b2b1e986978 -SuiteSparse.v7.2.0+1.x86_64-linux-musl.tar.gz/sha512/d46be3f60102fc69707c3e7cc3d693c7ecb4d4307c636afde61e5fab3c46fcf32564716a11d2cfe47b4e541422d5b6e13fbcc3e8749764527b4f4132e8ce17fc -SuiteSparse.v7.2.0+1.x86_64-unknown-freebsd.tar.gz/md5/124057f8455c9710fd1e6b4b4b469fb0 -SuiteSparse.v7.2.0+1.x86_64-unknown-freebsd.tar.gz/sha512/da0e56a8b1cf3967275cb64aea0b939d8982392f9ca1c3b268607e37c0b9bebbd456172c507c6dc2293989a0fe8df04ba1fea67442a4bb738cc8d894bea457a5 -SuiteSparse.v7.2.0+1.x86_64-w64-mingw32.tar.gz/md5/0f99c67d25c0fdd0f3c3e11f18925c43 -SuiteSparse.v7.2.0+1.x86_64-w64-mingw32.tar.gz/sha512/32fcd894cb4197970aa311f7bd12ccb91df7bbe27e389e793a2d3565c9c5c36c751f6dfa37e155cd2c2245be52f0a872dba032b78dc45c45d3fd7d7f2eeb773e +SuiteSparse-7.2.1.tar.gz/md5/c341b4b2943b6d99ec147dc36ae64d51 +SuiteSparse-7.2.1.tar.gz/sha512/6385b699d2f109e8473bb58e95705671b8a5c2f1b281d17bba9f396a94b2e783700c4c64f4ab9495a4a64e23ba279052616054045783b4b8c8eb28a8f4f6be28 +SuiteSparse.v7.2.1+1.aarch64-apple-darwin.tar.gz/md5/1bd9c850b5bb6de56f4dfd0633ce7a6c +SuiteSparse.v7.2.1+1.aarch64-apple-darwin.tar.gz/sha512/f0e932fa2b6d2843fd75c1e151b8304ed2521b679c732301877495d9a2437ec693ba0ebaaf52cb3a4f5c01bcd8c972a27b1080071c9c77462901fa4dec7de787 +SuiteSparse.v7.2.1+1.aarch64-linux-gnu.tar.gz/md5/ff52a5ef6546bbea2ce2d73db2821522 +SuiteSparse.v7.2.1+1.aarch64-linux-gnu.tar.gz/sha512/f5c2a54e40b36fc0489140397e6324bbd1050a87949fd9be3837012825c3becbef66258d28c286d0c45b0447361b2ddf736370402ed928b909e0fb7c5f4ee69c +SuiteSparse.v7.2.1+1.aarch64-linux-musl.tar.gz/md5/2baa4103f4070f66d6278fc001317372 +SuiteSparse.v7.2.1+1.aarch64-linux-musl.tar.gz/sha512/17bc9b020850d9cc652d49987c3faa57204ed3beecd04ea812fd03b4f60f541ba7b250fa70c801a8ec3c440f3562a4771a3742299f0d4eb770e58010c43a3823 +SuiteSparse.v7.2.1+1.armv6l-linux-gnueabihf.tar.gz/md5/cdc1c60e50f6551a52e57ac71440564a +SuiteSparse.v7.2.1+1.armv6l-linux-gnueabihf.tar.gz/sha512/9209f86ac97c061755169412565055847be4890140a389a92468297507cee240219d910bbcef94c52926771a4152762cfa05cfa33c26d31351d68265e5719bd3 +SuiteSparse.v7.2.1+1.armv6l-linux-musleabihf.tar.gz/md5/cd5e177e660d793426e4c4aeb2f9269c +SuiteSparse.v7.2.1+1.armv6l-linux-musleabihf.tar.gz/sha512/a8a5ca739999a16336b2c98ec88873e00349720b5d966d643d5665338b1f9c8077352d87fac41a165cb65793ae5fb686e954b3eaa3f751aa8d002388a0ce6a13 +SuiteSparse.v7.2.1+1.armv7l-linux-gnueabihf.tar.gz/md5/eb43136009b370e93c6ab4c1b0eec40c +SuiteSparse.v7.2.1+1.armv7l-linux-gnueabihf.tar.gz/sha512/e20a308911a36037c9b6da3c060f8624b1ff84b0e23cbd62189f62e989f6a5307b07a6286d95459e0886a8d16fd59ad5a34607dd2c644f7bedc786dd6567670c +SuiteSparse.v7.2.1+1.armv7l-linux-musleabihf.tar.gz/md5/19f9246fc6c8bd2c7a4d2df498725abe +SuiteSparse.v7.2.1+1.armv7l-linux-musleabihf.tar.gz/sha512/d2cba310fe33ddb11d9ada37ce04905dfc3f058a1cbf7b53ca1dc31c2c51bcf930a4976c39d55bfdacb19195ff772acb1c6876238640a6ed6277777934a8b53f +SuiteSparse.v7.2.1+1.i686-linux-gnu.tar.gz/md5/8ff91e530528c8761411b8d9be56d1f0 +SuiteSparse.v7.2.1+1.i686-linux-gnu.tar.gz/sha512/42bd937fb1c476164b923b5093d3df3fc3cdd4e3bc148616ba48027d4616479d674a4c8f7291cf7004a43834508b459630f4cafbd90850d10402d53faa34e714 +SuiteSparse.v7.2.1+1.i686-linux-musl.tar.gz/md5/49bc8f22a227748680734d89f64a4cf7 +SuiteSparse.v7.2.1+1.i686-linux-musl.tar.gz/sha512/b78b84d330a8f22e7d9fdd72fe621e9830c1afd908946d4101705f05546aa892b2f5ef87988dec39ccd81cbe4dbeb95adc277d096d60e106485c5b6f81cf4403 +SuiteSparse.v7.2.1+1.i686-w64-mingw32.tar.gz/md5/cd593a3c801ba72bf6d77788c7ca06b9 +SuiteSparse.v7.2.1+1.i686-w64-mingw32.tar.gz/sha512/0b49795ed5cb773a5930d305e65d53ff35ff1d1ee0a84e8762f56ca442c2421752b50b667646fd6a977c0684c2214996011f405ff1c7fd6eeaf16d08262d7d05 +SuiteSparse.v7.2.1+1.powerpc64le-linux-gnu.tar.gz/md5/3858c87b8f62844520ff61c72d7b5a25 +SuiteSparse.v7.2.1+1.powerpc64le-linux-gnu.tar.gz/sha512/ea505fe14155ee69a715339fe7075603c04458d5c7f65fecb92bea69a86117b1d21da75dab832ac0f6cc9aa64bfa6d7f50cb679fefa9ec5b4d4d8826d3137ff9 +SuiteSparse.v7.2.1+1.x86_64-apple-darwin.tar.gz/md5/241dec5338e04fbf6084cec90bbd2f76 +SuiteSparse.v7.2.1+1.x86_64-apple-darwin.tar.gz/sha512/8477d2102be709aa2f74325df91aab4f9c894c8f516cd17d3780aab66bcbf920fa5771fa7e130a63793f94b99c6cfc4db6ab22e6a33a55670e25e36472770d59 +SuiteSparse.v7.2.1+1.x86_64-linux-gnu.tar.gz/md5/c6b6fa99a21a9000892d51b821f304a7 +SuiteSparse.v7.2.1+1.x86_64-linux-gnu.tar.gz/sha512/ad2e1200d0418c531758672b64e849c81cfe74ca73cff0e1a47797e73dbc4675c9a2ec855af628dddef58b135412d06fa18c15565c94de5e1e6d15e3b150ecbd +SuiteSparse.v7.2.1+1.x86_64-linux-musl.tar.gz/md5/6c14129471a9c92464d36ae00f4c5a08 +SuiteSparse.v7.2.1+1.x86_64-linux-musl.tar.gz/sha512/e9051ceb7d551019deb16480b493d1ac5b622fe86c7e19b1023eb12af28d42f25e911e1e44870c35849d8f95d78e8e28c38699cde1fab250dac32818ebc58a2b +SuiteSparse.v7.2.1+1.x86_64-unknown-freebsd.tar.gz/md5/ab0f6a9b7789f21aba5ea10659b03ed3 +SuiteSparse.v7.2.1+1.x86_64-unknown-freebsd.tar.gz/sha512/cc9136bfda474914107e68f97a200d46f81a1f36ea51c4e482ef04e818d3ac10d14b2895eef59b2570f6115261e987bd076dd8f9be0e6d2dc77931d3257db142 +SuiteSparse.v7.2.1+1.x86_64-w64-mingw32.tar.gz/md5/e804d9ed593d739326865dc1f60d5800 +SuiteSparse.v7.2.1+1.x86_64-w64-mingw32.tar.gz/sha512/20c9ac62cd41b19e0b9605c8f9a8bece9089f7f69e2cf57ace3058215acefe8cf9ce39d3c05010223443bfc45b1efb8391be677a1b5e9a59bbdfe89f89553f71 diff --git a/deps/libsuitesparse.mk b/deps/libsuitesparse.mk index e547030c16a08..4d5122ee87cf7 100644 --- a/deps/libsuitesparse.mk +++ b/deps/libsuitesparse.mk @@ -29,7 +29,7 @@ LIBSUITESPARSE_CMAKE_FLAGS += -DCMAKE_INSTALL_RPATH="\$$ORIGIN" endif $(SRCCACHE)/SuiteSparse-$(LIBSUITESPARSE_VER).tar.gz: | $(SRCCACHE) - $(JLDOWNLOAD) $@ https://github.com/Wimmerer/SuiteSparse/archive/v$(LIBSUITESPARSE_VER).tar.gz + $(JLDOWNLOAD) $@ https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/v$(LIBSUITESPARSE_VER).tar.gz $(BUILDDIR)/SuiteSparse-$(LIBSUITESPARSE_VER)/source-extracted: $(SRCCACHE)/SuiteSparse-$(LIBSUITESPARSE_VER).tar.gz $(JLCHECKSUM) $< diff --git a/deps/libsuitesparse.version b/deps/libsuitesparse.version index 867e52304477c..eea10d4f2beb8 100644 --- a/deps/libsuitesparse.version +++ b/deps/libsuitesparse.version @@ -2,6 +2,5 @@ LIBSUITESPARSE_JLL_NAME := SuiteSparse ## source build -LIBSUITESPARSE_VER := 7.2.0 -LIBSUITESPARSE_BRANCH=guard-CXX_Standard -LIBSUITESPARSE_SHA1=1b4edf467637dbf33a26eee9a6c20afa40c7c5ea +LIBSUITESPARSE_VER := 7.2.1 +LIBSUITESPARSE_SHA1=d6c84f7416eaee0d23d61c6c49ad1b73235d2ea2 diff --git a/stdlib/SuiteSparse_jll/Project.toml b/stdlib/SuiteSparse_jll/Project.toml index 6c23952e5c6b6..ccd1d06d9a7bb 100644 --- a/stdlib/SuiteSparse_jll/Project.toml +++ b/stdlib/SuiteSparse_jll/Project.toml @@ -1,6 +1,6 @@ name = "SuiteSparse_jll" uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.0+1" +version = "7.2.1+1" [deps] libblastrampoline_jll = "8e850b90-86db-534c-a0d3-1478176c7d93" @@ -9,7 +9,7 @@ Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" Artifacts = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [compat] -julia = "1.9" +julia = "1.10" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" From 3b9771507a29f02a0477de5de88805ecfa197dbb Mon Sep 17 00:00:00 2001 From: Diogo Netto <61364108+d-netto@users.noreply.github.com> Date: Fri, 20 Oct 2023 17:43:29 -0300 Subject: [PATCH 22/45] Test for reverting back to 1.8 GC heuristics (#51661) The 1.10 GC heuristics introduced in https://github.com/JuliaLang/julia/pull/50144 have been a source of concerning issues such as https://github.com/JuliaLang/julia/issues/50705 and https://github.com/JuliaLang/julia/issues/51601. The PR also doesn't correctly implement the paper on which it's based, as discussed in https://github.com/JuliaLang/julia/issues/51498. Test whether the 1.8 GC heuristics are a viable option. --- src/gc-debug.c | 35 +----- src/gc-pages.c | 4 - src/gc.c | 251 +++++++++++++------------------------------- src/gc.h | 11 +- src/julia_threads.h | 4 +- 5 files changed, 77 insertions(+), 228 deletions(-) diff --git a/src/gc-debug.c b/src/gc-debug.c index 23d1ca8f5f884..3f0f3368533a4 100644 --- a/src/gc-debug.c +++ b/src/gc-debug.c @@ -953,29 +953,6 @@ void gc_time_sweep_pause(uint64_t gc_end_t, int64_t actual_allocd, jl_ns2ms(gc_postmark_end - gc_premark_end), sweep_full ? "full" : "quick", -gc_num.allocd / 1024); } - -void gc_time_summary(int sweep_full, uint64_t start, uint64_t end, - uint64_t freed, uint64_t live, uint64_t interval, - uint64_t pause, uint64_t ttsp, uint64_t mark, - uint64_t sweep) -{ - if (sweep_full > 0) - jl_safe_printf("TS: %" PRIu64 " Major collection: estimate freed = %" PRIu64 - " live = %" PRIu64 "m new interval = %" PRIu64 - "m time = %" PRIu64 "ms ttsp = %" PRIu64 "us mark time = %" - PRIu64 "ms sweep time = %" PRIu64 "ms \n", - end, freed, live/1024/1024, - interval/1024/1024, pause/1000000, ttsp, - mark/1000000,sweep/1000000); - else - jl_safe_printf("TS: %" PRIu64 " Minor collection: estimate freed = %" PRIu64 - " live = %" PRIu64 "m new interval = %" PRIu64 "m pause time = %" - PRIu64 "ms ttsp = %" PRIu64 "us mark time = %" PRIu64 - "ms sweep time = %" PRIu64 "ms \n", - end, freed, live/1024/1024, - interval/1024/1024, pause/1000000, ttsp, - mark/1000000,sweep/1000000); -} #endif void jl_gc_debug_init(void) @@ -1219,7 +1196,7 @@ JL_DLLEXPORT void jl_enable_gc_logging(int enable) { gc_logging_enabled = enable; } -void _report_gc_finished(uint64_t pause, uint64_t freed, int full, int recollect, int64_t live_bytes) JL_NOTSAFEPOINT { +void _report_gc_finished(uint64_t pause, uint64_t freed, int full, int recollect) JL_NOTSAFEPOINT { if (!gc_logging_enabled) { return; } @@ -1228,16 +1205,6 @@ void _report_gc_finished(uint64_t pause, uint64_t freed, int full, int recollect full ? "full" : "incr", recollect ? "recollect" : "" ); - - jl_safe_printf("Heap stats: bytes_mapped %.2f MB, bytes_resident %.2f MB,\nheap_size %.2f MB, heap_target %.2f MB, Fragmentation %.3f\n", - jl_atomic_load_relaxed(&gc_heap_stats.bytes_mapped)/(double)(1<<20), - jl_atomic_load_relaxed(&gc_heap_stats.bytes_resident)/(double)(1<<20), - // live_bytes/(double)(1<<20), live byes tracking is not accurate. - jl_atomic_load_relaxed(&gc_heap_stats.heap_size)/(double)(1<<20), - jl_atomic_load_relaxed(&gc_heap_stats.heap_target)/(double)(1<<20), - (double)live_bytes/(double)jl_atomic_load_relaxed(&gc_heap_stats.heap_size) - ); - // Should fragmentation use bytes_resident instead of heap_size? } #ifdef __cplusplus diff --git a/src/gc-pages.c b/src/gc-pages.c index 8d596f4a815ca..682e76611f5d9 100644 --- a/src/gc-pages.c +++ b/src/gc-pages.c @@ -52,8 +52,6 @@ char *jl_gc_try_alloc_pages_(int pg_cnt) JL_NOTSAFEPOINT // round data pointer up to the nearest gc_page_data-aligned // boundary if mmap didn't already do so. mem = (char*)gc_page_data(mem + GC_PAGE_SZ - 1); - jl_atomic_fetch_add_relaxed(&gc_heap_stats.bytes_mapped, pages_sz); - jl_atomic_fetch_add_relaxed(&gc_heap_stats.bytes_resident, pages_sz); return mem; } @@ -117,7 +115,6 @@ NOINLINE jl_gc_pagemeta_t *jl_gc_alloc_page(void) JL_NOTSAFEPOINT // try to get page from `pool_freed` meta = pop_lf_page_metadata_back(&global_page_pool_freed); if (meta != NULL) { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.bytes_resident, GC_PAGE_SZ); gc_alloc_map_set(meta->data, GC_PAGE_ALLOCATED); goto exit; } @@ -191,7 +188,6 @@ void jl_gc_free_page(jl_gc_pagemeta_t *pg) JL_NOTSAFEPOINT madvise(p, decommit_size, MADV_DONTNEED); #endif msan_unpoison(p, decommit_size); - jl_atomic_fetch_add_relaxed(&gc_heap_stats.bytes_resident, -decommit_size); } #ifdef __cplusplus diff --git a/src/gc.c b/src/gc.c index 8969969ab66f5..8e37fa95a6cfc 100644 --- a/src/gc.c +++ b/src/gc.c @@ -189,7 +189,6 @@ jl_gc_num_t gc_num = {0}; static size_t last_long_collect_interval; int gc_n_threads; jl_ptls_t* gc_all_tls_states; -gc_heapstatus_t gc_heap_stats = {0}; int next_sweep_full = 0; const uint64_t _jl_buff_tag[3] = {0x4eadc0004eadc000ull, 0x4eadc0004eadc000ull, 0x4eadc0004eadc000ull}; // aka 0xHEADER00 JL_DLLEXPORT uintptr_t jl_get_buff_tag(void) @@ -678,27 +677,21 @@ static int64_t last_gc_total_bytes = 0; #ifdef _P64 typedef uint64_t memsize_t; static const size_t default_collect_interval = 5600 * 1024 * sizeof(void*); +static const size_t max_collect_interval = 1250000000UL; static size_t total_mem; // We expose this to the user/ci as jl_gc_set_max_memory static memsize_t max_total_memory = (memsize_t) 2 * 1024 * 1024 * 1024 * 1024 * 1024; #else typedef uint32_t memsize_t; static const size_t default_collect_interval = 3200 * 1024 * sizeof(void*); +static const size_t max_collect_interval = 500000000UL; // Work really hard to stay within 2GB // Alternative is to risk running out of address space // on 32 bit architectures. #define MAX32HEAP 1536 * 1024 * 1024 static memsize_t max_total_memory = (memsize_t) MAX32HEAP; #endif -// heuristic stuff for https://dl.acm.org/doi/10.1145/3563323 -static uint64_t old_pause_time = 0; -static uint64_t old_mut_time = 0; -static uint64_t old_heap_size = 0; -static uint64_t old_alloc_diff = 0; -static uint64_t old_freed_diff = 0; static uint64_t gc_end_time = 0; -static int thrash_counter = 0; -static int thrashing = 0; // global variables for GC stats // Resetting the object to a young object, this is used when marking the @@ -755,8 +748,9 @@ int under_pressure = 0; // Full collection heuristics static int64_t live_bytes = 0; static int64_t promoted_bytes = 0; +static int64_t last_full_live = 0; // live_bytes after last full collection static int64_t last_live_bytes = 0; // live_bytes at last collection -static int64_t t_start = 0; // Time GC starts; +static int64_t grown_heap_age = 0; // # of collects since live_bytes grew and remained #ifdef __GLIBC__ // maxrss at last malloc_trim static int64_t last_trim_maxrss = 0; @@ -937,7 +931,7 @@ void gc_setmark_buf(jl_ptls_t ptls, void *o, uint8_t mark_mode, size_t minsz) JL STATIC_INLINE void maybe_collect(jl_ptls_t ptls) { - if (jl_atomic_load_relaxed(&gc_heap_stats.heap_size) >= jl_atomic_load_relaxed(&gc_heap_stats.heap_target) || jl_gc_debug_check_other()) { + if (jl_atomic_load_relaxed(&ptls->gc_num.allocd) >= 0 || jl_gc_debug_check_other()) { jl_gc_collect(JL_GC_AUTO); } else { @@ -1026,13 +1020,6 @@ STATIC_INLINE jl_value_t *jl_gc_big_alloc_inner(jl_ptls_t ptls, size_t sz) jl_atomic_load_relaxed(&ptls->gc_num.allocd) + allocsz); jl_atomic_store_relaxed(&ptls->gc_num.bigalloc, jl_atomic_load_relaxed(&ptls->gc_num.bigalloc) + 1); - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - if (alloc_acc + allocsz < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, alloc_acc + allocsz); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, alloc_acc + allocsz); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - } #ifdef MEMDEBUG memset(v, 0xee, allocsz); #endif @@ -1078,8 +1065,6 @@ static bigval_t **sweep_big_list(int sweep_full, bigval_t **pv) JL_NOTSAFEPOINT if (nxt) nxt->prev = pv; gc_num.freed += v->sz&~3; - jl_atomic_store_relaxed(&gc_heap_stats.heap_size, - jl_atomic_load_relaxed(&gc_heap_stats.heap_size) - (v->sz&~3)); #ifdef MEMDEBUG memset(v, 0xbb, v->sz&~3); #endif @@ -1139,13 +1124,6 @@ void jl_gc_count_allocd(size_t sz) JL_NOTSAFEPOINT jl_ptls_t ptls = jl_current_task->ptls; jl_atomic_store_relaxed(&ptls->gc_num.allocd, jl_atomic_load_relaxed(&ptls->gc_num.allocd) + sz); - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - if (alloc_acc + sz < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, alloc_acc + sz); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, alloc_acc + sz); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - } } static void combine_thread_gc_counts(jl_gc_num_t *dest) JL_NOTSAFEPOINT @@ -1158,16 +1136,12 @@ static void combine_thread_gc_counts(jl_gc_num_t *dest) JL_NOTSAFEPOINT jl_ptls_t ptls = gc_all_tls_states[i]; if (ptls) { dest->allocd += (jl_atomic_load_relaxed(&ptls->gc_num.allocd) + gc_num.interval); + dest->freed += jl_atomic_load_relaxed(&ptls->gc_num.freed); dest->malloc += jl_atomic_load_relaxed(&ptls->gc_num.malloc); dest->realloc += jl_atomic_load_relaxed(&ptls->gc_num.realloc); dest->poolalloc += jl_atomic_load_relaxed(&ptls->gc_num.poolalloc); dest->bigalloc += jl_atomic_load_relaxed(&ptls->gc_num.bigalloc); - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - uint64_t free_acc = jl_atomic_load_relaxed(&ptls->gc_num.free_acc); - dest->freed += jl_atomic_load_relaxed(&ptls->gc_num.free_acc); - jl_atomic_store_relaxed(&gc_heap_stats.heap_size, alloc_acc - free_acc + jl_atomic_load_relaxed(&gc_heap_stats.heap_size)); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - jl_atomic_store_relaxed(&ptls->gc_num.free_acc, 0); + dest->freecall += jl_atomic_load_relaxed(&ptls->gc_num.freecall); } } } @@ -1224,8 +1198,6 @@ static void jl_gc_free_array(jl_array_t *a) JL_NOTSAFEPOINT jl_free_aligned(d); else free(d); - jl_atomic_store_relaxed(&gc_heap_stats.heap_size, - jl_atomic_load_relaxed(&gc_heap_stats.heap_size) - jl_array_nbytes(a)); gc_num.freed += jl_array_nbytes(a); gc_num.freecall++; } @@ -1300,7 +1272,6 @@ static NOINLINE jl_taggedvalue_t *gc_add_page(jl_gc_pool_t *p) JL_NOTSAFEPOINT set_page_metadata(pg); push_page_metadata_back(&ptls->page_metadata_allocd, pg); jl_taggedvalue_t *fl = gc_reset_page(ptls, p, pg); - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, GC_PAGE_SZ); p->newpages = fl; return fl; } @@ -1495,10 +1466,8 @@ static jl_taggedvalue_t **gc_sweep_page(jl_gc_pool_t *p, jl_gc_pagemeta_t **allo else if (freed_lazily) { gc_alloc_map_set(pg->data, GC_PAGE_LAZILY_FREED); push_page_metadata_back(lazily_freed, pg); - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, -GC_PAGE_SZ); } else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, -GC_PAGE_SZ); #ifdef _P64 // only enable concurrent sweeping on 64bit if (jl_n_sweepthreads == 0) { jl_gc_free_page(pg); @@ -3138,8 +3107,6 @@ static int _jl_gc_collect(jl_ptls_t ptls, jl_gc_collection_t collection) jl_gc_markqueue_t *mq = &ptls->mark_queue; uint64_t gc_start_time = jl_hrtime(); - uint64_t mutator_time = gc_start_time - gc_end_time; - uint64_t before_free_heap_size = jl_atomic_load_relaxed(&gc_heap_stats.heap_size); int64_t last_perm_scanned_bytes = perm_scanned_bytes; uint64_t start_mark_time = jl_hrtime(); JL_PROBE_GC_MARK_BEGIN(); @@ -3230,12 +3197,16 @@ static int _jl_gc_collect(jl_ptls_t ptls, jl_gc_collection_t collection) uint64_t mark_time = end_mark_time - start_mark_time; gc_num.mark_time = mark_time; gc_num.total_mark_time += mark_time; + int64_t actual_allocd = gc_num.allocd; gc_settime_postmark_end(); // marking is over // Flush everything in mark cache gc_sync_all_caches_nolock(ptls); + int64_t live_sz_ub = live_bytes + actual_allocd; + int64_t live_sz_est = scanned_bytes + perm_scanned_bytes; + int64_t estimate_freed = live_sz_ub - live_sz_est; gc_verify(ptls); gc_stats_all_pool(); @@ -3246,16 +3217,53 @@ static int _jl_gc_collect(jl_ptls_t ptls, jl_gc_collection_t collection) if (!prev_sweep_full) promoted_bytes += perm_scanned_bytes - last_perm_scanned_bytes; // 5. next collection decision - int remset_nptr = 0; - int sweep_full = next_sweep_full; - int recollect = 0; + int not_freed_enough = (collection == JL_GC_AUTO) && estimate_freed < (7*(actual_allocd/10)); + int nptr = 0; assert(gc_n_threads); for (int i = 0; i < gc_n_threads; i++) { jl_ptls_t ptls2 = gc_all_tls_states[i]; if (ptls2 != NULL) - remset_nptr += ptls2->heap.remset_nptr; + nptr += ptls2->heap.remset_nptr; + } + int large_frontier = nptr*sizeof(void*) >= default_collect_interval; // many pointers in the intergen frontier => "quick" mark is not quick + // trigger a full collection if the number of live bytes doubles since the last full + // collection and then remains at least that high for a while. + if (grown_heap_age == 0) { + if (live_bytes > 2 * last_full_live) + grown_heap_age = 1; + } + else if (live_bytes >= last_live_bytes) { + grown_heap_age++; + } + int sweep_full = 0; + int recollect = 0; + if ((large_frontier || + ((not_freed_enough || promoted_bytes >= gc_num.interval) && + (promoted_bytes >= default_collect_interval || prev_sweep_full)) || + grown_heap_age > 1) && gc_num.pause > 1) { + sweep_full = 1; + } + // update heuristics only if this GC was automatically triggered + if (collection == JL_GC_AUTO) { + if (sweep_full) { + if (large_frontier) + gc_num.interval = last_long_collect_interval; + if (not_freed_enough || large_frontier) { + if (gc_num.interval <= 2*(max_collect_interval/5)) { + gc_num.interval = 5 * (gc_num.interval / 2); + } + } + last_long_collect_interval = gc_num.interval; + } + else { + // reset interval to default, or at least half of live_bytes + int64_t half = live_bytes/2; + if (default_collect_interval < half && half <= max_collect_interval) + gc_num.interval = half; + else + gc_num.interval = default_collect_interval; + } } - (void)remset_nptr; //Use this information for something? // If the live data outgrows the suggested max_total_memory @@ -3309,56 +3317,6 @@ static int _jl_gc_collect(jl_ptls_t ptls, jl_gc_collection_t collection) gc_num.last_full_sweep = gc_end_time; } - size_t heap_size = jl_atomic_load_relaxed(&gc_heap_stats.heap_size); - double target_allocs = 0.0; - double min_interval = default_collect_interval; - if (collection == JL_GC_AUTO) { - uint64_t alloc_diff = before_free_heap_size - old_heap_size; - uint64_t freed_diff = before_free_heap_size - heap_size; - double alloc_smooth_factor = 0.95; - double collect_smooth_factor = 0.5; - double tuning_factor = 0.03; - double alloc_mem = jl_gc_smooth(old_alloc_diff, alloc_diff, alloc_smooth_factor); - double alloc_time = jl_gc_smooth(old_mut_time, mutator_time + sweep_time, alloc_smooth_factor); // Charge sweeping to the mutator - double gc_mem = jl_gc_smooth(old_freed_diff, freed_diff, collect_smooth_factor); - double gc_time = jl_gc_smooth(old_pause_time, pause - sweep_time, collect_smooth_factor); - old_alloc_diff = alloc_diff; - old_mut_time = mutator_time; - old_freed_diff = freed_diff; - old_pause_time = pause; - old_heap_size = heap_size; // TODO: Update these values dynamically instead of just during the GC - if (gc_time > alloc_time * 95 && !(thrash_counter < 4)) - thrash_counter += 1; - else if (thrash_counter > 0) - thrash_counter -= 1; - if (alloc_mem != 0 && alloc_time != 0 && gc_mem != 0 && gc_time != 0 ) { - double alloc_rate = alloc_mem/alloc_time; - double gc_rate = gc_mem/gc_time; - target_allocs = sqrt(((double)heap_size/min_interval * alloc_rate)/(gc_rate * tuning_factor)); // work on multiples of min interval - } - } - if (thrashing == 0 && thrash_counter >= 3) - thrashing = 1; - else if (thrashing == 1 && thrash_counter <= 2) - thrashing = 0; // maybe we should report this to the user or error out? - - int bad_result = (target_allocs*min_interval + heap_size) > 2 * jl_atomic_load_relaxed(&gc_heap_stats.heap_target); // Don't follow through on a bad decision - if (target_allocs == 0.0 || thrashing || bad_result) // If we are thrashing go back to default - target_allocs = 2*sqrt((double)heap_size/min_interval); - uint64_t target_heap = (uint64_t)target_allocs*min_interval + heap_size; - if (target_heap > max_total_memory && !thrashing) // Allow it to go over if we are thrashing if we die we die - target_heap = max_total_memory; - else if (target_heap < default_collect_interval) - target_heap = default_collect_interval; - jl_atomic_store_relaxed(&gc_heap_stats.heap_target, target_heap); - - double old_ratio = (double)promoted_bytes/(double)heap_size; - if (heap_size > max_total_memory * 0.8 || old_ratio > 0.15) - next_sweep_full = 1; - else - next_sweep_full = 0; - if (heap_size > max_total_memory * 0.8 || thrashing) - under_pressure = 1; // sweeping is over // 7. if it is a quick sweep, put back the remembered objects in queued state // so that we don't trigger the barrier again on them. @@ -3390,28 +3348,32 @@ static int _jl_gc_collect(jl_ptls_t ptls, jl_gc_collection_t collection) } #endif - _report_gc_finished(pause, gc_num.freed, sweep_full, recollect, live_bytes); + _report_gc_finished(pause, gc_num.freed, sweep_full, recollect); + + gc_final_pause_end(gc_start_time, gc_end_time); + gc_time_sweep_pause(gc_end_time, actual_allocd, live_bytes, + estimate_freed, sweep_full); + gc_num.full_sweep += sweep_full; uint64_t max_memory = last_live_bytes + gc_num.allocd; if (max_memory > gc_num.max_memory) { gc_num.max_memory = max_memory; } - gc_final_pause_end(gc_start_time, gc_end_time); - gc_time_sweep_pause(gc_end_time, allocd, live_bytes, - estimate_freed, sweep_full); - gc_num.full_sweep += sweep_full; + + gc_num.allocd = 0; last_live_bytes = live_bytes; - live_bytes += -gc_num.freed + gc_num.allocd; + live_bytes += -gc_num.freed + actual_allocd; jl_timing_counter_dec(JL_TIMING_COUNTER_HeapSize, gc_num.freed); - gc_time_summary(sweep_full, t_start, gc_end_time, gc_num.freed, live_bytes, gc_num.interval, pause, gc_num.time_to_safepoint, gc_num.mark_time, gc_num.sweep_time); - + if (prev_sweep_full) { + last_full_live = live_bytes; + grown_heap_age = 0; + } prev_sweep_full = sweep_full; gc_num.pause += !recollect; gc_num.total_time += pause; - gc_num.allocd = 0; gc_num.freed = 0; if (pause > gc_num.max_pause) { gc_num.max_pause = pause; @@ -3597,7 +3559,6 @@ void jl_gc_init(void) arraylist_new(&finalizer_list_marked, 0); arraylist_new(&to_finalize, 0); - jl_atomic_store_relaxed(&gc_heap_stats.heap_target, default_collect_interval); gc_num.interval = default_collect_interval; last_long_collect_interval = default_collect_interval; gc_num.allocd = 0; @@ -3612,8 +3573,6 @@ void jl_gc_init(void) #endif if (jl_options.heap_size_hint) jl_gc_set_max_memory(jl_options.heap_size_hint - 250*1024*1024); - - t_start = jl_hrtime(); } JL_DLLEXPORT void jl_gc_set_max_memory(uint64_t max_mem) @@ -3653,13 +3612,6 @@ JL_DLLEXPORT void *jl_gc_counted_malloc(size_t sz) jl_atomic_load_relaxed(&ptls->gc_num.allocd) + sz); jl_atomic_store_relaxed(&ptls->gc_num.malloc, jl_atomic_load_relaxed(&ptls->gc_num.malloc) + 1); - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - if (alloc_acc + sz < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, alloc_acc + sz); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, alloc_acc + sz); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - } } return data; } @@ -3676,13 +3628,6 @@ JL_DLLEXPORT void *jl_gc_counted_calloc(size_t nm, size_t sz) jl_atomic_load_relaxed(&ptls->gc_num.allocd) + nm*sz); jl_atomic_store_relaxed(&ptls->gc_num.malloc, jl_atomic_load_relaxed(&ptls->gc_num.malloc) + 1); - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - if (alloc_acc + sz < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, alloc_acc + sz * nm); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, alloc_acc + sz * nm); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - } } return data; } @@ -3694,13 +3639,10 @@ JL_DLLEXPORT void jl_gc_counted_free_with_size(void *p, size_t sz) free(p); if (pgcstack != NULL && ct->world_age) { jl_ptls_t ptls = ct->ptls; - uint64_t free_acc = jl_atomic_load_relaxed(&ptls->gc_num.free_acc); - if (free_acc + sz < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.free_acc, free_acc + sz); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, -(free_acc + sz)); - jl_atomic_store_relaxed(&ptls->gc_num.free_acc, 0); - } + jl_atomic_store_relaxed(&ptls->gc_num.freed, + jl_atomic_load_relaxed(&ptls->gc_num.freed) + sz); + jl_atomic_store_relaxed(&ptls->gc_num.freecall, + jl_atomic_load_relaxed(&ptls->gc_num.freecall) + 1); } } @@ -3717,27 +3659,6 @@ JL_DLLEXPORT void *jl_gc_counted_realloc_with_old_size(void *p, size_t old, size jl_atomic_load_relaxed(&ptls->gc_num.allocd) + (sz - old)); jl_atomic_store_relaxed(&ptls->gc_num.realloc, jl_atomic_load_relaxed(&ptls->gc_num.realloc) + 1); - - int64_t diff = sz - old; - if (diff < 0) { - diff = -diff; - uint64_t free_acc = jl_atomic_load_relaxed(&ptls->gc_num.free_acc); - if (free_acc + diff < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.free_acc, free_acc + diff); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, -(free_acc + diff)); - jl_atomic_store_relaxed(&ptls->gc_num.free_acc, 0); - } - } - else { - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - if (alloc_acc + diff < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, alloc_acc + diff); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, alloc_acc + diff); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - } - } } return data; } @@ -3821,13 +3742,6 @@ JL_DLLEXPORT void *jl_gc_managed_malloc(size_t sz) jl_atomic_load_relaxed(&ptls->gc_num.allocd) + allocsz); jl_atomic_store_relaxed(&ptls->gc_num.malloc, jl_atomic_load_relaxed(&ptls->gc_num.malloc) + 1); - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - if (alloc_acc + allocsz < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, alloc_acc + allocsz); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, alloc_acc + allocsz); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - } #ifdef _OS_WINDOWS_ SetLastError(last_error); #endif @@ -3872,29 +3786,9 @@ static void *gc_managed_realloc_(jl_ptls_t ptls, void *d, size_t sz, size_t olds jl_atomic_load_relaxed(&ptls->gc_num.allocd) + (allocsz - oldsz)); jl_atomic_store_relaxed(&ptls->gc_num.realloc, jl_atomic_load_relaxed(&ptls->gc_num.realloc) + 1); - - int64_t diff = allocsz - oldsz; - if (diff < 0) { - diff = -diff; - uint64_t free_acc = jl_atomic_load_relaxed(&ptls->gc_num.free_acc); - if (free_acc + diff < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.free_acc, free_acc + diff); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, -(free_acc + diff)); - jl_atomic_store_relaxed(&ptls->gc_num.free_acc, 0); - } + if (allocsz > oldsz) { + maybe_record_alloc_to_profile((jl_value_t*)b, allocsz - oldsz, (jl_datatype_t*)jl_buff_tag); } - else { - uint64_t alloc_acc = jl_atomic_load_relaxed(&ptls->gc_num.alloc_acc); - if (alloc_acc + diff < 16*1024) - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, alloc_acc + diff); - else { - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size, alloc_acc + diff); - jl_atomic_store_relaxed(&ptls->gc_num.alloc_acc, 0); - } - } - - maybe_record_alloc_to_profile((jl_value_t*)b, sz, jl_gc_unknown_type_tag); return b; } @@ -3967,7 +3861,6 @@ static void *gc_perm_alloc_large(size_t sz, int zero, unsigned align, unsigned o #ifdef _OS_WINDOWS_ SetLastError(last_error); #endif - jl_atomic_fetch_add_relaxed(&gc_heap_stats.heap_size,sz); errno = last_errno; jl_may_leak(base); assert(align > 0); diff --git a/src/gc.h b/src/gc.h index 4bfe5dc328e9d..a00157c0d34ba 100644 --- a/src/gc.h +++ b/src/gc.h @@ -258,13 +258,6 @@ typedef struct { pagetable1_t *meta1[REGION2_PG_COUNT]; } pagetable_t; -typedef struct { - _Atomic(size_t) bytes_mapped; - _Atomic(size_t) bytes_resident; - _Atomic(size_t) heap_size; - _Atomic(size_t) heap_target; -} gc_heapstatus_t; - #define GC_PAGE_UNMAPPED 0 #define GC_PAGE_ALLOCATED 1 #define GC_PAGE_LAZILY_FREED 2 @@ -382,7 +375,6 @@ extern int64_t lazy_freed_pages; extern int gc_first_tid; extern int gc_n_threads; extern jl_ptls_t* gc_all_tls_states; -extern gc_heapstatus_t gc_heap_stats; STATIC_INLINE bigval_t *bigval_header(jl_taggedvalue_t *o) JL_NOTSAFEPOINT { @@ -646,7 +638,8 @@ void gc_count_pool(void); size_t jl_array_nbytes(jl_array_t *a) JL_NOTSAFEPOINT; JL_DLLEXPORT void jl_enable_gc_logging(int enable); -void _report_gc_finished(uint64_t pause, uint64_t freed, int full, int recollect, int64_t live_bytes) JL_NOTSAFEPOINT; +JL_DLLEXPORT uint32_t jl_get_num_stack_mappings(void); +void _report_gc_finished(uint64_t pause, uint64_t freed, int full, int recollect) JL_NOTSAFEPOINT; #ifdef __cplusplus } diff --git a/src/julia_threads.h b/src/julia_threads.h index d4cbb88e619ba..f4c235243e684 100644 --- a/src/julia_threads.h +++ b/src/julia_threads.h @@ -130,12 +130,12 @@ typedef struct { typedef struct { _Atomic(int64_t) allocd; + _Atomic(int64_t) freed; _Atomic(uint64_t) malloc; _Atomic(uint64_t) realloc; _Atomic(uint64_t) poolalloc; _Atomic(uint64_t) bigalloc; - _Atomic(int64_t) free_acc; - _Atomic(uint64_t) alloc_acc; + _Atomic(uint64_t) freecall; } jl_thread_gc_num_t; typedef struct { From f2c447d7c7f53b68b96234fc6b6281c0d7375138 Mon Sep 17 00:00:00 2001 From: KristofferC Date: Mon, 23 Oct 2023 12:26:40 +0200 Subject: [PATCH 23/45] bump SparseArrays to latest release-1.10 --- .../md5 | 1 - .../sha512 | 1 - .../md5 | 1 + .../sha512 | 1 + stdlib/SparseArrays.version | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 delete mode 100644 deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 create mode 100644 deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 create mode 100644 deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 diff --git a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 deleted file mode 100644 index 6509fe3ef2766..0000000000000 --- a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b2ddca51d8d39c2869555229575451f2 diff --git a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 deleted file mode 100644 index 2855286b87ab3..0000000000000 --- a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -cff167088056690a7c7453326bc1ad0ca0fcff9ffda85ebfd943ebad9684fc8134b0cda18dd70d8550de35493c6d9579b2fb51090b1c9718fa4290008c6d5f3f diff --git a/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 b/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 new file mode 100644 index 0000000000000..ce30b3e199269 --- /dev/null +++ b/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 @@ -0,0 +1 @@ +7344619653c2d5a15ffd8a5ffceccd97 diff --git a/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 b/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 new file mode 100644 index 0000000000000..b47df53eb7540 --- /dev/null +++ b/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 @@ -0,0 +1 @@ +611a6b6ae1027ddfb79dbb4c7b6e8b5962dcc8972156acdcf91a36d687ac236b53d37c74b70d298bb392aa5dc4186ea0cc55ddb3630a1945203f06e58240972a diff --git a/stdlib/SparseArrays.version b/stdlib/SparseArrays.version index 295400bbd3b57..782ca3584e88e 100644 --- a/stdlib/SparseArrays.version +++ b/stdlib/SparseArrays.version @@ -1,4 +1,4 @@ -SPARSEARRAYS_BRANCH = main -SPARSEARRAYS_SHA1 = 99c99b4521eb19a7973643d1aa4d7b1e4d50a6db +SPARSEARRAYS_BRANCH = release-1.10 +SPARSEARRAYS_SHA1 = d8aae6daa0943d719b4f6dfb0e906193b65928fa SPARSEARRAYS_GIT_URL := https://github.com/JuliaSparse/SparseArrays.jl.git SPARSEARRAYS_TAR_URL = https://api.github.com/repos/JuliaSparse/SparseArrays.jl/tarball/$1 From 4d3022ea6098a4382be7775c0de0f1df88b9d1f6 Mon Sep 17 00:00:00 2001 From: Daniel Karrasch Date: Wed, 27 Sep 2023 21:57:54 +0200 Subject: [PATCH 24/45] Handle `AbstractQ` in concatenation (#51132) Handling `AbstractQ`s in concatenation got lost in the overhaul. This brings it back (though it seemed to not be used anywhere), and even better: pre-1.9 `Q`s where handled via `AbstractMatrix` fallbacks, so elementwise. Now, it first materializes the matrix, and then copies to the right place in the destination array. (cherry picked from commit 50146b2dd27e8f3bc54367427a70cd96f74ada45) --- base/abstractarray.jl | 9 +- stdlib/LinearAlgebra/src/abstractq.jl | 11 +++ stdlib/LinearAlgebra/src/special.jl | 110 +++++++++++++++++++++ stdlib/LinearAlgebra/src/uniformscaling.jl | 108 -------------------- stdlib/LinearAlgebra/test/special.jl | 5 +- 5 files changed, 128 insertions(+), 115 deletions(-) diff --git a/base/abstractarray.jl b/base/abstractarray.jl index 8f1274d960e41..6f9823a5be5d7 100644 --- a/base/abstractarray.jl +++ b/base/abstractarray.jl @@ -1811,17 +1811,16 @@ function __cat_offset1!(A, shape, catdims, offsets, x) inds = ntuple(length(offsets)) do i (i <= length(catdims) && catdims[i]) ? offsets[i] .+ cat_indices(x, i) : 1:shape[i] end - if x isa AbstractArray - A[inds...] = x - else - fill!(view(A, inds...), x) - end + _copy_or_fill!(A, inds, x) newoffsets = ntuple(length(offsets)) do i (i <= length(catdims) && catdims[i]) ? offsets[i] + cat_size(x, i) : offsets[i] end return newoffsets end +_copy_or_fill!(A, inds, x) = fill!(view(A, inds...), x) +_copy_or_fill!(A, inds, x::AbstractArray) = (A[inds...] = x) + """ vcat(A...) diff --git a/stdlib/LinearAlgebra/src/abstractq.jl b/stdlib/LinearAlgebra/src/abstractq.jl index 93358d052d50b..2aa333beef2b2 100644 --- a/stdlib/LinearAlgebra/src/abstractq.jl +++ b/stdlib/LinearAlgebra/src/abstractq.jl @@ -8,6 +8,7 @@ end parent(adjQ::AdjointQ) = adjQ.Q eltype(::Type{<:AbstractQ{T}}) where {T} = T +Base.eltypeof(Q::AbstractQ) = eltype(Q) ndims(::AbstractQ) = 2 # inversion/adjoint/transpose @@ -129,6 +130,16 @@ function copyto!(dest::PermutedDimsArray{T,2,perm}, src::AbstractQ) where {T,per end return dest end +# used in concatenations: Base.__cat_offset1! +Base._copy_or_fill!(A, inds, Q::AbstractQ) = (A[inds...] = collect(Q)) +# overloads of helper functions +Base.cat_size(A::AbstractQ) = size(A) +Base.cat_size(A::AbstractQ, d) = size(A, d) +Base.cat_length(a::AbstractQ) = prod(size(a)) +Base.cat_ndims(a::AbstractQ) = ndims(a) +Base.cat_indices(A::AbstractQ, d) = axes(A, d) +Base.cat_similar(A::AbstractQ, T::Type, shape::Tuple) = Array{T}(undef, shape) +Base.cat_similar(A::AbstractQ, T::Type, shape::Vector) = Array{T}(undef, shape...) function show(io::IO, ::MIME{Symbol("text/plain")}, Q::AbstractQ) print(io, Base.dims2string(size(Q)), ' ', summary(Q)) diff --git a/stdlib/LinearAlgebra/src/special.jl b/stdlib/LinearAlgebra/src/special.jl index 885f29fa1417b..d028fe43e6338 100644 --- a/stdlib/LinearAlgebra/src/special.jl +++ b/stdlib/LinearAlgebra/src/special.jl @@ -336,6 +336,116 @@ const _SpecialArrays = Union{} promote_to_array_type(::Tuple) = Matrix +# promote_to_arrays(n,k, T, A...) promotes any UniformScaling matrices +# in A to matrices of type T and sizes given by n[k:end]. n is an array +# so that the same promotion code can be used for hvcat. We pass the type T +# so that we can re-use this code for sparse-matrix hcat etcetera. +promote_to_arrays_(n::Int, ::Type, a::Number) = a +promote_to_arrays_(n::Int, ::Type{Matrix}, J::UniformScaling{T}) where {T} = Matrix(J, n, n) +promote_to_arrays_(n::Int, ::Type, A::AbstractArray) = A +promote_to_arrays_(n::Int, ::Type, A::AbstractQ) = collect(A) +promote_to_arrays(n,k, ::Type) = () +promote_to_arrays(n,k, ::Type{T}, A) where {T} = (promote_to_arrays_(n[k], T, A),) +promote_to_arrays(n,k, ::Type{T}, A, B) where {T} = + (promote_to_arrays_(n[k], T, A), promote_to_arrays_(n[k+1], T, B)) +promote_to_arrays(n,k, ::Type{T}, A, B, C) where {T} = + (promote_to_arrays_(n[k], T, A), promote_to_arrays_(n[k+1], T, B), promote_to_arrays_(n[k+2], T, C)) +promote_to_arrays(n,k, ::Type{T}, A, B, Cs...) where {T} = + (promote_to_arrays_(n[k], T, A), promote_to_arrays_(n[k+1], T, B), promote_to_arrays(n,k+2, T, Cs...)...) + +_us2number(A) = A +_us2number(J::UniformScaling) = J.λ + +for (f, _f, dim, name) in ((:hcat, :_hcat, 1, "rows"), (:vcat, :_vcat, 2, "cols")) + @eval begin + @inline $f(A::Union{AbstractArray,AbstractQ,UniformScaling}...) = $_f(A...) + # if there's a Number present, J::UniformScaling must be 1x1-dimensional + @inline $f(A::Union{AbstractArray,AbstractQ,UniformScaling,Number}...) = $f(map(_us2number, A)...) + function $_f(A::Union{AbstractArray,AbstractQ,UniformScaling,Number}...; array_type = promote_to_array_type(A)) + n = -1 + for a in A + if !isa(a, UniformScaling) + require_one_based_indexing(a) + na = size(a,$dim) + n >= 0 && n != na && + throw(DimensionMismatch(string("number of ", $name, + " of each array must match (got ", n, " and ", na, ")"))) + n = na + end + end + n == -1 && throw(ArgumentError($("$f of only UniformScaling objects cannot determine the matrix size"))) + return cat(promote_to_arrays(fill(n, length(A)), 1, array_type, A...)..., dims=Val(3-$dim)) + end + end +end + +hvcat(rows::Tuple{Vararg{Int}}, A::Union{AbstractArray,AbstractQ,UniformScaling}...) = _hvcat(rows, A...) +hvcat(rows::Tuple{Vararg{Int}}, A::Union{AbstractArray,AbstractQ,UniformScaling,Number}...) = _hvcat(rows, A...) +function _hvcat(rows::Tuple{Vararg{Int}}, A::Union{AbstractArray,AbstractQ,UniformScaling,Number}...; array_type = promote_to_array_type(A)) + require_one_based_indexing(A...) + nr = length(rows) + sum(rows) == length(A) || throw(ArgumentError("mismatch between row sizes and number of arguments")) + n = fill(-1, length(A)) + needcols = false # whether we also need to infer some sizes from the column count + j = 0 + for i = 1:nr # infer UniformScaling sizes from row counts, if possible: + ni = -1 # number of rows in this block-row, -1 indicates unknown + for k = 1:rows[i] + if !isa(A[j+k], UniformScaling) + na = size(A[j+k], 1) + ni >= 0 && ni != na && + throw(DimensionMismatch("mismatch in number of rows")) + ni = na + end + end + if ni >= 0 + for k = 1:rows[i] + n[j+k] = ni + end + else # row consisted only of UniformScaling objects + needcols = true + end + j += rows[i] + end + if needcols # some sizes still unknown, try to infer from column count + nc = -1 + j = 0 + for i = 1:nr + nci = 0 + rows[i] > 0 && n[j+1] == -1 && (j += rows[i]; continue) + for k = 1:rows[i] + nci += isa(A[j+k], UniformScaling) ? n[j+k] : size(A[j+k], 2) + end + nc >= 0 && nc != nci && throw(DimensionMismatch("mismatch in number of columns")) + nc = nci + j += rows[i] + end + nc == -1 && throw(ArgumentError("sizes of UniformScalings could not be inferred")) + j = 0 + for i = 1:nr + if rows[i] > 0 && n[j+1] == -1 # this row consists entirely of UniformScalings + nci, r = divrem(nc, rows[i]) + r != 0 && throw(DimensionMismatch("indivisible UniformScaling sizes")) + for k = 1:rows[i] + n[j+k] = nci + end + end + j += rows[i] + end + end + Amat = promote_to_arrays(n, 1, array_type, A...) + # We have two methods for promote_to_array_type, one returning Matrix and + # another one returning SparseMatrixCSC (in SparseArrays.jl). In the dense + # case, we cannot call hvcat for the promoted UniformScalings because this + # causes a stack overflow. In the sparse case, however, we cannot call + # typed_hvcat because we need a sparse output. + if array_type == Matrix + return typed_hvcat(promote_eltype(Amat...), rows, Amat...) + else + return hvcat(rows, Amat...) + end +end + # factorizations function cholesky(S::RealHermSymComplexHerm{<:Real,<:SymTridiagonal}, ::NoPivot = NoPivot(); check::Bool = true) T = choltype(eltype(S)) diff --git a/stdlib/LinearAlgebra/src/uniformscaling.jl b/stdlib/LinearAlgebra/src/uniformscaling.jl index 0b3168113acf7..b014472a9cec2 100644 --- a/stdlib/LinearAlgebra/src/uniformscaling.jl +++ b/stdlib/LinearAlgebra/src/uniformscaling.jl @@ -402,114 +402,6 @@ function cond(J::UniformScaling{T}) where T return J.λ ≠ zero(T) ? onereal : oftype(onereal, Inf) end -# promote_to_arrays(n,k, T, A...) promotes any UniformScaling matrices -# in A to matrices of type T and sizes given by n[k:end]. n is an array -# so that the same promotion code can be used for hvcat. We pass the type T -# so that we can re-use this code for sparse-matrix hcat etcetera. -promote_to_arrays_(n::Int, ::Type, a::Number) = a -promote_to_arrays_(n::Int, ::Type{Matrix}, J::UniformScaling{T}) where {T} = Matrix(J, n, n) -promote_to_arrays_(n::Int, ::Type, A::AbstractArray) = A -promote_to_arrays(n,k, ::Type) = () -promote_to_arrays(n,k, ::Type{T}, A) where {T} = (promote_to_arrays_(n[k], T, A),) -promote_to_arrays(n,k, ::Type{T}, A, B) where {T} = - (promote_to_arrays_(n[k], T, A), promote_to_arrays_(n[k+1], T, B)) -promote_to_arrays(n,k, ::Type{T}, A, B, C) where {T} = - (promote_to_arrays_(n[k], T, A), promote_to_arrays_(n[k+1], T, B), promote_to_arrays_(n[k+2], T, C)) -promote_to_arrays(n,k, ::Type{T}, A, B, Cs...) where {T} = - (promote_to_arrays_(n[k], T, A), promote_to_arrays_(n[k+1], T, B), promote_to_arrays(n,k+2, T, Cs...)...) - -_us2number(A) = A -_us2number(J::UniformScaling) = J.λ - -for (f, _f, dim, name) in ((:hcat, :_hcat, 1, "rows"), (:vcat, :_vcat, 2, "cols")) - @eval begin - @inline $f(A::Union{AbstractArray,UniformScaling}...) = $_f(A...) - # if there's a Number present, J::UniformScaling must be 1x1-dimensional - @inline $f(A::Union{AbstractArray,UniformScaling,Number}...) = $f(map(_us2number, A)...) - function $_f(A::Union{AbstractArray,UniformScaling,Number}...; array_type = promote_to_array_type(A)) - n = -1 - for a in A - if !isa(a, UniformScaling) - require_one_based_indexing(a) - na = size(a,$dim) - n >= 0 && n != na && - throw(DimensionMismatch(string("number of ", $name, - " of each array must match (got ", n, " and ", na, ")"))) - n = na - end - end - n == -1 && throw(ArgumentError($("$f of only UniformScaling objects cannot determine the matrix size"))) - return cat(promote_to_arrays(fill(n, length(A)), 1, array_type, A...)..., dims=Val(3-$dim)) - end - end -end - -hvcat(rows::Tuple{Vararg{Int}}, A::Union{AbstractArray,UniformScaling,Number}...) = _hvcat(rows, A...) -function _hvcat(rows::Tuple{Vararg{Int}}, A::Union{AbstractArray,UniformScaling,Number}...; array_type = promote_to_array_type(A)) - require_one_based_indexing(A...) - nr = length(rows) - sum(rows) == length(A) || throw(ArgumentError("mismatch between row sizes and number of arguments")) - n = fill(-1, length(A)) - needcols = false # whether we also need to infer some sizes from the column count - j = 0 - for i = 1:nr # infer UniformScaling sizes from row counts, if possible: - ni = -1 # number of rows in this block-row, -1 indicates unknown - for k = 1:rows[i] - if !isa(A[j+k], UniformScaling) - na = size(A[j+k], 1) - ni >= 0 && ni != na && - throw(DimensionMismatch("mismatch in number of rows")) - ni = na - end - end - if ni >= 0 - for k = 1:rows[i] - n[j+k] = ni - end - else # row consisted only of UniformScaling objects - needcols = true - end - j += rows[i] - end - if needcols # some sizes still unknown, try to infer from column count - nc = -1 - j = 0 - for i = 1:nr - nci = 0 - rows[i] > 0 && n[j+1] == -1 && (j += rows[i]; continue) - for k = 1:rows[i] - nci += isa(A[j+k], UniformScaling) ? n[j+k] : size(A[j+k], 2) - end - nc >= 0 && nc != nci && throw(DimensionMismatch("mismatch in number of columns")) - nc = nci - j += rows[i] - end - nc == -1 && throw(ArgumentError("sizes of UniformScalings could not be inferred")) - j = 0 - for i = 1:nr - if rows[i] > 0 && n[j+1] == -1 # this row consists entirely of UniformScalings - nci, r = divrem(nc, rows[i]) - r != 0 && throw(DimensionMismatch("indivisible UniformScaling sizes")) - for k = 1:rows[i] - n[j+k] = nci - end - end - j += rows[i] - end - end - Amat = promote_to_arrays(n, 1, array_type, A...) - # We have two methods for promote_to_array_type, one returning Matrix and - # another one returning SparseMatrixCSC (in SparseArrays.jl). In the dense - # case, we cannot call hvcat for the promoted UniformScalings because this - # causes a stack overflow. In the sparse case, however, we cannot call - # typed_hvcat because we need a sparse output. - if array_type == Matrix - return typed_hvcat(promote_eltype(Amat...), rows, Amat...) - else - return hvcat(rows, Amat...) - end -end - ## Matrix construction from UniformScaling function Matrix{T}(s::UniformScaling, dims::Dims{2}) where {T} A = zeros(T, dims) diff --git a/stdlib/LinearAlgebra/test/special.jl b/stdlib/LinearAlgebra/test/special.jl index eaa297e05d957..7e96af369e310 100644 --- a/stdlib/LinearAlgebra/test/special.jl +++ b/stdlib/LinearAlgebra/test/special.jl @@ -259,9 +259,10 @@ end bidiagmat = Bidiagonal(1:N, 1:(N-1), :U) tridiagmat = Tridiagonal(1:(N-1), 1:N, 1:(N-1)) symtridiagmat = SymTridiagonal(1:N, 1:(N-1)) - specialmats = (diagmat, bidiagmat, tridiagmat, symtridiagmat) + abstractq = qr(tridiagmat).Q + specialmats = (diagmat, bidiagmat, tridiagmat, symtridiagmat, abstractq, zeros(Int,N,N)) for specialmata in specialmats, specialmatb in specialmats - MA = Matrix(specialmata); MB = Matrix(specialmatb) + MA = collect(specialmata); MB = collect(specialmatb) @test hcat(specialmata, specialmatb) == hcat(MA, MB) @test vcat(specialmata, specialmatb) == vcat(MA, MB) @test hvcat((1,1), specialmata, specialmatb) == hvcat((1,1), MA, MB) From 78b7a21a152227d05854727350449ad9ece38b20 Mon Sep 17 00:00:00 2001 From: Jaakko Ruohio Date: Wed, 11 Oct 2023 16:55:53 +0300 Subject: [PATCH 25/45] Allow tab after key name in TOML.parse (#51622) Fixes https://github.com/JuliaLang/TOML.jl/issues/52 (cherry picked from commit 8180240a5e3cef039e575e425c46334d16c1bf94) --- base/toml_parser.jl | 2 +- stdlib/TOML/test/parse.jl | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/base/toml_parser.jl b/base/toml_parser.jl index 6c4ff6e2a52c0..18166b03e23b3 100644 --- a/base/toml_parser.jl +++ b/base/toml_parser.jl @@ -611,7 +611,7 @@ function _parse_key(l::Parser) else set_marker!(l) if accept_batch(l, isvalid_barekey_char) - if !(peek(l) == '.' || peek(l) == ' ' || peek(l) == ']' || peek(l) == '=') + if !(peek(l) == '.' || iswhitespace(peek(l)) || peek(l) == ']' || peek(l) == '=') c = eat_char(l) return ParserError(ErrInvalidBareKeyCharacter, c) end diff --git a/stdlib/TOML/test/parse.jl b/stdlib/TOML/test/parse.jl index 12f68acbdb5bf..30400344f67cf 100644 --- a/stdlib/TOML/test/parse.jl +++ b/stdlib/TOML/test/parse.jl @@ -14,6 +14,7 @@ using TOML: ParserError TOML.parse(IOBuffer(str)) == TOML.parse(p, str) == TOML.parse(p, SubString(str)) == TOML.parse(p, IOBuffer(str)) == dict + @test TOML.parse("a\t=1") == dict @test_throws ParserError TOML.parse(invalid_str) @test_throws ParserError TOML.parse(SubString(invalid_str)) @test_throws ParserError TOML.parse(IOBuffer(invalid_str)) From 5f8f33b7141957ba0b8b89574018f99ad3eaca15 Mon Sep 17 00:00:00 2001 From: Paul Berg Date: Mon, 16 Oct 2023 02:41:46 +0200 Subject: [PATCH 26/45] Allow using `ReturnNode()` in `@generated` code (#51715) IRTools.jl currently tries to use `ReturnNode()` to model unreachable block terminators but it fails in `find_ssavalue_uses`. This PR adds a check to enable using `ReturnNode()` in untyped code. One other alternative for frontends is to use an instruction known to terminate (`Core.throw`) instead. See https://github.com/FluxML/IRTools.jl/pull/115 for more context. (cherry picked from commit ff03e5116d452d0e6e5970a50c187d468febf594) --- base/compiler/utilities.jl | 1 + test/staged.jl | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/base/compiler/utilities.jl b/base/compiler/utilities.jl index f3c5694535ce6..7c3b19ead54cc 100644 --- a/base/compiler/utilities.jl +++ b/base/compiler/utilities.jl @@ -390,6 +390,7 @@ function find_ssavalue_uses(body::Vector{Any}, nvals::Int) for line in 1:length(body) e = body[line] if isa(e, ReturnNode) + isdefined(e, :val) || continue e = e.val elseif isa(e, GotoIfNot) e = e.cond diff --git a/test/staged.jl b/test/staged.jl index 5204f5f6ca777..76d02c1938e4d 100644 --- a/test/staged.jl +++ b/test/staged.jl @@ -346,3 +346,32 @@ let world = Base.get_world_counter() @test all(lin->lin.method === :sin, src.linetable) @test sin_generated(42) == sin(42) end + +# Allow passing unreachable insts in generated codeinfo +let + dummy() = return + dummy_m = which(dummy, Tuple{}) + + src = Base.uncompressed_ir(dummy_m) + src.code = Any[ + # block 1 + Core.ReturnNode(nothing), + # block 2 + Core.ReturnNode(), + ] + nstmts = length(src.code) + nslots = 1 + src.ssavaluetypes = nstmts + src.codelocs = fill(Int32(1), nstmts) + src.ssaflags = fill(Int32(0), nstmts) + src.slotflags = fill(0, nslots) + src.slottypes = Any[Any] + + @eval function f_unreachable() + $(Expr(:meta, :generated, Returns(src))) + $(Expr(:meta, :generated_only)) + end + + ir, _ = Base.code_ircode(f_unreachable, ()) |> only + @test length(ir.cfg.blocks) == 1 +end From 516725dd7a46bd14703e2d15102df58762fa14fc Mon Sep 17 00:00:00 2001 From: Ian Butterworth Date: Mon, 16 Oct 2023 09:53:47 -0700 Subject: [PATCH 27/45] Lower Pidfile stale_age multiplier. Add pidfile to cache log message. (#51714) (cherry picked from commit 6ec149f3b19a0d1ba597ee20780856cd5ae31867) --- base/loading.jl | 19 +++++++++------- stdlib/FileWatching/src/pidfile.jl | 21 +++++++++-------- stdlib/FileWatching/test/pidfile.jl | 35 ++++++++++++++++++++--------- 3 files changed, 48 insertions(+), 27 deletions(-) diff --git a/base/loading.jl b/base/loading.jl index ef0d5e4bf6f5f..b3f02a68c2a96 100644 --- a/base/loading.jl +++ b/base/loading.jl @@ -2967,14 +2967,17 @@ global parse_pidfile_hook # the same package cannot be precompiled from different projects and/or different preferences at the same time. compilecache_pidfile_path(pkg::PkgId) = compilecache_path(pkg, UInt64(0); project="") * ".pidfile" +const compilecache_pidlock_stale_age = 10 + # Allows processes to wait if another process is precompiling a given source already. -# The lock file mtime will be updated when held every `stale_age/2` seconds. +# The lock file mtime will be updated when held at most every `stale_age/2` seconds, with expected +# variance of 10 seconds or more being infrequent but not unusual. # After `stale_age` seconds beyond the mtime of the lock file, the lock file is deleted and -# precompilation will proceed if -# - the locking process no longer exists -# - the lock is held by another host, since processes cannot be checked remotely -# or after `stale_age * 25` seconds if the process does still exist. -function maybe_cachefile_lock(f, pkg::PkgId, srcpath::String; stale_age=10) +# precompilation will proceed if the locking process no longer exists or after `stale_age * 5` +# seconds if the process does still exist. +# If the lock is held by another host, it will conservatively wait `stale_age * 5` +# seconds since processes cannot be checked remotely +function maybe_cachefile_lock(f, pkg::PkgId, srcpath::String; stale_age=compilecache_pidlock_stale_age) if @isdefined(mkpidlock_hook) && @isdefined(trymkpidlock_hook) && @isdefined(parse_pidfile_hook) pidfile = compilecache_pidfile_path(pkg) cachefile = invokelatest(trymkpidlock_hook, f, pidfile; stale_age) @@ -2982,9 +2985,9 @@ function maybe_cachefile_lock(f, pkg::PkgId, srcpath::String; stale_age=10) pid, hostname, age = invokelatest(parse_pidfile_hook, pidfile) verbosity = isinteractive() ? CoreLogging.Info : CoreLogging.Debug if isempty(hostname) || hostname == gethostname() - @logmsg verbosity "Waiting for another process (pid: $pid) to finish precompiling $pkg" + @logmsg verbosity "Waiting for another process (pid: $pid) to finish precompiling $pkg. Pidfile: $pidfile" else - @logmsg verbosity "Waiting for another machine (hostname: $hostname, pid: $pid) to finish precompiling $pkg" + @logmsg verbosity "Waiting for another machine (hostname: $hostname, pid: $pid) to finish precompiling $pkg. Pidfile: $pidfile" end # wait until the lock is available, but don't actually acquire it # returning nothing indicates a process waited for another diff --git a/stdlib/FileWatching/src/pidfile.jl b/stdlib/FileWatching/src/pidfile.jl index 6d40414e20db2..ada192b2493a0 100644 --- a/stdlib/FileWatching/src/pidfile.jl +++ b/stdlib/FileWatching/src/pidfile.jl @@ -32,7 +32,8 @@ Optional keyword arguments: - `mode`: file access mode (modified by the process umask). Defaults to world-readable. - `poll_interval`: Specify the maximum time to between attempts (if `watch_file` doesn't work) - `stale_age`: Delete an existing pidfile (ignoring the lock) if it is older than this many seconds, based on its mtime. - The file won't be deleted until 25x longer than this if the pid in the file appears that it may be valid. + The file won't be deleted until 5x longer than this if the pid in the file appears that it may be valid. + Or 25x longer if `refresh` is overridden to 0 to disable lock refreshing. By default this is disabled (`stale_age` = 0), but a typical recommended value would be about 3-5x an estimated normal completion time. - `refresh`: Keeps a lock from becoming stale by updating the mtime every interval of time that passes. @@ -63,7 +64,7 @@ mutable struct LockMonitor atdir, atname = splitdir(at) isempty(atdir) && (atdir = pwd()) at = realpath(atdir) * path_separator * atname - fd = open_exclusive(at; stale_age=stale_age, kwopts...) + fd = open_exclusive(at; stale_age, refresh, kwopts...) update = nothing try write_pidfile(fd, pid) @@ -184,15 +185,16 @@ function isvalidpid(hostname::AbstractString, pid::Cuint) end """ - stale_pidfile(path::String, stale_age::Real) :: Bool + stale_pidfile(path::String, stale_age::Real, refresh::Real) :: Bool Helper function for `open_exclusive` for deciding if a pidfile is stale. """ -function stale_pidfile(path::String, stale_age::Real) +function stale_pidfile(path::String, stale_age::Real, refresh::Real) pid, hostname, age = parse_pidfile(path) age < -stale_age && @warn "filesystem time skew detected" path=path + longer_factor = refresh == 0 ? 25 : 5 if age > stale_age - if (age > stale_age * 25) || !isvalidpid(hostname, pid) + if (age > stale_age * longer_factor) || !isvalidpid(hostname, pid) return true end end @@ -219,7 +221,7 @@ struct PidlockedError <: Exception end """ - open_exclusive(path::String; mode, poll_interval, wait, stale_age) :: File + open_exclusive(path::String; mode, poll_interval, wait, stale_age, refresh) :: File Create a new a file for read-write advisory-exclusive access. If `wait` is `false` then error out if the lock files exist @@ -231,13 +233,14 @@ function open_exclusive(path::String; mode::Integer = 0o444 #= read-only =#, poll_interval::Real = 10 #= seconds =#, wait::Bool = true #= return on failure if false =#, - stale_age::Real = 0 #= disabled =#) + stale_age::Real = 0 #= disabled =#, + refresh::Real = stale_age/2) # fast-path: just try to open it file = tryopen_exclusive(path, mode) file === nothing || return file if !wait if file === nothing && stale_age > 0 - if stale_age > 0 && stale_pidfile(path, stale_age) + if stale_age > 0 && stale_pidfile(path, stale_age, refresh) @warn "attempting to remove probably stale pidfile" path=path tryrmopenfile(path) end @@ -263,7 +266,7 @@ function open_exclusive(path::String; file = tryopen_exclusive(path, mode) file === nothing || return file Base.wait(t) # sleep for a bit before trying again - if stale_age > 0 && stale_pidfile(path, stale_age) + if stale_age > 0 && stale_pidfile(path, stale_age, refresh) # if the file seems stale, try to remove it before attempting again # set stale_age to zero so we won't attempt again, even if the attempt fails stale_age -= stale_age diff --git a/stdlib/FileWatching/test/pidfile.jl b/stdlib/FileWatching/test/pidfile.jl index c2cb0c88a1b1e..3464a24175632 100644 --- a/stdlib/FileWatching/test/pidfile.jl +++ b/stdlib/FileWatching/test/pidfile.jl @@ -203,18 +203,33 @@ end @assert !ispath("pidfile") @testset "open_exclusive: break lock" begin - # test for stale_age - t = @elapsed f = open_exclusive("pidfile", poll_interval=3, stale_age=10)::File - try - write_pidfile(f, getpid()) - finally + @testset "using stale_age without lock refreshing" begin + t = @elapsed f = open_exclusive("pidfile", poll_interval=3, stale_age=10, refresh=0)::File + try + write_pidfile(f, getpid()) + finally + close(f) + end + @test t < 2 + t = @elapsed f = open_exclusive("pidfile", poll_interval=3, stale_age=1, refresh=0)::File close(f) + @test 20 < t < 50 + rm("pidfile") + end + + @testset "using stale_age with lock refreshing on (default)" begin + t = @elapsed f = open_exclusive("pidfile", poll_interval=3, stale_age=10)::File + try + write_pidfile(f, getpid()) + finally + close(f) + end + @test t < 2 + t = @elapsed f = open_exclusive("pidfile", poll_interval=3, stale_age=5)::File + close(f) + @test 20 < t < 50 + rm("pidfile") end - @test t < 2 - t = @elapsed f = open_exclusive("pidfile", poll_interval=3, stale_age=1)::File - close(f) - @test 20 < t < 50 - rm("pidfile") t = @elapsed f = open_exclusive("pidfile", poll_interval=3, stale_age=10)::File close(f) From 83297257caa2fcd698676bed8ee6b6367288bcac Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 18 Oct 2023 09:54:22 -0400 Subject: [PATCH 28/45] codegen: fix gc rooting bug (#51744) ccall was not creating roots for the contents of struct values which contained roots on the stack, as expected to align with `GC.@preserve`, and causing many segfaults for #51319 (cherry picked from commit e36f65f0f66c1306574f7ec577479bf381fa088c) --- src/ccall.cpp | 2 +- src/cgutils.cpp | 30 +++++++++++++++++++++--------- src/codegen.cpp | 20 ++++++++------------ test/compiler/codegen.jl | 6 +++--- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/ccall.cpp b/src/ccall.cpp index 47496a3a91ba6..46834d323925b 100644 --- a/src/ccall.cpp +++ b/src/ccall.cpp @@ -1413,7 +1413,7 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) if (jl_is_long(argi_root)) continue; jl_cgval_t arg_root = emit_expr(ctx, argi_root); - Value *gc_root = get_gc_root_for(arg_root); + Value *gc_root = get_gc_root_for(ctx, arg_root); if (gc_root) gc_uses.push_back(gc_root); } diff --git a/src/cgutils.cpp b/src/cgutils.cpp index 69f620869df93..7b15ef366777c 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -305,19 +305,34 @@ static Value *emit_pointer_from_objref(jl_codectx_t &ctx, Value *V) return Call; } -static Value *get_gc_root_for(const jl_cgval_t &x) +static Value *emit_unbox(jl_codectx_t &ctx, Type *to, const jl_cgval_t &x, jl_value_t *jt); +static void emit_unbox_store(jl_codectx_t &ctx, const jl_cgval_t &x, Value* dest, MDNode *tbaa_dest, unsigned alignment, bool isVolatile=false); + +static Value *get_gc_root_for(jl_codectx_t &ctx, const jl_cgval_t &x) { - if (x.Vboxed) + if (x.constant || x.typ == jl_bottom_type) + return nullptr; + if (x.Vboxed) // superset of x.isboxed return x.Vboxed; - if (x.ispointer() && !x.constant) { + assert(!x.isboxed); +#ifndef NDEBUG + if (x.ispointer()) { assert(x.V); if (PointerType *T = dyn_cast(x.V->getType())) { - if (T->getAddressSpace() == AddressSpace::Tracked || - T->getAddressSpace() == AddressSpace::Derived) { - return x.V; + assert(T->getAddressSpace() != AddressSpace::Tracked); + if (T->getAddressSpace() == AddressSpace::Derived) { + // n.b. this IR would not be valid after LLVM-level inlining, + // since codegen does not have a way to determine the whether + // this argument value needs to be re-rooted } } } +#endif + if (jl_is_concrete_immutable(x.typ) && !jl_is_pointerfree(x.typ)) { + Type *T = julia_type_to_llvm(ctx, x.typ); + return emit_unbox(ctx, T, x, x.typ); + } + // nothing here to root, move along return nullptr; } @@ -1795,9 +1810,6 @@ static Value *emit_bounds_check(jl_codectx_t &ctx, const jl_cgval_t &ainfo, jl_v return im1; } -static Value *emit_unbox(jl_codectx_t &ctx, Type *to, const jl_cgval_t &x, jl_value_t *jt); -static void emit_unbox_store(jl_codectx_t &ctx, const jl_cgval_t &x, Value* dest, MDNode *tbaa_dest, unsigned alignment, bool isVolatile=false); - static void emit_write_barrier(jl_codectx_t&, Value*, ArrayRef); static void emit_write_barrier(jl_codectx_t&, Value*, Value*); static void emit_write_multibarrier(jl_codectx_t&, Value*, Value*, jl_value_t*); diff --git a/src/codegen.cpp b/src/codegen.cpp index f72c2ae2056b9..09fc465e93fca 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -3028,9 +3028,12 @@ static Value *emit_bits_compare(jl_codectx_t &ctx, jl_cgval_t arg1, jl_cgval_t a varg2 = emit_pointer_from_objref(ctx, varg2); Value *gc_uses[2]; int nroots = 0; - if ((gc_uses[nroots] = get_gc_root_for(arg1))) + // these roots may seem a bit overkill, but we want to make sure + // that a!=b implies (a,)!=(b,) even if a and b are unused and + // therefore could be freed and then the memory for a reused for b + if ((gc_uses[nroots] = get_gc_root_for(ctx, arg1))) nroots++; - if ((gc_uses[nroots] = get_gc_root_for(arg2))) + if ((gc_uses[nroots] = get_gc_root_for(ctx, arg2))) nroots++; OperandBundleDef OpBundle("jl_roots", makeArrayRef(gc_uses, nroots)); auto answer = ctx.builder.CreateCall(prepare_call(memcmp_func), { @@ -5790,16 +5793,9 @@ static jl_cgval_t emit_expr(jl_codectx_t &ctx, jl_value_t *expr, ssize_t ssaidx_ } std::vector vals; for (size_t i = 0; i < nargs; ++i) { - const jl_cgval_t &ai = argv[i]; - if (ai.constant || ai.typ == jl_bottom_type) - continue; - if (ai.isboxed) { - vals.push_back(ai.Vboxed); - } - else if (jl_is_concrete_immutable(ai.typ) && !jl_is_pointerfree(ai.typ)) { - Type *at = julia_type_to_llvm(ctx, ai.typ); - vals.push_back(emit_unbox(ctx, at, ai, ai.typ)); - } + Value *gc_root = get_gc_root_for(ctx, argv[i]); + if (gc_root) + vals.push_back(gc_root); } Value *token = vals.empty() ? (Value*)ConstantTokenNone::get(ctx.builder.getContext()) diff --git a/test/compiler/codegen.jl b/test/compiler/codegen.jl index 26d9f0c08e797..9b34ae7321ff6 100644 --- a/test/compiler/codegen.jl +++ b/test/compiler/codegen.jl @@ -574,12 +574,12 @@ end end @test occursin("llvm.julia.gc_preserve_begin", get_llvm(f3, Tuple{Bool}, true, false, false)) - # unions of immutables (JuliaLang/julia#39501) + # PhiNode of unions of immutables (JuliaLang/julia#39501) function f2(cond) - val = cond ? 1 : 1f0 + val = cond ? 1 : "" GC.@preserve val begin end end - @test !occursin("llvm.julia.gc_preserve_begin", get_llvm(f2, Tuple{Bool}, true, false, false)) + @test occursin("llvm.julia.gc_preserve_begin", get_llvm(f2, Tuple{Bool}, true, false, false)) # make sure the fix for the above doesn't regress #34241 function f4(cond) val = cond ? ([1],) : ([1f0],) From c426095d4c1fca0dc7dbe6a4b07fbfea0e25598c Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Wed, 18 Oct 2023 16:32:39 -0400 Subject: [PATCH 29/45] limit TimeType subtraction (#51743) Disallow some type combinations that don't make sense. --------- Co-authored-by: Ben Baumgold <4933671+baumgold@users.noreply.github.com> (cherry picked from commit 8a889ffcd235ac75720205b0cd7446c9b66eb664) --- stdlib/Dates/src/arithmetic.jl | 6 ++++-- stdlib/Dates/test/arithmetic.jl | 4 +--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/Dates/src/arithmetic.jl b/stdlib/Dates/src/arithmetic.jl index a847f749d0154..23a76f5ed75d6 100644 --- a/stdlib/Dates/src/arithmetic.jl +++ b/stdlib/Dates/src/arithmetic.jl @@ -6,8 +6,10 @@ # TimeType arithmetic (+)(x::TimeType) = x -(-)(x::T, y::T) where {T<:TimeType} = x.instant - y.instant -(-)(x::TimeType, y::TimeType) = -(promote(x, y)...) +(-)(x::Date, y::Date) = x.instant - y.instant +(-)(x::Time, y::Time) = x.instant - y.instant +(-)(x::DateTime, y::DateTime) = x.instant - y.instant +(-)(x::AbstractDateTime, y::AbstractDateTime) = -(promote(x, y)...) # Date-Time arithmetic """ diff --git a/stdlib/Dates/test/arithmetic.jl b/stdlib/Dates/test/arithmetic.jl index 2e684815a3c86..d1dad0180f57b 100644 --- a/stdlib/Dates/test/arithmetic.jl +++ b/stdlib/Dates/test/arithmetic.jl @@ -12,9 +12,7 @@ using Dates end @testset "TimeType arithmetic" begin - a = Date(2023, 5, 1) - b = DateTime(2023, 5, 2) - @test b - a == Day(1) + @test_throws MethodError DateTime(2023, 5, 2) - Date(2023, 5, 1) end @testset "Wrapping arithmetic for Months" begin From bd99491ada5c0618f4ca8869a4cbdd86dfc3f38b Mon Sep 17 00:00:00 2001 From: "Steven G. Johnson" Date: Fri, 20 Oct 2023 16:24:56 -0400 Subject: [PATCH 30/45] fix unicode indexing in parse(Complex, string) (#51758) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes a string-indexing bug introduced in #24713 (Julia 0.7). Sometimes, this would cause `parse(Complex{T}, string)` to throw a `StringIndexError` rather than an `ArgumentError`, e.g. for `parse(ComplexF64, "3 β+ 4im")` or `parse(ComplexF64, "3 + 4αm")`. (As far as I can tell, it can never cause parsing to fail for valid strings.) The source of the error is that if `i` is the index of an ASCII character in a string `s`, then `s[i+1]` is valid (even if the next character is non-ASCII) but `s[i-1]` is invalid if the previous character is non-ASCII. (cherry picked from commit f71228d939114a84c0c82f0740785f764a2c38ef) --- base/parse.jl | 10 +++++----- test/parse.jl | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/base/parse.jl b/base/parse.jl index f6a93e56369b7..ab1adb7c30895 100644 --- a/base/parse.jl +++ b/base/parse.jl @@ -321,14 +321,14 @@ function tryparse_internal(::Type{Complex{T}}, s::Union{String,SubString{String} if i₊ == i # leading ± sign i₊ = something(findnext(in(('+','-')), s, i₊+1), 0) end - if i₊ != 0 && s[i₊-1] in ('e','E') # exponent sign + if i₊ != 0 && s[prevind(s, i₊)] in ('e','E') # exponent sign i₊ = something(findnext(in(('+','-')), s, i₊+1), 0) end # find trailing im/i/j iᵢ = something(findprev(in(('m','i','j')), s, e), 0) if iᵢ > 0 && s[iᵢ] == 'm' # im - iᵢ -= 1 + iᵢ = prevind(s, iᵢ) if s[iᵢ] != 'i' raise && throw(ArgumentError("expected trailing \"im\", found only \"m\"")) return nothing @@ -337,7 +337,7 @@ function tryparse_internal(::Type{Complex{T}}, s::Union{String,SubString{String} if i₊ == 0 # purely real or imaginary value if iᵢ > i && !(iᵢ == i+1 && s[i] in ('+','-')) # purely imaginary (not "±inf") - x = tryparse_internal(T, s, i, iᵢ-1, raise) + x = tryparse_internal(T, s, i, prevind(s, iᵢ), raise) x === nothing && return nothing return Complex{T}(zero(x),x) else # purely real @@ -353,11 +353,11 @@ function tryparse_internal(::Type{Complex{T}}, s::Union{String,SubString{String} end # parse real part - re = tryparse_internal(T, s, i, i₊-1, raise) + re = tryparse_internal(T, s, i, prevind(s, i₊), raise) re === nothing && return nothing # parse imaginary part - im = tryparse_internal(T, s, i₊+1, iᵢ-1, raise) + im = tryparse_internal(T, s, i₊+1, prevind(s, iᵢ), raise) im === nothing && return nothing return Complex{T}(re, s[i₊]=='-' ? -im : im) diff --git a/test/parse.jl b/test/parse.jl index 69092b2c4188d..e2b94a45cc446 100644 --- a/test/parse.jl +++ b/test/parse.jl @@ -296,6 +296,8 @@ end @test_throws ArgumentError parse(Complex{T}, bad) end @test_throws ArgumentError parse(Complex{Int}, "3 + 4.2im") + @test_throws ArgumentError parse(ComplexF64, "3 β+ 4im") + @test_throws ArgumentError parse(ComplexF64, "3 + 4αm") end @testset "parse and tryparse type inference" begin From d2a66d8a3c610b3b12d82cbc507b8598bba1cdce Mon Sep 17 00:00:00 2001 From: Gabriel Baraldi Date: Mon, 23 Oct 2023 05:17:54 -0300 Subject: [PATCH 31/45] Don't make pkgimages global editable (#51781) (cherry picked from commit 37611b407da73b13ec3b520e15fcc39f17293ba5) --- base/loading.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/loading.jl b/base/loading.jl index b3f02a68c2a96..78849ab6cdd3f 100644 --- a/base/loading.jl +++ b/base/loading.jl @@ -2402,7 +2402,7 @@ function compilecache(pkg::PkgId, path::String, internal_stderr::IO = stderr, in # Ensure that the user can execute the `.so` we're generating # Note that on windows, `filemode(path)` typically returns `0o666`, so this # addition of the execute bit for the user is doubly needed. - chmod(tmppath_so, filemode(path) & 0o777 | 0o333) + chmod(tmppath_so, filemode(path) & 0o777 | 0o331) end # prune the directory with cache files From e862940299e834b4e9dcde52822467558268879b Mon Sep 17 00:00:00 2001 From: KristofferC Date: Mon, 23 Oct 2023 16:35:36 +0200 Subject: [PATCH 32/45] Revert "bump SparseArrays to latest release-1.10" This reverts commit f2c447d7c7f53b68b96234fc6b6281c0d7375138. --- .../md5 | 1 + .../sha512 | 1 + .../md5 | 1 - .../sha512 | 1 - stdlib/SparseArrays.version | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 create mode 100644 deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 delete mode 100644 deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 delete mode 100644 deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 diff --git a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 new file mode 100644 index 0000000000000..6509fe3ef2766 --- /dev/null +++ b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 @@ -0,0 +1 @@ +b2ddca51d8d39c2869555229575451f2 diff --git a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 new file mode 100644 index 0000000000000..2855286b87ab3 --- /dev/null +++ b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 @@ -0,0 +1 @@ +cff167088056690a7c7453326bc1ad0ca0fcff9ffda85ebfd943ebad9684fc8134b0cda18dd70d8550de35493c6d9579b2fb51090b1c9718fa4290008c6d5f3f diff --git a/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 b/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 deleted file mode 100644 index ce30b3e199269..0000000000000 --- a/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -7344619653c2d5a15ffd8a5ffceccd97 diff --git a/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 b/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 deleted file mode 100644 index b47df53eb7540..0000000000000 --- a/deps/checksums/SparseArrays-d8aae6daa0943d719b4f6dfb0e906193b65928fa.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -611a6b6ae1027ddfb79dbb4c7b6e8b5962dcc8972156acdcf91a36d687ac236b53d37c74b70d298bb392aa5dc4186ea0cc55ddb3630a1945203f06e58240972a diff --git a/stdlib/SparseArrays.version b/stdlib/SparseArrays.version index 782ca3584e88e..295400bbd3b57 100644 --- a/stdlib/SparseArrays.version +++ b/stdlib/SparseArrays.version @@ -1,4 +1,4 @@ -SPARSEARRAYS_BRANCH = release-1.10 -SPARSEARRAYS_SHA1 = d8aae6daa0943d719b4f6dfb0e906193b65928fa +SPARSEARRAYS_BRANCH = main +SPARSEARRAYS_SHA1 = 99c99b4521eb19a7973643d1aa4d7b1e4d50a6db SPARSEARRAYS_GIT_URL := https://github.com/JuliaSparse/SparseArrays.jl.git SPARSEARRAYS_TAR_URL = https://api.github.com/repos/JuliaSparse/SparseArrays.jl/tarball/$1 From 5ded9ab8a078e22dd6b95076d2b89182bd621ea5 Mon Sep 17 00:00:00 2001 From: KristofferC Date: Tue, 24 Oct 2023 10:43:11 +0200 Subject: [PATCH 33/45] bump SparseArrays to latest release-1.10 --- .../md5 | 1 - .../sha512 | 1 - .../md5 | 1 - .../sha512 | 1 - .../md5 | 1 + .../sha512 | 1 + stdlib/SparseArrays.version | 2 +- 7 files changed, 3 insertions(+), 5 deletions(-) delete mode 100644 deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 delete mode 100644 deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 delete mode 100644 deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 delete mode 100644 deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 create mode 100644 deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/md5 create mode 100644 deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/sha512 diff --git a/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 b/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 deleted file mode 100644 index 12314ebe27beb..0000000000000 --- a/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -6427ffc68076c0555b0d3a02eaf88160 diff --git a/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 b/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 deleted file mode 100644 index 5c7602b6707cc..0000000000000 --- a/deps/checksums/SparseArrays-3582898a4efd3f504d39076f5a162b9ed1ebcdb2.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -7a4c6dae45b739bb1b22c53c8b2b32fc765995767580338218a99f671749bbd5c5d9b61f45718c3b80e153b524737501141481ede2a6f24856de1c028f07ad3a diff --git a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 deleted file mode 100644 index 6509fe3ef2766..0000000000000 --- a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b2ddca51d8d39c2869555229575451f2 diff --git a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 b/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 deleted file mode 100644 index 2855286b87ab3..0000000000000 --- a/deps/checksums/SparseArrays-99c99b4521eb19a7973643d1aa4d7b1e4d50a6db.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -cff167088056690a7c7453326bc1ad0ca0fcff9ffda85ebfd943ebad9684fc8134b0cda18dd70d8550de35493c6d9579b2fb51090b1c9718fa4290008c6d5f3f diff --git a/deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/md5 b/deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/md5 new file mode 100644 index 0000000000000..afeeed49f2e21 --- /dev/null +++ b/deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/md5 @@ -0,0 +1 @@ +85c5dcb49f11bce2d6bb75ef620ea892 diff --git a/deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/sha512 b/deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/sha512 new file mode 100644 index 0000000000000..7cab3aeec5ca9 --- /dev/null +++ b/deps/checksums/SparseArrays-fa6269b0dc5660cbaddb9365c7d89b206fc55992.tar.gz/sha512 @@ -0,0 +1 @@ +a1810991895650263c33c3e9c2b3089c66948b86b4de16c4c06ed49841cf5500814641576a6b735d5cf3841991684e908c4828a56ee218be216424e6aa9d5f43 diff --git a/stdlib/SparseArrays.version b/stdlib/SparseArrays.version index 295400bbd3b57..b30b1002d5285 100644 --- a/stdlib/SparseArrays.version +++ b/stdlib/SparseArrays.version @@ -1,4 +1,4 @@ SPARSEARRAYS_BRANCH = main -SPARSEARRAYS_SHA1 = 99c99b4521eb19a7973643d1aa4d7b1e4d50a6db +SPARSEARRAYS_SHA1 = fa6269b0dc5660cbaddb9365c7d89b206fc55992 SPARSEARRAYS_GIT_URL := https://github.com/JuliaSparse/SparseArrays.jl.git SPARSEARRAYS_TAR_URL = https://api.github.com/repos/JuliaSparse/SparseArrays.jl/tarball/$1 From be97eb7bb99e3132f0072069f880b545564a96cc Mon Sep 17 00:00:00 2001 From: Lilith Orion Hafner Date: Tue, 24 Oct 2023 03:11:54 -0500 Subject: [PATCH 34/45] Fix typo in range display (#51832) Thanks ScottPJones for finding this. Co-authored-by: Lilith Hafner (cherry picked from commit b197197a51cb1d4eea5c3e3fed0ae3419449a6d6) --- base/range.jl | 2 +- test/ranges.jl | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/base/range.jl b/base/range.jl index 67735ad930a2c..d9a958908330f 100644 --- a/base/range.jl +++ b/base/range.jl @@ -595,7 +595,7 @@ function show(io::IO, r::LinRange{T}) where {T} print(io, "LinRange{") show(io, T) print(io, "}(") - ioc = IOContext(io, :typeinto=>T) + ioc = IOContext(io, :typeinfo=>T) show(ioc, first(r)) print(io, ", ") show(ioc, last(r)) diff --git a/test/ranges.jl b/test/ranges.jl index 85f6a04634a14..8a91c4c997a53 100644 --- a/test/ranges.jl +++ b/test/ranges.jl @@ -1286,6 +1286,8 @@ end @test sprint(show, UnitRange(1, 2)) == "1:2" @test sprint(show, StepRange(1, 2, 5)) == "1:2:5" + + @test sprint(show, LinRange{Float32}(1.5, 2.5, 10)) == "LinRange{Float32}(1.5, 2.5, 10)" end @testset "Issue 11049, and related" begin From 7ae153540dbcd8684fd3a235168c18fbb5bb8d19 Mon Sep 17 00:00:00 2001 From: Paul Berg Date: Tue, 24 Oct 2023 10:14:07 +0200 Subject: [PATCH 35/45] Make local scope for `else` blocks in `try`/`catch`/`else` (#51785) [Docs](https://docs.julialang.org/en/v1/manual/control-flow/#else-Clauses) state: > The try, catch, else, and finally clauses each introduce their own > scope blocks. But it is currently not the case for `else` blocks ```julia julia> try catch else z = 1 end 1 julia> z 1 ``` This change actually makes `else` blocks have their own scope block: ```julia julia> try catch else z = 1 end 1 julia> z ERROR: UndefVarError: `z` not defined ``` (cherry picked from commit 17a36eeb06192b9c878cdaa8436ede23f61acfa0) --- src/julia-syntax.scm | 2 +- test/syntax.jl | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/julia-syntax.scm b/src/julia-syntax.scm index eb79dfc52f76c..b5705c55b6e61 100644 --- a/src/julia-syntax.scm +++ b/src/julia-syntax.scm @@ -1420,7 +1420,7 @@ (scope-block ,finalb))))) ((length> e 3) (and (length> e 6) (error "invalid \"try\" form")) - (let ((elseb (if (length= e 6) (cdddddr e) '()))) + (let ((elseb (if (length= e 6) `((scope-block ,@(cdddddr e))) '()))) (expand-forms `(,(if (null? elseb) 'trycatch 'trycatchelse) (scope-block ,tryb) diff --git a/test/syntax.jl b/test/syntax.jl index 36f0f50c376c4..c69843785136e 100644 --- a/test/syntax.jl +++ b/test/syntax.jl @@ -3187,6 +3187,22 @@ end end @test err == 5 + 6 @test x == 1 + + x = 0 + try + catch + else + x = 1 + end + @test x == 1 + + try + catch + else + tryelse_in_local_scope = true + end + + @test !@isdefined(tryelse_in_local_scope) end @test_parseerror """ From 4e1759cbc748dbdb672de791e2d58bbd3953849d Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Mon, 23 Oct 2023 14:19:11 +0200 Subject: [PATCH 36/45] fix eltype for partition iterators of substrings (#51773) Fixes https://github.com/JuliaLang/julia/issues/51771 The convert method that asserts in #51771 is arguably still faulty though. (cherry picked from commit cf00550f955abd408bf0f478882c57887522f67e) --- base/strings/util.jl | 2 ++ test/iterators.jl | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/base/strings/util.jl b/base/strings/util.jl index bd4da03ce1571..1154690ee846b 100644 --- a/base/strings/util.jl +++ b/base/strings/util.jl @@ -571,6 +571,8 @@ end # Specialization for partition(s,n) to return a SubString eltype(::Type{PartitionIterator{T}}) where {T<:AbstractString} = SubString{T} +# SubStrings do not nest +eltype(::Type{PartitionIterator{T}}) where {T<:SubString} = T function iterate(itr::PartitionIterator{<:AbstractString}, state = firstindex(itr.c)) state > ncodeunits(itr.c) && return nothing diff --git a/test/iterators.jl b/test/iterators.jl index 59588bdac9684..a60ec32bb9ac0 100644 --- a/test/iterators.jl +++ b/test/iterators.jl @@ -1001,3 +1001,7 @@ end end @test v == () end + +@testset "collect partition substring" begin + @test collect(Iterators.partition(lstrip("01111", '0'), 2)) == ["11", "11"] +end From a599ed4a8f07b51c3190afd48c2525f5919815dd Mon Sep 17 00:00:00 2001 From: Diogo Netto <61364108+d-netto@users.noreply.github.com> Date: Tue, 24 Oct 2023 20:28:17 -0300 Subject: [PATCH 37/45] [release 1.10] trigger a full sweep if beyond max total memory (#51843) Otherwise `--heap-size-hint` will become a no-op. Likely a merge bug from https://github.com/JuliaLang/julia/pull/51661. --- src/gc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gc.c b/src/gc.c index 8e37fa95a6cfc..a112d73de625a 100644 --- a/src/gc.c +++ b/src/gc.c @@ -3267,8 +3267,10 @@ static int _jl_gc_collect(jl_ptls_t ptls, jl_gc_collection_t collection) // If the live data outgrows the suggested max_total_memory - // we keep going with minimum intervals and full gcs until - // we either free some space or get an OOM error. + // we keep going with full gcs until we either free some space or get an OOM error. + if (live_bytes > max_total_memory) { + sweep_full = 1; + } if (gc_sweep_always_full) { sweep_full = 1; } From ac2593a0f5eb4df525e7ca834bdd990b2e91a9dc Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 25 Oct 2023 00:52:01 -0500 Subject: [PATCH 38/45] inference: fix infinite recursion of nested Generators (#51845) It seems this case has already been fixed by other improvements, so we no longer need this hack, which is now causing problems. Fixes #51694 --- base/compiler/typelimits.jl | 13 ------------- base/compiler/utilities.jl | 2 -- test/compiler/inference.jl | 10 ++++++++++ 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/base/compiler/typelimits.jl b/base/compiler/typelimits.jl index 09372b2dc9613..436c24d85d8d0 100644 --- a/base/compiler/typelimits.jl +++ b/base/compiler/typelimits.jl @@ -277,22 +277,9 @@ function type_more_complex(@nospecialize(t), @nospecialize(c), sources::SimpleVe else tupledepth = 0 end - isgenerator = (t.name.name === :Generator && t.name.module === _topmod(t.name.module)) for i = 1:length(tP) tPi = tP[i] cPi = cP[i + ntail] - if isgenerator - let tPi = unwrap_unionall(tPi), - cPi = unwrap_unionall(cPi) - if isa(tPi, DataType) && isa(cPi, DataType) && - !isabstracttype(tPi) && !isabstracttype(cPi) && - sym_isless(cPi.name.name, tPi.name.name) - # allow collect on (anonymous) Generators to nest, provided that their functions are appropriately ordered - # TODO: is there a better way? - continue - end - end - end type_more_complex(tPi, cPi, sources, depth + 1, tupledepth, 0) && return true end return false diff --git a/base/compiler/utilities.jl b/base/compiler/utilities.jl index 7c3b19ead54cc..4ad66c2d8ed01 100644 --- a/base/compiler/utilities.jl +++ b/base/compiler/utilities.jl @@ -66,8 +66,6 @@ end is_meta_expr_head(head::Symbol) = head === :boundscheck || head === :meta || head === :loopinfo is_meta_expr(@nospecialize x) = isa(x, Expr) && is_meta_expr_head(x.head) -sym_isless(a::Symbol, b::Symbol) = ccall(:strcmp, Int32, (Ptr{UInt8}, Ptr{UInt8}), a, b) < 0 - function is_self_quoting(@nospecialize(x)) return isa(x,Number) || isa(x,AbstractString) || isa(x,Tuple) || isa(x,Type) || isa(x,Char) || x === nothing || isa(x,Function) diff --git a/test/compiler/inference.jl b/test/compiler/inference.jl index dc46bc2495c7f..cfd44967a5081 100644 --- a/test/compiler/inference.jl +++ b/test/compiler/inference.jl @@ -96,6 +96,16 @@ end @test !Core.Compiler.type_more_complex(Tuple{Vararg{Tuple{}}}, Tuple{Vararg{Tuple}}, Core.svec(), 0, 0, 0) @test Core.Compiler.type_more_complex(Tuple{Vararg{Tuple}}, Tuple{Vararg{Tuple{}}}, Core.svec(), 0, 0, 0) +# issue #51694 +@test Core.Compiler.type_more_complex( + Base.Generator{Base.Iterators.Flatten{Array{Bool, 1}}, typeof(identity)}, + Base.Generator{Array{Bool, 1}, typeof(identity)}, + Core.svec(), 0, 0, 0) +@test Core.Compiler.type_more_complex( + Base.Generator{Base.Iterators.Flatten{Base.Generator{Array{Bool, 1}, typeof(identity)}}, typeof(identity)}, + Base.Generator{Array{Bool, 1}, typeof(identity)}, + Core.svec(), 0, 0, 0) + let # 40336 t = Type{Type{Int}} c = Type{Int} From f3e683dac1db482504d34d93556bb696137577de Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Wed, 25 Oct 2023 13:57:16 +0200 Subject: [PATCH 39/45] LLVM: Activate typed pointers through the API instead of a global option. (#51840) This allows other users of LLVM to use opaque pointers with their contexts. Co-authored-by: Jameson Nash --- src/codegen.cpp | 11 +++-------- src/jitlayers.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 09fc465e93fca..384ee5caf9708 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -9196,17 +9196,12 @@ extern "C" void jl_init_llvm(void) if (clopt && clopt->getNumOccurrences() == 0) cl::ProvidePositionalOption(clopt, "4", 1); -#if JL_LLVM_VERSION >= 150000 + // we want the opaque-pointers to be opt-in, per LLVMContext, for this release + // so change the default value back to pre-14.x, without changing the NumOccurrences flag for it clopt = llvmopts.lookup("opaque-pointers"); if (clopt && clopt->getNumOccurrences() == 0) { -#ifdef JL_LLVM_OPAQUE_POINTERS - cl::ProvidePositionalOption(clopt, "true", 1); -#else - cl::ProvidePositionalOption(clopt, "false", 1); -#endif + clopt->addOccurrence(1, clopt->ArgStr, "false", true); } -#endif - jl_ExecutionEngine = new JuliaOJIT(); bool jl_using_gdb_jitevents = false; diff --git a/src/jitlayers.cpp b/src/jitlayers.cpp index b5604d77d8e51..1a385403e9672 100644 --- a/src/jitlayers.cpp +++ b/src/jitlayers.cpp @@ -1329,6 +1329,12 @@ JuliaOJIT::JuliaOJIT() ExternalJD(ES.createBareJITDylib("JuliaExternal")), ContextPool([](){ auto ctx = std::make_unique(); + if (!ctx->hasSetOpaquePointersValue()) +#ifndef JL_LLVM_OPAQUE_POINTERS + ctx->setOpaquePointers(false); +#else + ctx->setOpaquePointers(true); +#endif return orc::ThreadSafeContext(std::move(ctx)); }), #ifdef JL_USE_JITLINK From 1977e1fa8c52c5c5a0e47cf9e8294585770d05cb Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Wed, 25 Oct 2023 20:18:13 -0400 Subject: [PATCH 40/45] fixup to #51743, timetype subtraction Restores the method whose removal was probably causing problems. (cherry picked from commit 14d9c7c3765cefcadef8ed02348758702cc96cd8) --- stdlib/Dates/src/arithmetic.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/stdlib/Dates/src/arithmetic.jl b/stdlib/Dates/src/arithmetic.jl index 23a76f5ed75d6..b379747c5f9e9 100644 --- a/stdlib/Dates/src/arithmetic.jl +++ b/stdlib/Dates/src/arithmetic.jl @@ -6,8 +6,7 @@ # TimeType arithmetic (+)(x::TimeType) = x -(-)(x::Date, y::Date) = x.instant - y.instant -(-)(x::Time, y::Time) = x.instant - y.instant +(-)(x::T, y::T) where {T<:TimeType} = x.instant - y.instant (-)(x::DateTime, y::DateTime) = x.instant - y.instant (-)(x::AbstractDateTime, y::AbstractDateTime) = -(promote(x, y)...) From 1fe4e262b9c82f8f4f206f2b1d89ac25874b627a Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Fri, 27 Oct 2023 08:59:58 -0400 Subject: [PATCH 41/45] Backport LLVM 15.0.7-9 to 1.10 (#51882) Backport of #51863 --- deps/checksums/clang | 216 ++++++++-------- deps/checksums/lld | 216 ++++++++-------- deps/checksums/llvm | 436 ++++++++++++++++---------------- deps/clang.version | 2 +- deps/lld.version | 2 +- deps/llvm-tools.version | 4 +- deps/llvm.version | 8 +- stdlib/LLD_jll/Project.toml | 2 +- stdlib/libLLVM_jll/Project.toml | 2 +- 9 files changed, 444 insertions(+), 444 deletions(-) diff --git a/deps/checksums/clang b/deps/checksums/clang index 685d7403b5815..f0f458c6cce9a 100644 --- a/deps/checksums/clang +++ b/deps/checksums/clang @@ -1,108 +1,108 @@ -Clang.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/3994ef8cee2fe488709909f5fffdc091 -Clang.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/0713994930b87768dbddeaf5ce5143380e83bfdf3e0e10aa1ba0337fa0ccfc3c84fa05786cccc2b2461d0bf3bf7dee45e18b4f7146c62ae624705f4d3e43df1e -Clang.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/dd097ca34e16abfcee18ec6b955f0d3b -Clang.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/446f31dbca35a307faec0a779737129c7878ce8c879637265120114f4c68365a6593e1f692c76ff160f5b264a0bb0e9b9f157315ee138ddebdcda1e6e9d3c030 -Clang.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/96a5a51c74d4d74ce9a5f7701f7da325 -Clang.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/d27e8931b89aaea97bf10a7bb9d9608a14537e352bbfdb496f0ef9537599f47ce11e519f77912a6befe96189a26c423a8359b1543b39558ec9648a82196c9057 -Clang.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/2bf9499f0016a6d3f192e9b982587fdc -Clang.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/956cc2c49b49a0d56575c8192e8bc8a3378d484ffafb3fc78f2f8d4331f1070a6fa8111c6bcd63d579a0e54546a3d5134a3c760c609a962e2a586d7b0d48646c -Clang.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/28ea22de73f4c555edeeb4ff22ce6099 -Clang.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/88491ec5f0c51e3a6b4b2b6877e9e8437f8b3145a22f8dfb05269f9ddf72c1b8eca496b650ce2e9a26101ad48d2e79d01b4b4a48883fb547d4445b24ab79bfd5 -Clang.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/9058d021eb893fb11313a04359d1d2b0 -Clang.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/5fd93a2278b3d3c6f6a1836722b97ccd099f17a36da900b8bd54f0b399bc9ee42e847bc094058c3f3ce77dfc6950b5cef9b4571f5941857280a370af16c8b7b3 -Clang.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/8ac220c9570fa66c2f13d9247dcfb324 -Clang.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/977077fd338912c2fdbb88f4bcf1591b6b4f648d6e7c9ba2783b331eb67da2e6b9b29f85446500f6dfb15c9e05af8fe9128dbf3e77dfa69bd597999873769e8d -Clang.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/f017a86ee8803f2099b04ecf254e8157 -Clang.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/c773d0c07234b03c71a1c2862f373f76d4c898fdbad35342c2e687a2afadaa220daad759afa5f88aa7eaab3d0d05f1e8eefcfd374bc1c92ddf638d42d20b74fa -Clang.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/80af25bf64203daaccc72f2274b60681 -Clang.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/913f8ee4c7f9618227673db0aad7e5e98f0fccb8a1faa84778ec84ab10ee8fe4d59a8115582420459de67b8667f3f4681bde59dab6dfa70ddeb8ff8b7fd1add2 -Clang.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/5b79fba21be10d03476c52ad0888d562 -Clang.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/075e074a0f460be27fddd32069dcf4ee48aacbdf480ea74356692b3d98808868a18166ae5e689b17faa6b0ae1f1453bb63d98ed119afd3f44a8e662fa602a57e -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/90a9224695634cc70cc39b603cc8bc57 -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/c1e388b838723b5251e6bf068a1790f83ccfe618be2e138b397d0a40c4f85f717bf01e8a46bbab48a91f182caef8e3fc291ec71a56df95fa60446a8858ac904b -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/6f2ec0e8aaaeb7c9e0c1d826010886ba -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/eb33e93ff5f3e32051c08c0aa42f1cc691dc364683ac484bb292f190911c879226282cea758224c9fea1bfcb934e4abbf4edd07666d9a2dee63d0ba40c2b3b47 -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/2e8b81ef8017987c5ace824d524545cb -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/76d1cfba99747038542946680dad02d9deb4fb6dafde6def13e95c393da5d5f5f2aa30889377c6f3a869963075b9181b3d7652016202767768e880f2fdea827d -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/7556ca721d4e90e64a266c4b59fefc48 -Clang.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/8df1651aaa87364fe47da4fc993551a9f9ba575ca88c749b92d6586390e19c8b059c20081e4b76426b23cc1140d1bd38c216855d968f3dc01505e29dc5760367 -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/fd294a76698157d71a3a64f4f4e442e5 -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/71466cd9d0b46686af10e124bb026e02af240b5ad5f3844fa5c0bb152ee334a56d41e5c82c8b2e3778ea409f5dbc1074afe5a8121fcb157745420a2fcc3465f3 -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/a2ad561f1a41ed993fc2edebbe1a6b3b -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/51ed85190a1bdf89d0f5fe361381b0e0b773be05f510ac7b77747948f49dea49807d3d46cb3e948d22785884b8b92dcbf36d202087d2c2628fce6c73c6cd9789 -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/98829294d5c6327582a8f9b1d7232083 -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/d570b28e6a11d02467075e82931f8529671acd5e61992f462729d690810953535be31dcfe6fbdb3add0e00799809bf3afb529d227820c7f176e6193c24da7853 -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/bd173830434f85d17e4857b7ffdb2dd1 -Clang.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/ff66a8b1085d67521aa58f766b7bfad2c19ec89add9a67be2c5984a7a5ff5aacf60d54e0448ce70ca80d9a7d972624b9a2be530f767c87ed6839f709a482a7aa -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/34b020d23cd5b34ae47b2b0473822f14 -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/250d55dfb02be3cfc4eeca0da386590d9fb0b9d6759360732b72b8663f4a3c843cd9e23ea08b8d272945fa64230e57f9a5bcdc4399dda2db54e51961e7c9f3e6 -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/b3c76e91d6b43c7794b6ddb9d300d8f4 -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/efbbcf2cfff1918e58fd850d99eec1e28cdaa11730b722a416e5da233a8fd0be685259052d5e9adf32c2c2364a4f96540a0175a44b8dc8d6ec872ef12394b9f2 -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/81ae8ac294b1656b188dc437a7de6b10 -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/1eac2968698b759bba3467205843183ed7279f24ae06f2d47b1cd4965c115d0b9f578ff7e0a6006883a462ad97c1829f3d706767de77a05d159bafa183064f84 -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/581efd97263d337031ee761326320489 -Clang.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/ae28a7743146eba68831e0f1929f87596117ebf64d9284585c1909ed1b78a60e102618e4232b37017543351208e0d1183d81e0bbf737c7930bd35dd146c9a2bb -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/34342cc1e94435ddac6ffc7ec89471f9 -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/2e06c7a4b79a45d2139cadc3c10c4dbc086e6cf20b5f2ce90b50aad9bab6ffa4b55eef3dc9e40b495329a2a1eb9d0948b29a4495dc8a3cd56ce500087b9e63c6 -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/de880e4c673351c777509ccfdc0a2579 -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/e1becf694f1edbce097eaff7349c8a2ca8a1dda265c01a40549acf0dbcbbdf3c23d515236b114e6ec124f85e6bde380850ba72029de37cd36d59789936a21e83 -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/93a4565b236d905021ab84b0a6c9fd34 -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/d7c5b5e6fb627c2e19c72e42dcbcd8de9784dee522057d9fcdb03b0bba127de5517d72da8ca120c3cafabcfe6ac016526a7fbc090258119f5f6252d26d2c0c17 -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/31d9e5992d969548f67b9478abfb1575 -Clang.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/28ed4cdf1a289ece1defb2d4f19cb03ad07963f8e9df62073fbde3adaf943e78085a6f2d03b6cbd3f00f10f61a3499f964e104c2c1ee73167965b84be0bca901 -Clang.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/8b6ffb09acc5d80408362b2705629db4 -Clang.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/d69bd543be8848c9349014f216af7ff1cb32401cf1b0a060a3687259cb56518933f65ac8ce24eca74e2bfc79a1900bc638ed1428e7823672d088efee8aa70387 -Clang.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/6dc4752e4987fbf9afc49b0a5a0b62f4 -Clang.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/7617ac0ad1496549f6a38d33414cbbd74b72dbb54758f24ffc88a42226cfb607babba73b7e33d9558bff2d208bac3ee8f3b2594990d5e5fda49819eff3ad0d05 -Clang.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/47cccd1ef2565df7196afe4da7659380 -Clang.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/9d25f2d0634e2b4f5b8d9e4fb57c65c7d5956cadc24bbdb67a62095f2e6378aba3a8f16a0bc3aea6656c97aa035b3179645e352ff1a0b01cb89a773e9edc0b89 -Clang.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/4e3fdf880b91a5fdbdcdff34386ee8de -Clang.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/b02b3a7db9796d45d9d1bf1fc95495c71f6575a70ebf7f4d9d249bf117eb8bdbaa100b2d4e867f82da1b9f9d13ae0d7f68097d1b085b0b6f3826ed21723cc709 -Clang.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/859e942a9b7d0ee2fb626552e87586ad -Clang.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/23f4ecd6a2b4967d41a7a7ee18d3930b4c5e9dd4894a75c2f85e59be0c66bc0fccc7931e051258f36290affd64b6fa37b925ed53a68a0d0cb937a66a6ebfd263 -Clang.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/f1c4a569ea5705e9eb5c1807f4053c4a -Clang.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/73cbb461b39b25b9af334487cea4f16ede9d82ea615671a72d9cce28f9069c3f872f8caa85a3ca61d75919424cd03259a9ac7cbc6c245e1aee2f9afbeef37d7a -Clang.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/f1750649bc2102333fee60be64cfcebc -Clang.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/9c512417ebdc0662a1003978f454d28ec5ddb059270172878a0ca62cc1b85a4e7b7a873d8361f52d0e89372f625f9238404f4b850618ff808592107803e80632 -Clang.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/d88610eb9c37cd5e438087b41960658c -Clang.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/79b241c911a38d363e86761500fd2fba3a439feda270132ec364bcf02189c3a97cfafdf73ef41e00364f8bf5e2ead602cdf5c5a699126e8a372bd3696d7f4b1f -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/7b0878064a5f8ba1953f5e76c4b63c18 -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/542f057b2c3d6e829f34a615d7c9c021d793ce3723512b70f7e140640175b237a9669bd9f24563eede1dc5e25e37fa8910b1769ed344af9ea4d21bebc6638801 -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/e797f5d917b08bdae66fdcab4f8367b5 -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/40a379b2de5eafa8f202b258b8620bf82fb3eae384337120149ae17c7affa7e166a6b4fb77fb4ce94808c152efdf270ec22f03a2ca57aee27799ccc3c684b88c -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/1fb0bda6cad1591b1b40752efaa1f198 -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/0ff8a3d9fc53e5733b9ea9ea30a4c0023fc926704d2dc747a1802343e5c45f6cabed9fd3207cb146218bf8f71b4de79d708c3f169fa13e3eb35dde591509d84a -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/7e2922fc9c5e3f93b73af4b2f8502f7b -Clang.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/b7656c67cbe9d6cfcd0837a4646819d9dcad83ab0907a570f8e66894f2650cbaa43c78796435b16bf28878b39e1c9254772b5aaa996f6a5629159c7c63caf26b -Clang.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/795b7f564282b22c2ef2cece8162044c -Clang.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/035781d34cc8ddb7e41eb3d46651589ab519cc4fbe0ba0de8d3602b1353027ad4826b619a33de5c033b85f4261471f6f4bd1e62164c07f945a731bd579919e08 -Clang.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/4430f9cbe83a8d97a993dfe7a4b3b044 -Clang.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/19e4ae8d491734b15fac101cbdbaf652cc37d420f64dcf127bd0fac6eb381fa040312f9c3b836f80fd9d6cb67a1951598dacd9abd826a227e639a685e086637f -Clang.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/9ccb6fc99b35c72b6e566f3d2336c686 -Clang.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/af926692bcca26ea35450bb2794b94f6694ffbffbf54342f403dc47270e983ee697c06dbaefc143ecd0954100736586838987f51f8259e160b0ca06688514889 -Clang.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/ce36f48d88d7dad1aef44c11b30aebf8 -Clang.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/fbbf65977c5924830ff4c1c2c6d824a3635d09d4ee9304888030b8eca1bd7c06d8c053521068f663df932379cb3b7f0772589f7cca56156dd7053e6722d29953 -Clang.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/2b68c2057aeca1564106dab565fe876b -Clang.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/64c8be7c227fa52c9d90353d5ab72c179c8974b0bc048d6f5793d0ac08110b98c54e2e3f65416986b7049904cf86b5a865cf3de4423d7b0906b4e85a0dcacd21 -Clang.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/04a0a842bc490c440ec65927c285059f -Clang.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/82dc5eba9a795fe8d0e5c660aad1d902cde8c304ddfeb794d55a7b8decc97d27b648f658bb749b3bc25d2d50771febb0b481198459fc739c1d6944542c2b64f0 -Clang.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/1742d997df9bc95ddc7791e0f3ba49c8 -Clang.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/5187a9fddf31ea260d6d46f613d96c79b3c77bb8c7dd2752bc8d7becb7b7210a3d9ce195b2f03d466760bb4e52dee0beda22f238097e1472dbed04170b14e2c4 -Clang.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/79e68396face36fc162ab27b99714b34 -Clang.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/80f22d1bca302debb3e01213da099e5378eb3c1ff8684dbc8efca9145a27d1542a9a065e328c76148465dbb42268dad028004f38215289bbd862fc2cb12abf81 -Clang.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/e2f7246f9e8ebd73e21186f18985755d -Clang.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/6dcaa68abe3abff6f3e288aa34ce3591a8e92d933187715cb9bc7362947fefeba3ce1b3629efdcdcb1fa3be111f7614a10b4f0b73f3ed54f46d6d9791612305e -Clang.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/15a21dc979f82c71a2d743f76a539c5d -Clang.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/684b9d596c4e0c4567841cc913ba91671030765edea4642c1883d87c12ddc2a2e4ec82931b2024a66e37c48820aeedd1fc41982930396cf657596d8d3970bf09 -Clang.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/82d172f6be5b1ae34fb92f85f962b9d5 -Clang.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/62c39f038d7a616986314ec3da0ebc59cbed5a6cbac73becfae5a037e734922f4ab59e45a25c8c31242660fe4409023a1191c7311d0af1303d6170ec87d97413 -Clang.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/89c040d2773aa3f40fc1b0965d19b201 -Clang.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/adb704fc2545d766da18766b2e3b6353f9865dac7e46a54e5d83b6886ca5ba8a091a8ceed86fe12bbfc0b3dc12b990dcf1389ba8d27ffe1bf8291c9855ca69b0 -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/b4c8315bcdb815f012e8c31913a06367 -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/0bf975521b50c2049bc24b363ae1aa7273471ff20ffbb3d6084561c6c83fd7f08d5ce882ab976d6ec5cffac74cc5ca1c0bf888afdbd8c0c42abc3a6d61a73969 -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/bbb5fd33559714a6cdc89472a78279e3 -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/d5635f4b34a21a39c52a494c8baa138d15b9455b08ca7d0882cb8920b5d272ae3b6f3a5f5f1ab7cafb53fd4c93d2bf9b7f1028b09c40e4991ae2e2b04669bad2 -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/f0a7ba2ba8ba4ef2a75e4e2d9fe5e6ca -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/0148d0fa525f35a1b8835bfcb7f7ddfb498d118762f960b678d236d5c6b2b16b104d6a56ec2763617ada8faba68d3572d61b73d263fd7dbbbc1111359262828d -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/7c1a2ade54354864e5d7064e6192a111 -Clang.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/abc8121210650568f4c3e84902f2ffb43f2d660c0b0efeebdcf15d11a87d6a6d0409f4db74d58acf4dea58e3167729e34c82170f65ee1735f4db47c487f723e1 +Clang.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/f11d13e193ab5e18c88652012d0313fd +Clang.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/513a14b0a99695ef330c1109e53d2f9ebd44f9d189e2fac691f4dd3502dea0b1437dbad58fecfc99549d64c90237f5143a0d31b8d05dbd747eb9d2570ed85763 +Clang.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/97c7f0c55a0943ef658960aa6b8ad6fe +Clang.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/7a655675d0d3b3a18f031effbfcd60b171d880ebbe14c64d82f3017e537d56deb19e7a613dbfe619dbd4e8c9db1a2d4e14eefa984f11efd086332eed5d141d06 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/3ae704a7c7be76ce32bba7c29ef34bc7 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/93550af832e64603431a4e87ef90af227f9e376184a839e073ccb8880399b83bb748f4dc0525a69ddcf2bae0a31a010bd27884a9b8f9462f8439899080bd83f7 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/6bebcf58049da1baa3689f9b5b4c0508 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/68dce1abe90fd6df3facf19f0e430f27a3d27426c6d5673b82e671a252e08f3bed435bbf571e0c203cb95f2b5311dfb948f9a4da81eeec4f53b3c27dd692b049 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/ac81a4b721024af1f63a006047b23d61 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/48673b058ceb6c022f553c567ee303154cc587adfb6d5e2c60bf3594a47515cfee01bf6abda54a9f54e49b3bbc40bef372f2cd25e4eca4966834fdf5cc1ce150 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/51ec3b7ad77d6a525a433cd9044046f7 +Clang.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/b67f6c782734d5a1b3bac8b4f93d0bbe49cc2a1fde095c1d13517d19b1631a926f31291c92058d560b4cd69a6161891b1808ad8f6f6e30e8c103e7183d5f59d8 +Clang.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/bb3218601635220ded4b8285d991b88a +Clang.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/0c60978c8b09a9cfdb7042dbfa61b5147748e968c08508df535a26b8d6ce199837b2ca7aee483d940ddb60aa601a191247e31c89e89d9f1eb427e28358a8c0cb +Clang.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/53631f7d2506def52ff0bdc9b60e703c +Clang.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/5a0362e15e3ab1b39e88ebf1c5fd8c179e72d784516d6fdf0139180f3e59806ae07f0bf11f92d0313baf3340b77d872d8f6ce04f1d9f2fe1ba15cbf4b7ae3c61 +Clang.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/8a4061b3454b411f05c8c375b3af4f44 +Clang.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/2ee66b4a16821f0fc5f8a2aad92017f71767d5f12374425162c0ba9440ad40082780f21114f61e51ee35be4f0eccd8d61e28c964e2b724046c572945e9410740 +Clang.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/eb3d9c2224594d96c2b735ebb420f24a +Clang.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/1ea760423afcb28d306f1bcd67d25d1bdc88dee21445f397bfe5b2fdddd84c8343fc4e5fbedb006640546b28643946aff766d7660e75e2d25c3fde51f64e35d7 +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/ee4b539db8439cf3eb480f4f86b67588 +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/fe73b6d62a39e8724bf3cc7ddad385958ef1fc80bce8a6c7a4f57c4bb383736b2ed4a59da228683101bf2f16d4673d9012a30973c22b4b9dbad4be75872a4a95 +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/27e36fa4a5173cdb6179c27299e80128 +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/9b078f25921f2208fb2cf7ffadeb7f451be772527a6a9a268f44c20a17b8369b9e0b7f55b48ca38ccfa77f9f2a4209a6168001300ebf63ae09a50bc19e1a5403 +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/76086701d89bd10682c0f937571af5be +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/0d637913b61dcab5aa32e7d2b1315e1d597114f9c5a9dd8f9c50bf26ca8260cd76a9cf4e4992bf7a502ce6ae682222a41f6d44e5a5676f329837d4ec5151dddd +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/9151fa6e2a3d3cf51f1ccc0023ea7e23 +Clang.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/56ebc1653607e623d4a1ecba4a66865b069b548a5d3ff3410e712da6e20e9ae222d5ed6fafe50c924fdd927a6052cc02287aeb5a49fd6a404d7ead243f04d230 +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/cc22ad5247ded68dd2b22f49d9a9da0b +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/9f42403c94ec2978f252a38215b0feeb9e2e1131a777bab52bfdec1fbd0399e12008e4012254a53c92b31e7db4d9dcaccd47be40f37d5e23596648ba89e77f9f +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/ac2fbc3060d46a0ff2b1536db0d87461 +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/a5db6ffeabaeaf20cb8b9b61530094fcca442de249265f9bd5d62067aab663fc42ed65ee87fea91e427648340e3a8a739a6b38363ced69aa2c6f50bc2a14dee9 +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/916988129901ce50be35b29ca2969ba4 +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/e37769b80134a14ffca04f85e4a82b36c61395f1459a0122fd07505561aefe0fa8e681d428bfd58fe4c40bb8d4c201e8fc7a1029de2527eb78728ab8d0513981 +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/d57074a9cd8d0a99db44026a75bbed52 +Clang.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/2bd80d0d5ee6d3fa14d1c5e1c5838f5fef13f0d31012ed0ecaefce66f35d2918faad2444eeedddc64a699b1843b705d002f95ef7f8d82a2dbbe55fe1ff545591 +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/2aeda3d3dbb3c4d294d3cdfad028aca5 +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/597ac2c8fa1e00f157af7555f82f7f011a74f6e24ec6dbfca31f5e104b67d6fc157f59b03689afe16cc35f3b8840a22867766d17b92750891e5fcdd0b6027ffd +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/8318580861648c955f488eed4c2beb87 +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/6b4f85bfa1bc804666c8e25f15c49dd67c665a261e6a5e79b1d72f079a9cb02ce4c929855e342aa0c0a08fb7ff8891eb93468dc4dad598367eac0314823d398f +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/d8c1f0aaa04b0a7b8795477a67fad0c0 +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/5ca6f1ab1e17a4e4712397be9dd040641ee8583c21670a2c26881bd917b1d54420d193efe039ea1aa929b7647b0672838c9309d011c733aa5d060598a985a84b +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/6dccafa2ab530b162b42948e4e089fc3 +Clang.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/c4a9e1703a1b4c4f7753d16d1dd9cb6159c7199a9217ff01ae2e5b29bf1cbc4eb7e3c9549afe84c23cb767bf095d2f19635dd6451bbf16e7716561b317f6adbc +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/cf3a71a9368cafd9c90d0949069715ef +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/b3a6fd1bc2ce52a96915e8095a0ccaf9c9234446336249cf796fe2853f5a95808de7bdec126032135ef4ed202dd83058a055fae95dc06a7c4aef575715d17177 +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/f15f065e1e759d94576373023cfda5e7 +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/94903b6220ceb155f1407e822e0449584f9a39ed899c753146736884cebf054b3ce0fc3da657ece6e9573b2699829ebce8b5737c329e67e78fc12fda7a6bbbed +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/7047338e3cdff0e9bd52d04160ef0ac2 +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/fa48444ab31826eb06a9eca8c209d7beef952b11e1448bfc2e4dd1906ac5a12fa84fd0f048069cbdecf0ddebf6fe12bfc44d2dd6c117d3d17befb17d05ef0efb +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/3497b263dc6af14911baf3457f0e002d +Clang.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/44853f230ed408744fb79911f7fa94843a6dc034dd52ecae86710325f9c6ce635771bd3e54b573f021d30542cf1a72cc92a338454633990c25ef51eb741cd63a +Clang.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/9ecbe0287e26e692377b249e7b56943e +Clang.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/ac1ad5ea8e31d68231fa83d54bb8bc63d14b906682590e209fb50dbb6bb41349c1683fa08f4cdcd381f0c05eb7b80443af26e3557110fceb075f392f6cba3acf +Clang.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/83a7ace018fd7c1ff108b74f71064e00 +Clang.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/8ccb3e34e6d5e92b30024877db4df2d697420a3318eda2413442d10b7e8541a25ffe1b8b4133d37882ed6ddbd0ef7aff984315946538946484150f5b8d7307c1 +Clang.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/2ebc196f9c8d210d7e99f9674cf92c38 +Clang.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/d6a236854893629a5e318dd3b4cfc99ae75849fa3677c466d06355a3e6ba002db07fc0cee74ab2abf17a56cb58b37bb58e65d9c1f760d1d900dab35372afadc3 +Clang.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/48f329f4721bb4a5c805291449f397b6 +Clang.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/5e781a7e1ca0a8fdf8065d1ca9b5ecc6f2b85cb3ce6544d7aace5d86c7dccfb25ad46caf39b9231def435c0a61f7466638c3de5878bb20830fbf77e25d39347a +Clang.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/b44457db229714204cdc46862511a8f9 +Clang.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/fab8fa3518106d833aa03e83b17db2e19d57894d5061459376a13de9c825ca3d500d0ea5dede65455f0cd35e00e8e92ed2da9c7c6f085cc0d6b0efd9b755c9b1 +Clang.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/16821bd1660dddb0b807023a00106fc0 +Clang.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/30a3ff94e6a41a719d3b8cec64d9445f69f5ec697b2496dd0f637ae6ed3d6398df34bed47676d1ca8d96a9d83bb59c803246c64d65cbcc19f1c4536c4a83a010 +Clang.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/1d1640575d3ae6ec8c8119c01d48e4d0 +Clang.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/0094a40618ccaa6a1abb5f90f8ded22b9b13f3e1fdb49d71e5cd32666a96ccc02fe2555101b747eb2599178428841d97f273e9f275a2f7ec1666337788a50898 +Clang.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/c2e562ab1853b204ae278286bd08a174 +Clang.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/d668546ab19a6f101aa5fdf3ac81010663b3d1b05870ab413e6ca227901b4653c4ad7f198ed1f97ab33b7c679d4589451f7ba2acc0d17033f9402ab48c8179b9 +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/259877c60e0bd46d38fa6f442e3adc2a +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/697fbb22251008dc0af7b85cd4aaf7213e7ab1c1c546df0d5df1a5e9bd7ee7d3acf7008059ffe6ad904719c520aaa7e11464b4bf639f5c15a752ba1ebeadc45e +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/7a3e2d4a5e1e81ff723629f0f4213623 +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/6d5cb30265751e4486ac0ff8f46bcc305cc52129130ef2f2d79fb000ec375a402de80302ba42ce381342e52e31e3827dd3958bc4cb125e28b1890b0b6ff16f45 +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/fc86537fbf358dbb05142e34a60a6677 +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/14915a943536fde5a27e26d3b1d067739cd456f274f16772fa3e5dd114813a73b556663e406ce5370b3ca7ece201dae74db5c9c76e26488611b2e551e26a71c4 +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/5efc569392f8892668f4b7c6b23f4234 +Clang.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/01a7a29a9587ea9b0bf78cfec86a4f458466dd9fa3237a9caf55c96ab58fde10c60d5d8148b00cdff7cb74d43b93a806d704ca064aeb631d4cff3f2a5b63e547 +Clang.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/9b9db8d4a19045a4f9f9f6d443564bfa +Clang.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/d32d1f731752e1f39fd5cd5c671d439249092ca2a7002c1d29ad152a273a56df03c197489dc7c52a3a2b94b7368934f93f3602cfe5a50eb949a8cfa902f4edfe +Clang.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/e05b07aca51f3f463b2d77cce7fc3e50 +Clang.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/c17c396462785ebac988c52679517edddf15ccaa46357c4b8e21c939c4a23aa82503f5fada360d003e087b03b0978141780af8504dc7d87c61e0f41ea0a5cc43 +Clang.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/b28a8a689f053b5bc2427f9f2843a82f +Clang.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/e7acc5e7eaff6fe784ed94240f4b9a7e3cd550b9c8cfd5bac7c9e8b6697a78ef876c52a2e593caa09938b629734361c30317ec748366fe26800c7b0419e86cc5 +Clang.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/12551be7929fb3bd8cbe3bc6346d17e5 +Clang.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/0c3650ddf008768300b4da3119667207c78bdef2dcb185d0986cf5c0eac87d59a772261de97f8afe2e872178f98bb0483f81e577d7398dbbef8d1cc01c97bf87 +Clang.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/38ae5bb94d4bfd9ae0cdd4adc7c46241 +Clang.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/035735f1724f93dd96fa60c0fb64453f309e3628da2a7373a76418a22c74d5770e99ac52d460559420454bd4d4e95d0291bd35308c542f3b4004efd61a528646 +Clang.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/5e2744c263f84a40e78526ab456b625a +Clang.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/d3eebce8107972f693b2aac8d27ca724e8c0de382c3bf9ab2063590ef694c3177d2c7e9cc73bb359fe480413c817ce24df4994cb2f7cd14c325baa8e329ce84a +Clang.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/5b35d50b46f46f84937207cbbe53f361 +Clang.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/7b1ff511a59e93aba410c2fae82c12a732efa8c6978e48a2d0ba480e3f5bed305c30b25a169555e4f23d2fc4c257e2a04150bb17b19c28469825e549c7a0ffcc +Clang.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/89d5bc6e2ed559b89b1e69a062b2b0bf +Clang.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/658da15ad6615e406e2f4117d6c447ca819383a2add6c236c8e57f150742ab4512c2f198b92c3d51f4236745aa40b8bf63d0b78f6ed0f3c748771717bc8eceba +Clang.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/4a18a0ea6afd7708adb6023e92f81549 +Clang.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/2bc99affd9098c10ea35a90245006f25c10249616cea5395974502e5c82a5c48569e064c5c2436ed01348675b2b590b50fc6d493407ddf63a953309c225705b9 +Clang.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/f257257f8c4b05983e802bb32701ab3e +Clang.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/3090e623585702693ea93b17564f5393f54a839f3e655aaea3461dc8cf6ba71a5191cc87a7043da4bde1c1bd5a7caeadc36b99c64e524e60c85aa95557a9b07e +Clang.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/8550b772d168d5b8ef760c58bdf6897a +Clang.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/bc35342a4587dff85acfd059415790b2a05bdfcf4e5657aabfce48fed34fc1ced89eb5924f4a03159736da2538954e049f2293ed307912d50e47aab3118b7fc7 +Clang.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/8c2124c8edc3e8e0d48b4cc55247b6b7 +Clang.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/a9282c87c8bb658f3f52ee2fa8c8636dded015b456d42a8edfec9f395185180b783b9dbe75d6bad4dc977571dcafcdeff162d5bb100f447c883b135246d8324e +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/a4cbc590373f57422eef9f29d4174b87 +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/3286759915cc733f7aa3784e9cfa0e88c69a2fc6c3bf1bd34f401f7ada9db63c51f51e138c0086a4eeaafa8fa36bc90e11a56f57857daa4772e9c4d45ad5fc9a +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/ebd1348b93fa59b64750230ae6c84977 +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/10f742b2db05da287ab7eea5d2c75f4c6dfd7798f2f5b13a6ec1da166aedf5d591a40bcc2df3383072eaf12584901e56f177d8fbfcbbc5b3b0db06e2d829c4cd +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/739f8ba3cdc2afb4e03b9f03d4872cd5 +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/25df8931176dd77881494d94ecd52c4fccabf72e8d34d646016fc3cd3eb151a59cf994a796fd1f7bb776f62ca51cd03640c1c1817c857c117445e2c1ba3c8c41 +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/62714b3305623018e2c8c774509a8514 +Clang.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/cc95aed610963b63aaa7267c0d77fd57e29e19730d369135a27a9b3956837f34197b69af8239d38498cd004e9723ad78d279ed159aeef655dfb173f426420375 diff --git a/deps/checksums/lld b/deps/checksums/lld index 590e2f3cf878e..6936b85224dc4 100644 --- a/deps/checksums/lld +++ b/deps/checksums/lld @@ -1,108 +1,108 @@ -LLD.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/0edc0983135da9e37b18fa3fe6d56237 -LLD.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/2adbb4eb76e72be28951c96140070b6d16c5144f689631d51b56365549a5d38535c1dbb5e351a6bdac4648ba52da02297591874193b1c16e7078060c99d23f04 -LLD.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/59b06fca083f1a5e9bf9517ae4f6a4d6 -LLD.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/7f1dc641df9288dfcd887239b86e7fe2871220b9d7f877b24b3197ab73d2176c4533decbea427b09e8f70ddc6c7570d31f5682eaed7215193e95f323769276a8 -LLD.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/c97e607a661b9ff571eba4238ec649dd -LLD.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/7c7add8a0fac379b580a19a02966adca4932bd4573ba0111262544c0d935fc121c5aadaeadc97f9564331202b08c7366ceb170bb2b318db3425c157772d283ea -LLD.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/d55ebbd25b97a4e4628fad1e04782056 -LLD.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/681729b4d10d8f66b0cdb89ca4500ee8a417561cc886608d06af0809d946bdf7cf5c6bda2b6d5d577bae3a15dc347568a3d7d7428568f86ca61327041026fbd2 -LLD.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/78b06e5a351e6eab372ae29d393ffdcf -LLD.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/37a8b5fa3491ec8ae74da88e81a0c229d38166acbb46ff3f5a819034c40fa59ca2ebf4c0ed58e615baf7bf7da789ba86114738252501cfbd842be95cc2104dd4 -LLD.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/7ba5b76c83d746a3c62354bf753db697 -LLD.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/1fa403c8923487e2d6a8e8c1d86c2ea955ed32bcde2328cb1167a315cdcf704af896505e9c44b750ffca9e3ae66e805f60831136eb79fe1c6d58eaf81a78b1a4 -LLD.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/f052208026a0fd5120ea838843b244ac -LLD.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/fd9ff2d5836300bcf76e4aeefb1e57860b3203fab0c32e668dce3e636dc362876d0fba1f2c23bf55a342ac17294c73e839a8eaf065d64d4397582dc212b8b9f4 -LLD.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/4d1077835df0f592a168c140ffe6299e -LLD.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/8dfd44113b817f607bc38ac1b4ffb192be340c826b9bc8f9d41e92e0f0333d8fc4227f93aaed16a4b9e94a5ec8b79628f2d3a73fb644684a595921f36ccfbeb8 -LLD.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/0f31939f4ff00c572eb392b6e70aab38 -LLD.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/581441087ad4869cfdba13808b2d6adaf929ea1b38ce96c357f276d77c3e63439f8edbb822c8f41770cb61fc08837d7eed2466d187683bc44f2cb3c553e2e60e -LLD.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/ca767173044b5a19a86c6a890dda3b05 -LLD.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/0577785079039b534fd736ea7a51d9b5176693d81e0bcda4fccd760d7c1218042999b6a38b973a903c0ef68e57dfb3b86e9e2f9e307dbaf603997a853f34eed3 -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/89bb950f17a5b792a6e60ef98450a6b4 -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/54bb68159743cd14ac0fce7f218a66ff6bf29e626df8dbdbd6e8581699d9b1d357a3c10d86c6822bde7299c14728bc55480f91cefd041d1de61cc179ed347b9a -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/735e4dda5f8cc06934f6bda59eab21d6 -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/a9b91beed959804b9e121fee786f28808a7670fc5d2728688cca1c7e0fe56e82e47d95712e38fdfc42e02030896843c4b3df9928eb34c2aca9ac02262427c76c -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/30a95179bef252aaca41984daa54c680 -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/0302db3c04396a30d1f6ab8d8d585bbe3a9e70342f068747ddb875b024c173bb9bb34518da7e76a10d3a325dfd741118f36f67fb83251bdb8a9901c4799ad79f -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/4386c746c5d9b1408dbe7df04bc6a08d -LLD.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/d71c6ebf5d3eb42368ab336cf8520afcd05470308ea117fe95797171e5c573948412ce777f62cbd45ee99ffa59cc769c276a60393a22fecffbeaf8b77b50ea35 -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/49287977de61b100979355e458c8970c -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/85ed3b2c7d2478a307a393a2003e694fc3097cc6812143abb3cbdd73a7d36bcb6f06a7d341ea639b9849f714c2d8f418a8b96035ed1c19a3957b42d005c0427a -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/80a97341c9537b8a58c7df23f86d5cf4 -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/5774b246ae820de4230a1f4f65bd683145dad5cbc4d326fd75649e06e773c74c2cffd48108a79ee0cc93175786450b6d50f7ac532e6f68961c18fe6119ef94f5 -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/6f84d6858aecdfd95726a37c9b6a0e0f -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/2cdac9a810c777ec6d85093926292c75e4287f83b7224246f6fa248e3874a2078c46377cd5ccb0f36a5e25b139691f1111d705079e89ea4215c9bc8659414094 -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/d40f0956cc36aa7846630755a672a91c -LLD.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/01368311a0ecfbe3f23514115f0bce7ce816c878815d937f3fa067b9daab07da0c02f520a96ad793212e5056bfb6294dd0129dae75f274dfeb48191e504c5322 -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/689120b8091b9da8cc9528c96f5c5df2 -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/ab78810af7d77116a4973b5825d5090133218cf08d5d77be14f83e028821e83493a112adf71094cc208f74cf4deabda63d7fff98866cc0304793aec9b27b7222 -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/5627ccf1677c48b7ef8ac9e5faac1d20 -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/454d2636cd72974c79c2d907e56e3c69c30c3fff78b199591c9ebe4f14d04c40c4bd7331f8dc2c957c37e214da8d28ef3a47ed8d3dd4ca9d480d52bab3429b39 -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/8f50e5f684c41845308c123f8e45a0d5 -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/21baf8a00fa65473ff6cf7ef2974ef88cd5b0eadd06ff85598de10d09425074297bcff3472ef001047a5440065a2de2fc6b1eefe3a32c7c1b3e3261165dc063c -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/c2e0a5f58e38a9acf2c3914177ceb827 -LLD.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/2a1653d171a2ff08bde55c53973e62955fe9d9629388ae014a645d3199d8f4bcf0fb923d06812ccd62e224032b261c8ebed56ebebed750acbc87671203d7aee5 -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/fa3959aa413a2b707d8831edd2bd7867 -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/8b74fef916a72c2f4933c21d3344410c7e03e64265a44dd62cf2ef2ac0feeafeb2b443eafa5dad3d3d0028be96b9424ff67b16391f1b3a2185826de68921adab -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/b0751bf7eba4f7f7a28dc22993eac9cc -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/7510f7349b06365e9cd260229e7b8c84da26bac072c5fe9a4e59484d82a0753d4ecf1066ffe41343f881a682590dc9ee4ef4a49cd83dba45c21b8d76dfb80f67 -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/5abfe9e960bab4c8a44f41aaccaf936b -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/efda0e0a35e2774af2f2df53f89d61f146a5730086d40865d448b009c833934b23ea4b296c3dc3f2039527b72ef40493fdee6f7c630484f64cec2d1aebf4a4c1 -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/bfe87378e965050b1b20e993c8b13a53 -LLD.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/ef2fd5e81f349673417bffd68c4122a87c09caed3f6f8f0235bc70b75deca7363cad68276aa708fb9ad8f7edd249d49f78d9f5fe7b226b62e8604c7bd3d4b9cc -LLD.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/4ee16f57d7dc060007250e17ffd55817 -LLD.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/27fd3a21bac676feb2c2c2363c027cf12988c70d889174e52c6bc1fcb4a93241f4bae85d5750ceba5fa971611700a9d15e3e02803cc14382cf6a1ab2918b719c -LLD.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/06699da5617371442b0539203152405d -LLD.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/83ba6300d5669b52c1913440598a2577106ea73e0b83549a5b3b0f081a94b6b8ca9fc05687d2be4b60c2d6a524bafd43b839082f0eee58b4685758061b229fde -LLD.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/a051688aa3a6383b4be4faa4f4aee985 -LLD.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/2059c6ac6579c4720e7167cd547b679a9c1a27a2c68174ed543be935ee23122234b3f2a4555de0abab3a982aba73d1751db336f3e28005ce8e4659d61f9269aa -LLD.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/600baa66310cf348ef3b4351ada014f4 -LLD.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/52b4718993d8abdca8ab701e86022367655d7927dabb8f3a8e41e43dbc90a9af78caf8abd37907a79b0f05017b6f0ef72314a187dab5bdac8ef7996e74c96e2d -LLD.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/e1e12162e5c63141dd95fca83cf1be64 -LLD.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/ce21d1cfa4af89fee1cb13587e15d355f179d38a4a9b4ffb9f357d46fe9b7fed4a5cad801ddf75d66b71d77170427609a51144450f83c8dd59af5c02fb0a9017 -LLD.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/932639f712fb881f621e5bb369921132 -LLD.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/86426de75c4fd1e1d56e1bee08bb6447be0c7417f8492639158f436caa5794862dd3b2981f26f1828852f35806dd2177fbdaacbee67ea849e8de597948b276b9 -LLD.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/2ff9f42465eb6e845ed6b7567b9d14d8 -LLD.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/a19b985b28a642b9a40ef25d02d4e94608b7e5c9925db5202e9d34ca8258e0b02d758de5bbeed63f958602f7fb59b70c4f32434a59008af3f0dd1b757a20e2bf -LLD.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/6de812afa415af04eb9d806adbd4b2ed -LLD.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/c6799fb148f8b019d0b05fa707d58ac7f449347290fc3f47458cb84e0bef704fd179e6d29d2efdeb0c35e4ee799284f5850b1ec5c04ccfad45b38e058e449554 -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/331d844c447f564171345009764321a1 -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/978349a74fc5498408a5318c87ec6d25c01268b9d21fb85e6bb601243ad0d33be8501b181d1f9ab7663433a740912f5bcb7160caf1011b1a2c84fdd51e0fce78 -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/8595a49c49e851973fffae7c4062911d -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/f707e514843a206b53f380c7bd8d4d8203cc62219344c1234416462dc1cb3d3f8a7452ddfd0f07178d43dfb193b4402a018cc465dc76b43b687fd20fa1ea5222 -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/5b4463e81c156dabe3d182c42eb647e1 -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/995db577d4a78d62cfcfca3f1fafb333ff26548b41d8aa8d763e4705dcdfe8005e2f68873faba4040599a6d15821a523261d0451d75fdf6e1c5224e8e777a71e -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/d2f9f08cc952c0639f7ef1073c8630d6 -LLD.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/b1cab7b813fe0f7c26c55261e8561295cbdf1e812db3844b87605fb527d09855f2bef4a40ddb0a7cd354c7cbb626293d4d4012f33acc242f9af4abe1dbbbeeb7 -LLD.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/e82e3b67a073cfa6b019bf5604eabf2a -LLD.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/9bb18adf78afa9dfa0054e6511f5750a9e2fa9138aeb1bd83f7a51d37d031e2f3c151463ea8f682dc7130cb98fafae0b84c60d3befe27f9d0d3dc3334ef82420 -LLD.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/56da3cbe81ddff089ccf6b6392a9396c -LLD.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/2af483a1761022dcad414fa7cec7fb5c6fd54be28185e49539f4824cb0b6acdc1cfa5c78de31268dbdc444201936c5a6d2e04f39ef6f0b9fb184985ba4e3daa2 -LLD.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/15cbf5eaf89c7b834ee19629387515a5 -LLD.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/75ce7c398bdfd57af2c09dfc946b024d5a72e90575ed92f28e015e620ca89e421dfc9a391f4a78277c3e06c38dd696d572c5601a2b1866e521dbc2fc5a60da56 -LLD.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/b895da29b6082cdff6f0324179352fdf -LLD.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/e89a97dfd6c345158e3e12cdf97d33c22f849e5438401cf5a3670c0d1cf0252ca03e4c52475a42c3e6c2b2d689c2f53fc5cb7c925a23167ac51fa1a5e01e3d7f -LLD.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/7edda2d8c2eaadec2d262ded2456934a -LLD.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/0b1d60840d638c0b0269b901a3f5198e18e244da338aef2fb49b474b3601d44a2b4dec13e258909985e363ef8a8749838b01dd195e05a266ca36e6d9f274ef17 -LLD.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/e26138e3491a053ea9a998dd00ad728b -LLD.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/1215861fa52b1ee21196bbce0e99912b25f887f5734e0c2628ac78c1af5fdf57c4d7cf099cddcd7031a26c60cf141aeea66a0147428008cb485c207e90801835 -LLD.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/a1e786ac775517b8b483bbe3f6571d37 -LLD.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/3937f156fc2fb8eecb13444c71f380753c16b08f29124228808c91ea4258ee2195219c4a9b601d4468cc24bd584403c16175518a620bd94a7dadff868b3771d7 -LLD.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/976d840de14ef6ee2c0a538197fe8f10 -LLD.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/7f58f975dc3d69f502537aca79509bbc3c4f5da2ff8ddb1c7e27180a6bb2123713eb42da61cfabd7a48a31fc464fd74554b34935dfdb3ec095d14ff443f514f3 -LLD.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/ab0295ba327cfa6b9a252b0e7a4b50a5 -LLD.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/7c750916d4157ba0a37cd1277a0f8faf32123dfc626ea76f848a7c567fd889a7801f8402a307c190ab34fc21b156f2a23967abc9972fc103e5847a200ffc7305 -LLD.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/6827f38ed653f33953ff7ae510a517d5 -LLD.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/f01c655f6433ec6808b62872b8fb4c5a2d8e187643c11f0b4f5c06e2302e462353b516f431c1e26ee60b579c0f8c8c6385f018db3011c619745a39f9ef263436 -LLD.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/d444e6188476c8b7bb6026aac6ea0a1f -LLD.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/69510929896bcfdc4377b180ed206617f96e1fa13fe9f8ccb18d78958c3f9f951a2ff8ada9d1217a02407819caed5308d91bf8fd72434ba347f548c9ba000a5e -LLD.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/728e79f334e5151fe5595711763baca7 -LLD.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/2501a5cae4e61302e44f06fb7d38d15a776d750c6e99c30f89e1464e836a29c735d40972d48d19f1b38aac3f487cfb532d71ce9db2df8bfddd03d1fea5f3750a -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/2b64bfd4bb5f6be4783144c53eaba27f -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/237d512962f0a3f8b98352a645141e788c1722adc761d63a4f0754dc79871912a2302a66bfdfbe80683ff3c6783dee0b4cf31beb50c5f76b6d97c978197b5a3d -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/c23d2716a9ab651f64908da8fdaf7780 -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/78d6b3ebd845910dba5f147132378931f7e844a31dbc09a64222eca2c2f610b4e0134d9be184b9c80aef3aa2f4ac4d83de6bca7d1ec08fc775b066b67bc2a0f3 -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/adb8cf2411501b6faaec1a9a4204bd7e -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/af9f3cd4f585b2c82dce53429b08d270c2be5114098bff8363a1777f82bfb15c40f59d4fdccb8ac06327d8114669a3beaa16ba8653027a911e654a9425c8963c -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/1839c9ccde51b3d0830a365ede764dd6 -LLD.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/63b34855470c6838412e158334cbaad9214db8f4b7bdfcd6508c19fb891249adc7e89b0fc50ab52bcec17fb2603a68570a839700fd5ad9d1dd9b1b929bf08f12 +LLD.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/2515c9282eb379601ab7087dba9c121d +LLD.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/0d0a6bee7fa181fe84bdcf75342397416bce00a3f6d40f0df34e9a0c4814a3e15aefb4a8fb1f8f63b2b4f2e8f41691398fc545d67c3783577840379a07d6002b +LLD.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/988278a56d1709f9a52d4e59fc7b1dd6 +LLD.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/96f5c8ccdefa8dff272236af684b430c60bded64ddb9d2d814e9420992fd8c25e6938f155be8c47bccf3717ceff8213ba7b33642dc2c15866e70163bc13af1a2 +LLD.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/4760ca32d06be9bed2f18d8ce397bc84 +LLD.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/e4178ed3826c513be62ab51f10e9660afc5bdd7802f8d2a8130de4a8c948640525f85ad946758626946d63f55325004feefce2af08b6aa90aa0a908c24d47b9c +LLD.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/7b88bdfb8fa1f3160b60b02fa0b7fee4 +LLD.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/05a5815ea20948a41ee506911a6d0c7e03d0a169b8c714720de466b48483bfd887960c454946878ac8040f64fcbd36f30657419b8b7051f7c67b2f9e5067b8f1 +LLD.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/4ef7e0fef18afef96790a1d8d85c8ece +LLD.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/68813d3f7c10d64696435abd8d978257b5edd51b0aa8f8325a4add5dc4abcd9e14452bd208c1bc8396336d2fd7d7037b1b8b4f56cd995cb65406949afa0fb4b9 +LLD.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/128fd145cf30d49d24293866923d25cc +LLD.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/faaea140bd122019e4914d5a6fca1af30a5dfbc5015c4650ac9734d489fe51db46428b3f58983c381b7d56802a1487ebe66d3b8536ebfa3d7b9a527eb7e5357d +LLD.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/d78d58fc905b18232cbcce6521740756 +LLD.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/65190392bd91801269d7f65437da95ca98665264c9815223ee32bf6dd95d3abbf3c2404184d7b3d04ff37907dc901dc827cc92e63b58d119d42b08736728ed11 +LLD.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/0853474ca6d0150937b882578d488abf +LLD.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/38a4898aff7d41553c2dabb4e81a0e8ba373ef4b7a6536281772aba4a1ae6f7df7b3ef80bc7e65c8e3c4f609462ea8ff96eac21822d7d17e043e020332ab325b +LLD.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/81809aff70e22c183da2d369bdccc667 +LLD.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/eb291e31221a227c370d60c6ff7ab609ad4766a0b0e107bfac049d798873398d78206ef69fb5a1cccd14f8827cbbe15e12fca1882d14adbb2ecfe6f096411b21 +LLD.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/c9865ba23de7443bb0a135898eac573d +LLD.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/1af80988614295b11b4263d1e27d182c6646137fb76b295524fa82ff5012a3333df8a07992c155ed2eb285d0b7c402560348ff7716dd31978edad5ead95a295b +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/d02a04c53ffc1426243b848dfa9c00fd +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/0a1b933af79f045a8538b4a694c02014ac8c3017ed76b5e675c77fcb3b01371cbecf0260fe92e1f141388bff8be6ef271b6e889837051e66c08f14198df87022 +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/911765f28d1e96d8540ad52a8a6a0ca8 +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/55705692f7be598160fae7b8663d8f4394e40a016b0caf99132c1799081dc8f6f296abcc23505966a8a1247a468dc95e27fb072448ed7eb90a8ef022410a9898 +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/7dbbcbcfceabb11f227f5f8a3fcbc15b +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/08912bd251628d429986b4e032d9ac0e6e3608318e8c3c3207ce241ffcfadfb7ab1d6b17065ee88965730ab3090e26014231ed3ae7681c5512a0cab8c1455bf2 +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/01b0d73f4cff765c20fe3dea05b0b925 +LLD.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/10e30133f5b68e7d425c9407d80c6b2704ebf2e4df7cf0594f0f6fad3d4dfac47dc7268503bd97e1fb679971b622116c95f4d66d502c4ffd5a0be995e014ae65 +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/a162866a5d4830debf30e1a7e594cb37 +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/28fd908126506cfdec748947a34de59943215ed922299ceb2cbdbcfcd75559fd3e8c0f8eb656fab05dde0a94aa73475643e71db0140c18e885d60b0474fa50fb +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/a937f25494a6221ba62caf1863067bf4 +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/74bbc42376571135ea3f37bbb9ccb54c3c7cf4d5181a7e5ce958e2eb85071859510247b8c2d1ccf1435b5e93820c66c5fc0751457b318530fba388e69ca7e40e +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/46cbfd0c17be90082e03e9b365b6528e +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/5d2d9d6fbc4439c6aa6e5af196c900efd66c65e91c06d2f88ec7a58d0a4a23d6659b9ba655f6c17450ff09cac73d6816012bc1b56907238ba6e4b8fef18cc553 +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/dba008662626e1ffff3be471a6f336c4 +LLD.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/03ef05fa73d8d867f619e7268266ba8afdbe1b91cdd1afba04f48889bd69152bbb73ebf7cb4b465472d5851ff764ba50c033ea7da1430f32647fd3c32504f033 +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/fe5707850e6572458579a652b62ef375 +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/9575326ae0110aa0f6d6e6611628b40b49db19c2397154fe66aa8ce538ddeb517abbbe72f20f71a3e4de588d730916b556ab949ebf04c45e3c79c03519b73064 +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/46ca92e8392d0e66189add3e07e0176e +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/b62ecc665d731a4e5397efcba784853dd94a5b0ca2b036c17f17910531ed96b5cb07332f13383f27ec9751a0066d6cce1f4f77a1f06f42629060e3017e280195 +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/4ad63e824cf246445ae363145efc5977 +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/914c388e41b467b59b5cd3f53a135662c689f62c367e0b010d7faa01a94338b36c3ca23115b37562bcbb2060914603646999351efb2672992d393135bda8debf +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/64964540adbc4da2d9b3734ffb3b5414 +LLD.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/19190d022c9aa733b2a3be1ad523c291ee187569ace0594eb2d18959486e91aa56e8440f3ee715801ed7214bab6cd348679f2851c6418f6133f84479a5980587 +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/014f16cfe047ba26323d730171b63efa +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/0eb6a94107b88675a9cb5c6e514f9b326a6d8067ff32062e10ab63961eccd6b44fe784b888caf0e5b1a297641b2a9f943caccbce18df76a100b1183b6fb78177 +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/3041df8d07f840a18f9a3712ba165a11 +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/01954c0c500eb2dc85a896fd0604672a432c86781a1a25818bf6849e350e5e0751a0d3e124a5dcc3cc5ddfd6130816f00024b5bf0bf062c3fa143b27f7cfc7cf +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/00c8d0195d3bb52158e25d96f9667cf0 +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/504b79e64929b8f21b05e9fbaa4a2eb60b565ba6b4ade3369dc1e38678bc094344f4ffdde657b41c062e951f97701c6ed58841b66f2060a21274202e2cbbfc69 +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/a81af919513dc7103d5f65748e99a932 +LLD.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/9d6c0311113d998a2e2f93afaad2b0155bae6e37dcaa0778879259d61ce1d37d54ccb169c06dc7911f63b0184499cf208a72d4b330198cf5282df15baa307bdd +LLD.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/39bc3ee14a07b7a19149e74ef678b2d1 +LLD.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/19ae60bf3efe9347eb7fb510437d0aa97039bba7f9ac0e0ca50fb5222348c6e8fa74920960d97e421306c9764921f3b00e6e79410bfd355719304709b3424a3c +LLD.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/ae563cfd3b9ce5ca8de3d63c9f956d29 +LLD.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/11b036eafb2f2037382af2a6e76901ecfef70c120f2b33d7d9621d2047cade9082e184580c684e1d6a70f92d2c33fcb75a8fcd78ce047e04d57165d532e191c9 +LLD.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/2fb700351f0a990f8b61ee854b1cf52b +LLD.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/474cb28550056d2a51d95ad6ae806f032a872e69d72eddcf039cbfed21d1d3c182caad73a720f11c2173f20c63043e352d618761a15535ec3e8071b3fdd88cd3 +LLD.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/5ccc80802c4053ad1a5fe351b45d33f3 +LLD.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/b7349862fb03d4c29b1018ad7ef90ce056e8d40a3340b10af754a1cbb06d4ab494d7837c274de2a7e13028d3b044f11c39ca3bbe969569adf4557e6402191993 +LLD.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/bd4b518e05a13241809a0cdefe05cf3a +LLD.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/6c327220fad9cbaec397078232c6e800cdc824d6706a4453ec03e016baf0a86ef2c082df2b980196d1b10ebd2d22c74fbb7b92cd90e7fd902372a3a176630bfb +LLD.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/ff60ea3e401a5315560d77990eb1261d +LLD.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/f018c307b47779cc97368762e1edfa63e0f9c354166eefe706f2c398599b30be7041161e08ea5276b75a826c8bceaf250330e1231591b96ca430bf674c51dbb1 +LLD.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/9ff7c7f20eaf5ab1a8053037e5b50e23 +LLD.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/f3508b68727c2c7890928975fa4387009edcce957f6942c1ac9db0554c7b3dc3c6d9b22bbe543910d7354717bb292d30d4468f48b9451adb0f305ececfd5a528 +LLD.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/48f6fe99a0d2f67ef378b06ffa6a1386 +LLD.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/59096b2f9067d49e9eefa3d5e4356e0bf0a6cb2c7b8fc477ebc74603f2ba0c6a5e7c44b65080fa73ad4d2ebe4377b9788e370e311cafaabd2a95f76be383c240 +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/adbac48e6ea29783d7e0e0a34b0a74f1 +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/c589a430dc42d2f2fa8334dcc6a992e2776d4a3d1e76c435759b99b200117710c4afbac56e02d7c0a6285817e404a62b11833b570eacafb1ef871cec0c3c7c30 +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/a215122469aca265bff80e6c8948aaa2 +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/519f835a62ba7c3e27169d94e95f3a2671a82ce37ab67af79061b1ae15811d6974f6e0788a9979d510cef4aa2e444ce90b358c8655265b26b4c569e3899700ae +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/6cdeb73fb0f6a1d305111382b1074b16 +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/8a86e431e5d6ddedc52a38bafadafef4cdfeeea2b3be34793ffefe240ae1a0347adae2a4efe783a493377fe8fc30a0646e68a1acd868bcee9e50a2b486611a42 +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/d8b6577c4f0c6286641599cb0a0b7abc +LLD.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/fb6262eb94adfb3ed1e81c69706600d00e267176d40c3ae6247dd7c0cdb4248d041083a5ad7c83fd9f307352f4a22d1d3b10274b4d43c4fd5c47a68189f22de2 +LLD.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/60bd90c33a864d74a6c2e16a43599e78 +LLD.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/1f6b39e41a892cbaf1435d6ffc4ed8f80c2418f1a7f6feeb1175b38620e8294b00a96213e5c3c13ca33dd2e57493b03cc4417fb786e98577fe35224a0d4fe8fb +LLD.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/0b003a8140dba5e1c0f4dcc9dc56f83d +LLD.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/f56334c7d2bf42390feb02e3b4e4261940fcf731a5d6083d9d8d52f75006f72866b8271951f2ce8a0208ed624fb45f5254978e12ae805b75a391b9130fd3af68 +LLD.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/5e755233a506d16ee5b83e84bc776351 +LLD.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/4ab51f3375fd33857e3ab7d58f8d59f3038747a40e14473236b830fb8924f8e8460e44dd9a26c545e6b0f236591d72fb23f0ad0d59ebf60ccd3dbf268922bb23 +LLD.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/fb0cc1fefe0795f3b401959a2ff2ec42 +LLD.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/de8899449b864b698db37acffcf94e4f9dc14b920b108b4289c3bf1dbae87d0374361e83242f7f964983117f2978d2c7ba1509111395c063b70de57ee71ff632 +LLD.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/d86e2f57b0b19326c99d8bb24ce70238 +LLD.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/e0cc6552b92f9246b19032d18a0a2edfc65950cabab3ddd8a5d24eb56b34bd735a3d1875714a8cf1a7771fe3cf3845de53d99198ecf3c3298d152e1598f57c5b +LLD.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/b7a713da29369a24ab4c293280527552 +LLD.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/de33a4d3134c339c7669275018e18bd1ee34b64fd58dd7ac509fffdfcd364732fc8c2319a6664cbbefd9f2461b5e83538adf3214564c7cf932cf705de6fef709 +LLD.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/6b2a3d6b923387a5667ac8f2347f1351 +LLD.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/d4a6df10c8d537866e85676b116c1ae6140c1169cee866ea1b5c45831f3610f872a85eef9e925651dcd9070cec53ae297de93870f29a582e8bb83678b0d3bd7a +LLD.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/b0179804d9ba8ee1567558264c18263e +LLD.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/d836ed00ca3486496488d7913de68609dd664924da65ae5bfc1df2ace7a7a8c79674340e219c3d1ca62e9c9d4d7f3deb4b56b3e19b19ce2cee2ba33a07bbfe32 +LLD.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/af12ad9a93df90946b85872ac6b9ef79 +LLD.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/894a5f2f3599cf9a88260bf07fb0ef382ba829e9bd8aef98770adeef995f524e8f8e35e5877181371a02a2e9035f9b5cf995532299dbd645ce946739900be711 +LLD.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/b1161814ecafd0897ec8bba22a9dfb8c +LLD.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/e1c6b33320c50d68914b530add1d5321baf385f19a4392bd1babae98abb2ec8b155e18015d712f6e33f7c9c08c8a27b565ffb986989373c98773bf4991a8b963 +LLD.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/75ab6b8e7ddfedf97d5a97027be1d390 +LLD.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/56c8dc096650756c0dcbcbcab1fd528755873b8fd4e502c0179ff83dd01c4832f7b8a2b474b62bd2fe7eb2550daeb9bc4999906e84fd99598b15a199c5c83443 +LLD.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/45b91d8869d97e7ba12cd125fb2ccda5 +LLD.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/e88eeb4d357cdf57a739803897fec1365cd43cb57d62f54b479031b1c2d1ae52511397c4c66f1cc1465580f077e5b121275bd70c5fac29c841cbaab599679173 +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/c2e9acb2ad5943920e045baea06d1ff1 +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/07eca55d28508fa500a7a93d3fc599460f4c894bd6c1979507a725f066d5d17b692e501d56861dee9bbf002629e3841d48eef2b65b3120ef05d3daefdba8f19a +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/1b3227e17ea0a65c2879439094e2bc2f +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/68b939ee717f9f751359e6ef4141ec4608be6926f72158b8f02128876fc97be8c255b7a27f8a89906de8e9f5f3f77eb0b83861ff46d614c2a33f349a254179ff +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/f2280fb244942fc505285aa415359409 +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/770abd9b2be1adec57442b4bde0dbc1dedbf78e60a8589e3e146bb44b2af3fe48cbc8ddd7036a8c0eeafed81b45c5d0dcd3a298876e98a1b0039a77a210f6778 +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/b12f9686b2bf8bf1022ddfe5647cc32c +LLD.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/bf6738aa1f8cbf749fb110fadabb23e02a137c5e55e8ca0e1cec94b517ca6a314affc3da4899cc6e6f58a7f920dc87e4de939069590b5e516176bde07458df43 diff --git a/deps/checksums/llvm b/deps/checksums/llvm index f9bc921b4a8ee..c0386f3377a85 100644 --- a/deps/checksums/llvm +++ b/deps/checksums/llvm @@ -1,111 +1,111 @@ -LLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/8b23ac6a55ad8a8a911af1cd2be84f7c -LLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/60df009ecef6b7d435fc198dd477e9198e1f96d89b3c583b06af5b6b938b9f4d545f75f09d0daee93f94448f6fef36ca2e0b541e1179280e6d918b02c619291f -LLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/649c61e6bb2ddc619d2f967d923a62d6 -LLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/864910013f659f473def2a5df78adf5c13f6f84f400d3b87c5660ef51a97c86520a73cc6072db2ed739f3e7e3e2d326f34634bc9ab432edbab59baaf2085f4bf -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/2bae4d31c56385e73f3cf667e5cb5582 -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/27f8479a639434329fc5e67326df2c22aacee61237cb1eb1bf9938a58b1dcf883ea0476a066dd284047388a42a3b676c37b2c800f97feab694edf091aa10a8b7 -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/040485a871ce0036fb19f3e9ab9ed1f6 -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/0472ab3fb75efe1b67ba8c34cd9b36377ef9206506f741ea9a6289d3dad4ba4d0560578661bf9e433b51c03c77a9de5ed23df37e160a9225bcb50c27e5431e76 -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/12f54c1888f00373ea1e8fcafffbc313 -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/fc246d39c1711cc041b014a77e8b0c9fbbdf86c92a1c027e35a152d18bf6cc72d8b059c65457851ce240a5c745ebd39934ed6ce6f553d408ec8ad4078135c746 -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/7065ccae75d0e16876aec6d96de41409 -LLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/1c0bdce88797baca3188be7927d7694861bc491b4ad7970e485332ecf36b28e121a57e3a4ffbe83f6919f00da66d04d7809c589b8f9bf4b9940b15cc5c1590e0 -LLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/708f78fb147a1a5455b1f0e27e0a8946 -LLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/f7aa0dab1f2b0a7dc5324ef1ed9969e31334245938f2954425eaea2c034072d844a3c9eed8b522bf1794a22d822117d6beff6c23872c875dcbcdd7cc719a6d61 -LLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/eaf4c42566b3ffbd6c3fa3fdab126d0a -LLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/7d60771a1795fe328c8f5fb534580d34016f6dcd85c268e94d6ed8af7e68fc74e3bb25ed8262bef4100b9341dea180a2961d1705e453d37dc5d6a01ff9b00ae8 -LLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/f4ed6360b1e46be18392900cf5e6e413 -LLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/0dbc3f7954ef085bff00cf1a7d18bf338bd76f67ab98d972a486942ade7f11a6c9761a4605ae653402d867c543a065d6c238bd6a375852544e89eb9f9cc6c335 -LLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/b8cfc0edd85f79fe0ee22b84b9271d62 -LLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/8f8b5111223d433bbbb7ec48df5436ee5a4c21c4cd57fab1b6a4121d72230251998035c9d62993d442af279e3d393afa2df1c161af2762420ec149ee16f01833 -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/5cff8a24ca2d1da58ea709d34c33decd -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/2c20fef573744dacafc6333687be408b474c9773c558fe08ff1702d1957aac3bc99dd9998866651bf9af7473214d1be236273725501cf9f5c38d1807f1605456 -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/2721d242b457748e3f8301b085282c3c -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/8a73828ebd84e683f9a043007bba955ca85deec608d9602fe29ef18fc999b4959bc8e87c865bcd060adb8b4c15f8cb04113027b37c3b4e075cc8c7946831a52d -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/8c8171ed600e466b022a96956fb93e69 -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/48798715ab9866528d55b0c75a9aa6a87e03b771c3a29b0f3d88bc8d89845ee8f39ddeb6232a0337eb1491092322fb7617e5ebef1e55c0bc4c46f05ed115a0f8 -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/8343d87440928bdc76f0209eb905fac6 -LLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/e20a0fb7e3cff62832ba840782b84c12ce8ac38cbcd0eff82dbc6a6ab5cd58c59cb760f5b85e4e60dec63aa274e8e43035c5e1fa5e77639d607971690487b3a4 -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/f6a415de133867e9045c5821ae2bb286 -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/acd4c6a31f998f506c747f3d8d4ddae393f6a58a282a928913d4eab850147e485e99fc953d4847d00555a1bde295255eed530e4dcf1dbd46e62d2c0a4df9c4c3 -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/4164c3a46ea05eeda4c471b290b9c782 -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/c19df17b57f67d2dd281f1939462250aca5b6cfd99598b0dd45eb76ba46f4b02c4e3ccc8e09ca57843c12de822a94df88d5593a34b401050f148452986094ec2 -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/1d3bd6f4770fba34a9f1b14a3871665c -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/686a8be7a96e37b91d70bd06259a8a61b6e8d2fbb3b28d9252b987b7ed58ae476a4cb1b773b143d41dc6de23a7b969cedf35c9b8070052a7b9882503379d4f6f -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/3783a3c99a4c8c27ae367e5bb717cf3a -LLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/34bc40f96d054487022879477eb826ce769b507c90de9c481107f582a1c995a9af9172d1d017eb30e6a9875f68877c26b76fd3ec48a4338c9e5608d970d012f5 -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/b6d3fd4b5460fb336ccf71ed4f27112c -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/9558ed5556c8c0ef5f3882f76bf4f4f5ba8bb642eecd3a6f9f7d4ad82c0d9a15038e8fda0e613eb614b747ef045e3bdb1cc3cad6a674627e9f54e56abac67daf -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/37ef614a98b59a8100ead9a5a0b3a369 -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/02f99b72dd23aeaeb5326c555e26f2090c311c8b111e3b203235ac503faa3d8499afda2e3541d0744dbbd8b6451c50d377b09ff7dfe37d3934b931e31b643640 -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/f0b6cfc6d392e597e305a77985949bbe -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/9e2487984369a573e000b92899888ec845cb76dc20aaf200eaa1f52dbaedc8311c4161f3c9febce47b077be86aa8780c6d9c550f508c6b4949d76d236ecefcea -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/a369c3db68953d38d71d2e342ebb72d4 -LLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/e0a4f18dd056578b690903dddc971aa91f91b194758a4ec69422f4834dd1c85224bdfd2b95d6f801cd4d23aa26c09a104452266ba8d61b5f1a429b57b2f597b4 -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/ab49be8073da48f3a353346fd6d9a833 -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/3f0a76b3940a918bf8206529a15d538db59e4c419cdeb4af0f338d343912d5708bf89ff89435a95b7ea42d3d36a83616a2f45bd21e1e8e4a067df5be22898ba8 -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/493df42ef5cae32a099ca7ee2c2dfb1d -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/ac27639cd6273f6dd38bad0db9bba82f1dd299d9260c6877cc4b876d4f82fd518c758aeeea58b389e790eb7e212d0976fd1af1741e7854e8c287c4a381c5f0dd -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/529256ff2095f50c1c57356819122ed5 -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/3922fb3a3419ee319392c68124550824e6644e7a638d39ac2831b6595c1e1fdce6934eaadb74415dc81f6ab349714e5443f746a61c0d8927c78b51987dc95a32 -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/82216b18dcc9148c3cdc00bdaed163f2 -LLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/c212134793544ba37247842c733b540055bb987b0854194d038f90dabbdf9ab5df6ca1e64c7e85d8071263d0b8f1d2feb99ac9d842b731551aa58ee2be2618ea -LLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/465288c493241318c5947f756319d2ae -LLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/4ef949ced9cf6c9f30c56388a8e53eb67c528e0635bb3c00d1dd204c8b8f74e72a6bc2104745dcfecf7c653ce1499d86c3a7acac98b565546b3826230710b92d -LLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/0437433a85900470209cde06ee185e9f -LLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/efa646ae330dcb5d4dc40a8e91a51248b55811d090111deddd415e22d8d7f26009dd4a124756dcdb9df4d83804f11576b786758692a5e82ceaefc88de3b9b00d -LLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/895eedc69041096b1643f66976f2a51b -LLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/dab5fcbd7e48e60c7d16031930e954a83a87e705ac72cba3f660bd569fa8b6a05d7ddf2551eb8e5f163d385c31ce197ca519e47e6ccf85982c6ae7072c6a301d -LLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/083c0b15d8747cedfd617a9127792ca6 -LLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/427d8caba92e5bc3f88b9f33ca951fdb01dd6ce94bd852af61cd94f3476c35e82f9c387989c5847af8ae65d5e9ddfb6efc4afdcb57320bac1115b3ef23e9563b -LLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/0e0a82a95205bc58a31ac24a7d479d84 -LLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/4472eb1cf1386d6754ee9fe2aed514b656ce34c0fcf478e3dd0532e3010e2fbd82b905060382eb661e7daa48d1e44e4606b1bf3625f539bcadff3f13497ac5c1 -LLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/91639f25324ac04119751f1c4b09c0ec -LLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/a07270a19a7d8ba5dfdf8ddfb089ea19101ef9386b3d418353c9fb7d2812b3b6bb68dd3e170fccc0f2ae7a7c7cb5a0bbead36580249726346a04f028ff4f94d6 -LLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/6eee5cd139347f0dc6c0100a1fe34e78 -LLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/2e8e4a14e0822b5078ee1dd5580a136f2e75f9e58a065b83cb857f7f2e17a5f462c6ef8a41b383c3c9ddc54e31876709472a53787b5b285332802babe9a41744 -LLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/b4df578f69f7ff1a43c73b92f8b2fc08 -LLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/c965c4b42b6b22650f329d1187a27523e2e1ea6032de11f1cdb6a54b79871aaa260716e84e38ea5c8692930e1aa6927f5f82617a096bcfa10e3666e37cda50ce -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/ff278e2aa1a91a9bd6dc0d240ce23e3b -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/5903a1cb350391f7e15ad81ed9c0690b43e267c5b061e011c61badbf324be544287869fbb4c2d68415c4621ecc37cc798762cbde34ccb64194547d63cb3a980b -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/a02b1dea41d86fd28411798b535f7674 -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/7b6c94d8e60985206a7e6faefaca1dfab04a1a1378e8b52cd981726f6b6558caba23b716d44824fdb9fb54c16ec478e8de4296db9b2ef0be67680784ed26831c -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/1d1f3db1b9a23c5948a5b982b46e5de6 -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/d741dcb76c3a143fe3b000999a627ba4a3abd36d738028e739e96c861be661cd1de12f5c7ee7e03826b1109aea11e80371d18865fb5332d1834f4dcf0ceca245 -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/3ed7af8b8e34820a83a8459edeb3843d -LLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/eaab7e410cb433f2b83e6b38671a6e7489556865cc7007ce1588c8fcb0421c64dda480be231f96b30ce6fa75c2d9e99fbdb2a6293fa108ed9bc0599d2ca2ca63 -LLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/88003e4d20bce7d175d8e4db003e0eeb -LLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/aed46b6b3aacf7ef373f9812da24edaf71ff1a382299e5f15eaffec605bb308fb3732846b9dde6d3afdeaa010de61773ba0e725d41e3b160fab37d2d0cf389cd -LLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/ef75e04e4946bb58091eb1a57b08ace2 -LLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/7e6ff0a8d511f19eb868d61fa50ff8c0014da4ea50ad960603f0851a6c09a693a66baea4563af6cdcf2f2fcd018bf2456a9e9479b9278c656ef64f0a08aa11ae -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/95a8b1fe9135120ee5fba2441ad16f2c -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/167dcff24d6144a4e211ee473b389d5fb4daa51d4ddbd98655456d3bee6c00554b91580a627ca5355e5c2d38a9a326f13c13454de64c0cc32a1f214a52b21400 -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/ba2fd64dcb09926f754fdde94ec5cde1 -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/fac4e6ab8875aa94cf6cf2065d718403b733954c18b0f5dee11148b70ecafabd92ff23155224ba5628c743fe963ee82a376ba9025f8ec8ca199a66412855ecd2 -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/f80738de98ca42cfc8c4ef141ec7cf0c -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/ddf7670f555db3916933ea202672c7ffb51d254422af801ae928fa3618b3b7db1f7513710576dabd52f219cb2791e19803b5a4f3470f7ea05f71b0b04b03aaf4 -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/a502a8057b19bebe8aac1c42d9cda20f -LLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/6e20328737c46fae6204cca68b16fa72e55c4b00fbaf8470b4847a869741fc0e2cef0da2ed9507fc4980678500dffbd42ccfe9f173321dee633bb0cf5adbe57e -LLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/3b06471de330c6f4a53012711c7c9d72 -LLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/c19a9a2d8e4d3bca25a1568b0fdc01653b0b467dadc68967c4ab88512b4b78cab2e829fcfcd3d1e7139ad5bc3fab62dfdfd50be57f0d0099de383d820dafd306 -LLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/06a632eb722009eb4bbd49689b49a8a8 -LLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/67969cd09ab313b395cdf9f614dffeeda1ab72b2fa9e68057bc8dae9bad36d39443569b91ad88bbab9a6309a8084e09d40dff76d5d4bd261a1553afd5c3dd6c8 -LLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/bc000f09920a305fea5b32cf2d1bebd4 -LLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/580a3b12d7620d4c3148f988125d081b3fc76defb0e78702286806e08dcecf2b9c41ad8071334ff1e4e9ee4155d8949d07c57e8470109c01acecd2b37a07083b -LLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/6cd4cf2922f69efe968637d240bcfd62 -LLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/7a23f48faf2c4e85247c684bc43239a21ea0732c980b4d46b50df27857f143cdfc081bca867a5692b086d32ff9031a230d496c0231d3ccb5fe3f48beb6ad480e -LLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/e7c54d9144ba36f697cd9be10e8e59cd -LLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/bd96434dd2a79b335bd7169222bf5bd78fdc00eeb7ef2f364bb5ec71071d68846a0ba6b51d5b182522e6ff577d8e3d7ca3c014962cbc04ef5a04a7157887cd6d -LLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/22005a7066939bef459f0fa7ad8508a4 -LLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/2742a12f8a9054d6aa70fa823d2cae8126fc7a591849259e92b87b2e6b90ad7d21ffd855d34e08999600a5e2b591492502788d2ebd0a2564325ecc1860607b50 -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/bdc275515045127ff9883802963b3baf -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/0fbed47ab0a14116a4b1f2b866ae65b5c81cc08007150750964eee8ac09a2a90afb0ba35d5d6447a33c75dd68755990a85e8874588faf84e7c1174b0c4f61c18 -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/657059eb6dc68b3fdc56ea167ebede2d -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/ebdd42af6d04bd98d9bb50dbdb36b9f5087d9d303d5671e96395ee6dad248402bceab5b4765f0fea7a8381ad3fcc17aae7379206903c8e4624a4dadd5eec3faf -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/e6e68533173f74000ee4c1c84c579a28 -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/8599d6ae2f84272ee4e8b176ae517ab3d2d25b7617c0520ee70cc33fdce9030a76205d3d9abc3f21c83e33258c78d52a31e0bab50a85f2050c4f3660eee378e1 -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/8add628662e5b234c20a7dc986749dbc -LLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/047ce72373190ac36654d6c931d00a0b766d0fc5bbc8e9dc787ab9c97e7691908c61d9edb13ee1608b38b10662dd8a584a019bde36c339c5164b1bb8e23837d8 +LLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/a70ce2a3f17c7f1a5ca012cb54824961 +LLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/fe882bdeac640beba174498dfd2ecb388db1fa1265555047588d0ad250bc673088b9611bfdfc14689e65fc874b60e91474f912600c395a25c81b53e69f298f7d +LLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/dfe8b093925d73e04b8fe20ab1f03db9 +LLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/09dbe669fd5cb3680e1ede7e3f2bd2efa50d30a231a459ef498f172c9066ee2360d9012bb080abaa880aa38a01db9808ba5ac656edf395857b3ed683e688c514 +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/5ef95fa3fa21127f2445652c22dece6e +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/e5c3e014a987ec0b7699941ca1543035cd8b1d67f3498826fc2df48944579ab008a8edd8b8bffed8ba0ffeb543e815e8a26495de028ad86cb5a1aaa160338866 +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/1a9e4424b89695dec44dd683557e2849 +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/6de91e4ba3a8c8cdb04f6c829890a6bb74ddae1fb90076000ac11031746129ff818910adf7f9e6300550efd190b9fda5f2493ff3e4bef3fdac8ca3bf97e6ccaa +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/0b05b71ad4721dea3815e1e2454d0133 +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/a191e2d7a4dd3a967fdf7b1e8f27a5ac2a0738008026351a27bb2aa188b2cb086b18848c99ad73ad2e1a350863137619c9bc1a51371baab29f1f1698e15d03d1 +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/a80354c67defce5ad7b989c4f3366008 +LLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/82fd3e66b46ec56d2affeae043462d01933ea20677ce44f7d1e25a3983ba2e34c018a7287125a55e62d9a3346bd330a2df8c3c94326a393ef04a9d8f01beecdf +LLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/e0400469dbc86855fae49afa2de33734 +LLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/52acee4ac93c17596e430865ce877c92afaaae194d616af930003e51972dc05348d0019325af83d0949b7188e3043d7f8b893837a65751cf55ecf4985cde8fcc +LLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/39e6aed193941fa8cb05140071443492 +LLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/c9e565abbcc25a3cd731ff1af92de94c3fadd83e6ebed8c9d9d25b259b32f22014404027fcd433484ee0eef2b5bbc9398f218a805f8205cb5dfa61257a034c90 +LLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/ed14d5afbf2b8b3654a683ad1e04af31 +LLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/4124a866e55f5b397d1ead170548c13e004105b2947ec0c8ecb20d021c6eba2206cefb63fb005e899c338583b56c9a0bd17c94724ceac7edae844a84a77c0a8f +LLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/8361fcfe223d65680625c5a20159dae7 +LLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/385be5df02cb44746365da98feaf7caa2360cd3203fcb4f63809dd88c52c90a479b4ddad592b46f1fce025fb305aaa7b1a02ceb57059f598c95495cdaf52da66 +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/a3852342bd1ae33e7af332008c279654 +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/a6b97c22ba365176ad17071b91546fc361b28ac03f1ef521f41106eaa1f66daa06a90d7d483e8e64bcf9778a9ed74ffb2cea908f1d53e8000886554a2674cf59 +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/4175eea371b3c2087838761f90af9e80 +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/ad6d824d03d262098348f04a8de59354b8cba1ead11c3b3c48b74dbf78b5e03219f6cfd7cc9eb48bd13b624a20fb524560565bc06290620d0583c4218fd8ce4d +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/b58769dd16d41cc232e0af0745db0c0d +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/aa3a9dd18439977ee2a9946325e873bfc65f01d8787ac9ac42f44b6780e0d8908c072ea410679dd463bf08ce539154bdf5a5139d6ce8032462137126abfaeb25 +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/f06631ff471f4abc3ac775f4160c7d43 +LLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/67ab50784ff858cc705ed2748898b1892c21a9ce21065cead4a62c2361c7a9f053e562ee27a629348ebe66f41fe078aadeca67526c0ed70148bab7369d8bfdb0 +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/9a3cf1e8cbdfe3ed895defe91c184107 +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/d1fb7496f60d152c35e5974b15958f96ef30eae118d2fa09fe48058db4310ddaf88a20eeea995b6fb882412ee9d23760e087836f7f93b3ac64818f5badfa3dba +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/743bfb035a17bbc85de8202e46631fd9 +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/86a737660325089d9973ff1de39d471d54cd2994ab3b8b24dfffc5ce2db2188ed11af4c4cbb7d6eee2c55760d736b00974eec7352c36ed5afaaeec65b83c2f72 +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/6a64360208288c31ea44ac4f7f6e7f73 +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/186da02c1bea8f65e9107bf1712db4b93acc78622c0a57534e7c342e40ffbc7fb4daf675e66879ae2a58835657a673f3fa61b08452fbb809838ca65469f75aba +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/50af8192ae03a8c2586a6e3c66490df1 +LLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/44e41c8064bba44705bdf1ac8e31a795cfe86c6697f48c26b8b87fcc0dad1083bd4ea203894a06530cf59ee646259694dd7732c7d3d99c7c1632c8ea3be56635 +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/a2263b7edb6ca4d1654d264169fc1a34 +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/c95c8bb2eb823eae849d04235bd2754c0368fbb91933deb4103cbdad4f49437f2dfa9a59a656fd6b5e7016de189ead3961e5c2bcaa60b0511d8b9667e84bddf7 +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/72fd40f0f2a14d6dda0ab0ea76587b3b +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/1ab3af3fdb4442f6b9dd1b954ccc775f4815159c3af913c6101319d76715c691216818f9c35e6d92be95d457f198d7dde6b4fc81fe8af71f47a1dcaa74a35ae6 +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/29329543013995dedb79661591fdbe08 +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/40f75b4409a5def7f41b39c4e4cdb31dc81ed027005281da2ec8ed5ebbd477929d2a1aa1177c33b6c981ef6616194e0b267fc5d9d0e8717c05e7bbea490ff257 +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/2f21a287b77d37fdfd03d20e21ed1378 +LLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/24a396cf3d963f476a02939e8d666112ef2fcab1883e46243ef166dc13bf354356fd1db9ca8081a2107ea08d015bfec3456f8a4ee33b029b8b7958db7d631400 +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/0289c0b501b8bcb693a1c92e10613727 +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/ed91a1785a193f1ad88f4c25467916a9c97cdff470b6bf86b640e296193d338f1ccbf380f1a89751b7be31ed12485665d0a77abf31b879a789582f5196f50406 +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/2b01d3ed13d8d6c2f1981f6ae2969405 +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/eba25bf68431d480df175706a6a02612aeb38cfbea08b9171e6da019b4bdb1f5fad2f357a7b1cdd1b06353558e371868bd5678275cf5cfaef3095f261f401134 +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/0721db7911f73b5806d467d769ea7a8c +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/f38d2e09f01b566a845e067514cd653ace5398578148cd8700d27077abd4d3d71cab29aa9025dd7e7f0383b0307c5a88a0666b3978600d2ea3840a5bccdd22bf +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/bdfe5c46ef0b04930c5ab2595945e5d3 +LLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/ad783a4b1b1f5d54e740cf42840d7ed24ff9d2e512900c08ea16356def2c8158d5d1c70f3026f8cb5a0b4b4802857c6f5090dd83ea871f9d5d3c4a7a22cf0e73 +LLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/f72efb9dba006c308cc791389b6eabc4 +LLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/dce1dd64311f840fadfba85a52f41a8a4eeb90244a1261de5360cc911cdc19371a0f12b7d67384ea251105a6eedc91a4fc615b87f63fd9ecb6a4d2ae9346cc53 +LLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/8fd06e11639cacc71ba363017cc9a82f +LLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/6f32b44bd4e910aca8a9359eeedc8fd038001e0eaf0c12b34c07fed78546ca6d06ac54e0a1cb43846b19a1c7389729616fcf1f39db41450fc5cb7e54a8572129 +LLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/2ad4cda8bb5528f1b187fc66f5c74aea +LLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/199fafa07917f05b4b9f3e18a8a59235aa3491c79ffe1b54ac4acee41b90df8bb630e789584c8bfce6d60c454e5c7b24c7b424db63458de0916dffa3b28ced21 +LLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/781bd8b1e041bc05600e4d0fe70fe125 +LLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/02bda3d17a509980e3a1b1464e64ea80879e0759eb5c5f706c913164af5bf83b19da96f05adcbebdc02566ee953e69adc41da7d752e41533ae6781d22daf4404 +LLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/6a09756d6d1c4a2fdafad07a55a4199d +LLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/f55038c9446cf6f2fd305e26097ca208766ea4a5ef0e875510b43390fc749b1a123376aa629287dd2df0608160c37bc8c5d7579c2c63abbd798839b5e628dcc8 +LLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/39f7f5a20d035a78305f0923009b4bc8 +LLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/22ecc841945137e2dcfaffef5cdb51fa19a9b7554367f4c0735f2d9399adef591af234b0c9aced763fd8f8135dbfad5f04dc915175af8c7f1853a961e67e3f85 +LLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/ddb8c15c549c4dd1d886f0e3e3b01c9e +LLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/c484efa3ca5fc9e1e570a97b02f06ce7470ef46fb445f04118dee460682194de2363b55b0d7217c4535bcd0fc2dc5d7f032a91de75ed028c37fedb8955f1275f +LLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/6f9957228785593507affbb5751d855f +LLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/ee45945e4133c12b16d12ffc761eadbf218f2d527e54722d48aab60f6574f57c13f21846f2d786a9389eeeb32908fb11c438e38a2932b1711c9cfd880ee5440f +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/c51b915e22e90204f7309fbdffcfe8a1 +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/5a44fea5b9caa9c933350d29b23c8819f0ad040d62c7235f4612fa8ddc51c352803c7b9a4c92d7eace8543e7138cfea639e68e8529208291dfd443c4810a397e +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/28d9ad7228add4db7a12545df5d1a35d +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/6b7e3b6a4523a66237dc26563b8706769cc6b7228fbf61e4e6804678ced42243434e42c7c92421bafa88c0bd761fc8a57cb0c5225ab3c00a83c719edb2d7776d +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/256222a8980ee3d8aeae284ceb9e9704 +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/fa61dbf7051ec054e2e85e6d486ef8522536512a092ff10f0d46fe975aa3e2ba3d7e8ec98b3bc99d7d066b5c694f07b97c46ea42ecac9119d108e403ed05c83f +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/ff364000aa8025b973923dbc89f419b9 +LLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/0c90ea208dac7f3e96f4547565cce4a965cf27eabe79e1bc557593524e9f723eef8e4a1cbad1fab9004a1b94d34e8a71622fed40feed693240d1c923cf1be18f +LLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/95b33cdcd79b499f8d862c85a81acf71 +LLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/8f89c44f53b5561a8d949089bb3237e1f82952f45cc540c42e3f784c399ac0435edca90ad08966a200dbe194026fd459c63750aba930e11cc6da5e2ec1cbd475 +LLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/1693403dc93ca962bd081ad8271c569d +LLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/8364ef2a49fbf6442b32279326e5494491a501e466105842f8ccb7d9b259b91fdbd296d0984222d56cc9e4be87464b9d6f279553a967a148b2a6fac662ee6d68 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/859698c3451608193f1bacbd3d893a12 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/284094eaa0b76092cb62ea1a55ca03d983f1b1a904ce52aad12b4dd6adfd139d738e8dd9df0f004c544f905d5454dc166e9e783646c7b60367fbd2788a108ba7 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/95c7e9fb2a344e6ac0252878fc12a7b5 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/b023f2b762efd971c825bb1d34d591caa198ec8ea75742beab0b0bcecd50173a09fdfdd1dc5e8aa448ea5244c2c1c34218c96005452b95461cdd26c76619ac53 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/43de4986e07102480c22658cb3ae8592 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/4a55b9983d19f1b012d80303291420a0e98e9d61644ddc94b694faac7e0dd575a45417d177ee822d9fc9f001c23e5b6ca3c9feee0e49f34088f657cae7278cc4 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/8698009378fe086c50243d908d45a085 +LLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/f264e5663d65cf6856547fde0e6800b8b828ae77c49cf87c73226bedbd95f71f4c12598bd26b0a47e3424bf710a79650b255935eb5e82c4e3b7c6845066c77d8 +LLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/1ebed3977c754042d3fad1c8a2b5c471 +LLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/b374a6cc383df97c71ed16503d8af7e0713217705a5b38fe9b137eb2c0df1a69f28fe7e8a96e496ce8cc63546e63ae262fca139fdffa0cfcef3c9b2b0a412f7d +LLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/7a7440b35ed8484efb1a7a66929e7a68 +LLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/9856dd0395ff5340f3c3d4198f901dd11e024af72cb61cf146aa177c18c06926b00b9848248c1d360f8b550d8f0a7b291966ca089591655aff865519d152bf4e +LLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/8a3b05772a16c58fd37df033adfb68ca +LLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/62ca5be9abcd355e18ee3ea3d120dae336076b84ab877d2a796e8f138f9d9084353b592c221762d6e4af7beb64587497d4e27edbc6b371afdbc09e926fcb23cd +LLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/9e88bc5575372bde26d67342b375d41f +LLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/e1b377008b3ff6626608410eb6d6cd77cae32a73ff3e2bd042cb9212529089c80223aee8196fc04966072e1dcad46ba4d980a80426f0b5247da3e4087dc7fa24 +LLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/749af273a95500e67ee926c30bc6bbe4 +LLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/961550ab92e51cdabffe31c4210953f49dffdb962a29ac3f02b64f523e70434a0c0c842077d2eb9bf064b52fb14eae0c345e80c3d602c7ac49ef982222c2abfe +LLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/65052109742b92529cddde9c21003e9b +LLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/7e7992f8ac36b427a3639c58109743d7c7134f42eff768bab248a33c7d890e731704de949d107c63b30d1644497eaa230150c575d059fce50e2eea2a9f8c2ee5 +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/0655017c0caa7d90e1d36b2bf5f6672b +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/1b78ebd6dbf6b83045f9d4df7b45b84e930cc905b1cdc2204ccc5b550230fde3c1e61eae60edd3821cf9d0854a072d03975956a188fc6f64d50cfe62046cfcb3 +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/755c270d98e648dff4e1a53bf6c11e94 +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/3bb2bba0bf41f0d5a6cd92b7fd4f39e2b336f10f3011b0240b14c5e90769d6d77f6d0efa81f577e6801748cd20da525c0f4b21449c5d8c014f7f94ec30490670 +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/006b00b828e176f8f29f292fcc247297 +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/519e9d529e27111522eb5ab7c1b12b14c7a0063c4d1d74a5522fd387f52f7349b975ceb23c687b39837752afefe154ceb325d206fe376813f5be626f8f7552f7 +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/f5644910d8072e24ec4e0126721a01bd +LLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/b8bc06cd12e56d2d82db8f960172a99af1aba51748eef369cf95cad57107b95cdf3c21f534b48cfdea714e0e23df1a29ea82d961a69060b3649c0b043c20021f LLVMLibUnwind.v12.0.1+0.aarch64-apple-darwin.tar.gz/md5/b95ad4844e649bf46db43683b55b9f4f LLVMLibUnwind.v12.0.1+0.aarch64-apple-darwin.tar.gz/sha512/15e0996aebe6db91fe58121001aa7ea4b23685ead3c26b5d89afae34b535e34b4e801a971f4854d8e1a1fbc805cece06272470622eef863e225358113a127913 LLVMLibUnwind.v12.0.1+0.aarch64-linux-gnu.tar.gz/md5/6d8783dc9b86c9884e0877f0d8ac4167 @@ -138,115 +138,115 @@ LLVMLibUnwind.v12.0.1+0.x86_64-unknown-freebsd.tar.gz/md5/54ac594b4c8e7f261034a8 LLVMLibUnwind.v12.0.1+0.x86_64-unknown-freebsd.tar.gz/sha512/a43756afd92081e6dd7244d162862fc318b41ca110a5e8be6e4ee2d8fdfd8fb0f79961ae55e48913e055779791bd1c0ecd34fd59281fb66b3c4f24a1f44128f0 LLVMLibUnwind.v12.0.1+0.x86_64-w64-mingw32.tar.gz/md5/83cf8fc2a085a73b8af4245a82b7d32f LLVMLibUnwind.v12.0.1+0.x86_64-w64-mingw32.tar.gz/sha512/297a5c7b33bd3f57878871eccb3b9879ea5549639523a1b9db356b710cafb232906a74d668315340d60ba0c5087d3400f14ab92c3704e32e062e6b546abf7df6 -libLLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/6f46148833fa386b55dd92e946561c85 -libLLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/ea1912f9a75c07374bc9c22c7b8b4321a0700f4ea196d29169e14a648a30d164897215ef4c4c6478810e5c5cdc76b1f2937fec4e6b0bb3e4f579bae06a219d0e -libLLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/0f2558df8ed485a93837e790bc646018 -libLLVM.v15.0.7+8.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/e7f962c4dd9675b6abec6129e7fa460ba3ba4bbe9eead4f9327a1db5fc9c64651d7424f9439ef396f0546f8e232bdc34eb625df0fa36bdfaed0e6b7af4dd0070 -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/3317b67ebfb01c8d3dcb17c04d0f5ee5 -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/383ec73210e00b02b3fe3f247bfe81a8c81668d3faf59c0ba9b0f032c41603807cb65808f28fc8a91dcf7cf72f3f5fa3bc68277bcb17cd35ec758ba3dd8ec857 -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/f49e5ae9b0eb96cddeb3d68bec320d7b -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/e2cf6ef242479bc781f6ea70d7123b087370bad917c8f398757ba32d9446ef3b8c3d3b813be2c1ad3a8945dce1464551b57d3bc40a2e063199dfe555ad697dc8 -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/e8eb2e0bc1b0693fbdf01c9dbe0e0170 -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/245a157bd6b49ece87075d6250315f419506262c43ad6c5c76340d60ca1eedb00dab77c6588b91bb5cd8033e7ed1d97c21d801f8359486c9c350ded3bfae7642 -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/60dea992b59646da2d719185f32f4a7e -libLLVM.v15.0.7+8.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/7fcd64e51c87de8683923460d4596e406c5775d2ec6b7f4111bcb0689692dee09584622ecfae17ce91d1632f03a37cc9d43696190a5b92e916f4b8d4d0a50003 -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/86385feda64011d17952300a29a28a46 -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/2cf9f4934932b39a4a0195eab39f28c718c7cb5b830a425bddeb2f0a643fe6a74c7754483324f57e876ca8b92b5cfa1aaca802a44dc9ebcde86d8875c0493952 -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/72cd1154871445247a6af96536ae1b51 -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/b35740ff38e77c2b718f151e3ef55831bb4145d164c9c74bb78b7cce94693a6accb39cc747c67171cc43c72fff6cc72b3a19ba73e4dc8cf127ffe61f640ceac0 -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/8dd9a908e0d94695352762d87bb5cfd4 -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/3d9fbede7af089548bca9348c5ad13f146386ee4e2391223b4f9d299f9a52f7062dc758ab098805e481f434a5057ed37cb031d48de7fc3eb3137699f5540587e -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/f55864a3ee48940270502c637412dd58 -libLLVM.v15.0.7+8.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/c52bca8cb48cee54ad86bb86696f489d6a6d471238e49affb9af70b0e88ec6a4af57391a72f88fbea31f7c597a066d57978b1d3ea63a29cfae559457c66f6e06 -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/20d1d88a807f96b469032e5c932c0696 -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/d6cdc9746c81c504faa968638ea9d7fd9ded72ad0abdcf6c5adb8bcd127126d35506c2b6b3bedb977736a76318edb5c899ba555ff1d05df21f797a8f9a4e5122 -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/b4d7d4ebce4c7bbe3ac11cca0017a67a -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/bb388db416d805ef5fbdbf4d2210d4b2188d6eae2c864692cfb1da7ba89de772423667e4648889db7cf43d9127aa13f77981d0b99ef321ff3f09faf7fd4b8bb9 -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/b9382496b307f7e72fb12d394eef4e39 -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/122a5f8daf1240c5d7b4f1926292311a3d287c4461516ee3321d1657ff3c9ca5caff54a1298f0d2a2b4c19627a57d626a4fb4455921862d87fe5897d672bdfae -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/bd564398619c3338e509e2f9ef7d7ba0 -libLLVM.v15.0.7+8.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/a54812732e95604031ef1fb420057ed40b909e211a68d5a533be617556c7c41e4022dea35fc6b8c81d8cb1227e4086d46b345cfcb6022dad9efc456ed85d7825 -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/39daf88d35f518325138f8562dec70dd -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/2b2fd30a04cbdcffa57d12ea2785e3016456fbf1dfe99b74a1628ce213bdc28d65f8c6937175c700c0df4f5f8f1c257ef71f27d1d5cca2c5efe5598c893d5011 -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/af88ec70f786750081d2948b6b9fd0ba -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/f2a6bf3d74ddd06115d4791bd7ed833fc9ff1c24c0a317d7756d181f7cc59d21da73e085abb7ab0b46a12b0cbe4656df0e9e509b057cdf7d3d0cae2304f6b39c -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/5dfdae75a373ef890d7e6c004cb16b2d -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/3993609a2199c78cc12f430f76c2c3b58b0d6f208271bc474e3869d9f505fadfa61e1c2c5774ca5190c7886cad68507fff9a0f6d11641106507fc4b5e3bc8a41 -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/e426a70337cf4e38ba22f64c9adbabd0 -libLLVM.v15.0.7+8.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/c5ac86c22d016adf70e77970ae976a5081a85ebe1943a46fcb93be53f85f82e4aaa724e41b450306d0cf50dc4eb64367059737b6c828eab554f6166774201310 -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/523077c1c0fedd6d5e62536e933b2c8a -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/246df1e0d1a038ea2cb77a9678ed0e13f568ca35bc2c751547b9e871163c0dd7e18ea321c88eb6c9b2ccce9ec4347c29c69e5cbc41dbbd43d23d7a658ca5fc15 -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/23aa72bc1511ff8f4c09a2bdf70085a7 -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/4d1d46652e98e75925478a86bc3b2e613ce54d3e99cbd75fecc637dab70a72187c36a979e2124592cb764d867c39555c013497fc3438103aa320fb7e45247254 -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/ba162cc558297ef830f94323e351aae0 -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/f98f1c74f5fb3a1e8936692c0b9c57fb8da1ae8fcbe187e019d61ff6691cbcdb03e7f53b5254bd219856bc3dc4408cb29926744f6086a13c3a32e66c1a79f422 -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/9b364f0c1f2bf550d5908407120ab68a -libLLVM.v15.0.7+8.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/c7bb0a90cb24352926c6a0d3599490db75f84e907697f48d1ac099767f4d3480e94a6e19995bd16d2c26c7cac1309bb579f71208899ce83aa617ec06cea2847f -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/06ff2d8850863f47c6d7391d9bdc4cd9 -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/6d03c53673b072ba1936124b681219ca474f7d269dbeb3c0278ea88aeba5949a5af5388f3776f9bf5c1f05fef81922c9720d16fbb57737bd9b83925206f46cf1 -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/7d37c75e75b9fa3e5db8cc2422a65b90 -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/ffdb947940a033a01d0568f25018c125a743f3c71ce46565965ddbad52bd88596092190070c827aa6f7e70e22338e5d5162dfcb008deb80734f59d35437b41ed -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/c31df5def85016f499c1a7daedf006ef -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/d1b7220c0037450ec6efc4a2119c4dc4b9c48a20281c60b923f33bd80a9d146a69270983fe15cd8623ccfbac6c4bc4f4df3b44ad36cbcf86da8086f932e4da4d -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/a178f55baca2221e71a0badc79b49bd2 -libLLVM.v15.0.7+8.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/d613e2744c59b845b8893eba4a4579750d9dd4bf4375837aadd963f051475dcbf074d254dc8eacec2f4b2f77a9c1cca68f88b7948df8065910b1b0752dd2004b -libLLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/2c5cd46b8a66d959807f4b285f5a221c -libLLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/43061164687d44c1aa92f11198e218af19e96b1fc6519a2f41a2626302b3089beda58d24040e3220424e718366c761c41a064479411c8c923eea1708b4bb4c77 -libLLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/1a0850a7e8c88088a6c26a50cd746396 -libLLVM.v15.0.7+8.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/57bb6a55f7b84488d72195e1420826e94f082541fdaa0f981da1abcd8b1fb4f0a12f1398d786abd51943c6920513914e9476a05c7477b2e003e30a068304f0ae -libLLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/538b7f590bfe5145c39c06aed74c845f -libLLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/98e59c9a2354f4881b61bc23ebc34c2f70e6394a54cbc6735a56f59688e248db85b8a674e1e4a2a60bb8802f23213767c17985c44eb530743132d3366b0ed2ce -libLLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/854ce5a05f524762390216637048a2c5 -libLLVM.v15.0.7+8.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/028714472e5e5ae01b667f1058dc704b051030c8c95ef4816aae1118aea6442f44d824e48c13cf4111f81ea151a7dd951aad40e4c05208730da4a4f9f4e52c3f -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/dc6aabdb3fff4b33a9eb75ace7e6615e -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/457a1f6d28b287033f501247499c4a9871be7db7880b65f34ab615846c06759fcbb9b4643a6692f670d56bb2346311806475fc7bb82a699755ea6410dd999d37 -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/0578542bbde3db752171f9420ce30d74 -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/93a8310e3b5bf85bcc7d1b20ee836805eb087a318bde258d5117babb877689e05d5a0d66e8c00946544b6e07a322c2af5bfd1499927cc325a98fb5b6aefdbed3 -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/c2b7dec7d566c3f110f84a69e781866b -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/44652389f9aeea2a8ba4e49bf78fa7d11ef3579205f178af844567e8e999917d737e233fe74a31cb3bf9a49847e364824109634e6683b75096b3f45a9fb4150d -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/1c13dbb8577ad9e7020059a474560286 -libLLVM.v15.0.7+8.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/1d3e4a06f3d6ae3afa976713ad8937a51c4e9fd0b544c1e9f8c74ae8579dba29fd8e77eb8acec0873dec8ec58fa91bfa6738212a504769807a758caa1f203b2e -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/ba4c9eceaa281a177f1f8b878bde35e6 -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/c0f8fecd3f6e1b342a075630ef0fbcd76d964e9bac08ac5e8a48ab0686c0ab91d327c263e045056a66b93f44346a0624af1687ea36d7f3c41c94d23d33c0d2ef -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/396cd763186100f920279ea551db8d09 -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/c79d60d522b4c186b51b7ea50fa8916ec63f64941225d535f8cceb25e3732458291260186684d098776091f8ba235c7c890fc635e8f39ac3c603aeb7c84f0782 -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/8288ec83ada261b340994f5ea62c2efb -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/c612e99e655dec48f0c1b2b28d5aa999c3ba8e83f7796a1f2807074ceccdb08a8b6a5e3554eacfc3ba7a99aeeb8c6b28217cdc957937e344a94636920cf288e0 -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/039c44655a46ee04f7de2b184bba432a -libLLVM.v15.0.7+8.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/a47b840e221933001b9366aa90b5862f25eced86bead68164b98ac3b095a1a948a9d89a6d2f9e7db2fabf40df4de211b5ff5d7d10fc3572c24470764d14a559e -libLLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/036be0a300369212fe943134678ba985 -libLLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/7dc49931b9775372385a61cd9de441dae567df791c83adcdacd45602e8cb64848895b26e8c53476fe53d86d21a06a00c21623eba4ef71ca97a545bc4fc2c5b18 -libLLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/747b5946945160209c2e5705a0ab0bcd -libLLVM.v15.0.7+8.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/da1b2b543c648e322a1d87d2294a0cf87f4ae4c1c5b5708a3de6bfd29ffd589f970fa8f01182017db1743bc53d6726f9118438efef07484c7388ff0b0918c99b -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/b5eebac2361874017e0908dd2b655953 -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/b3e1b05afb00e44d1b6b1ce9adc6934e2f2caf1d8bc8d112a7aee5526a39cf77d52b256b888bdc54ac848a98aa2714c6a8beca5603fff62e974595f2c2ce1b25 -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/16864fadbf7366031ec0f5aa69a295ac -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/2099f8f4167f7a96ad2e9145e2c4e26d201aececd8a34d21c1e21b3865e8c63192cfef6e012863a6920b55d7865143527aba17805412b122f1fa0e2ff304b515 -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/3146935cca2cf625311fda3df6860aef -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/745310983881e2839797b3da1f56e4adc115f34ac932215546ee1bbc869baecea1be077b546c9a68dd0fddb89551dea19ff181c691892e572f86ada885da3bfc -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/7c3ba44af8f1fecd3c370614fda602dd -libLLVM.v15.0.7+8.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/ddf418ea2dbfbb61ce4c977e0b0ae29137e378458fab37b5fc18db8a7d196663d7012e28161efbaaa75824ad0bd0c16841625349d89c8e3f7738d973e760cd27 -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/b7985ca8dc4eb2b89239ce6e0083db89 -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/babb426085a330434ffca6e55d1b237b780754845e4699621ef581b2cdbd803c0e0a0b3f91693f76848ba2cf1f177b6c342ebbd459d9926d6a4e0b7f4184de18 -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/cc912aceddbfdd5278f302dff233aacc -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/fbdd72353b76cab6c82af9e19e7f2abc7b5e19c634abb66d25cda0276c79e4c75f14eeaa8de6f03197a3b69cab130f0693bc3b17f144bed476a2e14268f2a5cb -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/e9bc3f99cf16ad7e37b6f8692610c0c5 -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/b7e0b1b1804d3641e8763eb35d08e1f9c9c2bdbcf9d129d1fae5835067d5b6ccda1acf0888b686c5e8a268b14fa455f52451e3cb6909446c9d053d3d1d261fb2 -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/ba454f84baa9f746de63e22714c740f2 -libLLVM.v15.0.7+8.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/2b61a1a6693c7899fd9af8630c9eb45b54b6c84519e50828d80a6f7eb88dfb3df6ee4d473f8e30ca11a0e1db2c096711164dc08cc61707277f7beb1902930f43 -libLLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/1ebc12781d75fa94145bb6c7a2ba235e -libLLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/43898f026a1f43ef035999654555afe4410425f2b6f56341100115e2a66825843fe93777c10ba052d60562a64a1150095fca4181a1c09f0820baa83736611627 -libLLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/7259f7a15909745b0176c7bec2d5bb8e -libLLVM.v15.0.7+8.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/fcf10dcc6bc0bfd4389859db1ab6a827fcc15368cbd42f1f50a2b7a3e752c4cd2676e65fcd69bf0eb42579293d303d770e06c6d10150ff17d7fdd6fc71d0155f -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/9ebab83ab97a6cfef7d745e799ce39bd -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/8892e553f08507b07b62e4c7859f3499a47e3eed5fe773e61c9c2831150fd49a06fc25e164b7053873c97830755d478c5527d23598ce674eb2e13246a64d00a8 -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/11915b49d288c71d78bab5c114bbd5dc -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/0b38cca2f9492dabbd49a411660fea39e70c53ba105db7f8eb6a616d108ab8dee4b015b79a2cb34e75b91af5941d5f9acb2630f233ef9edd4f99118302a68537 -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/e2de9f36a69100387209f59f99bd54a8 -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/641aa82ab684656ae82f12b19bf3d090080d62d3c933525f23607a85da0ed1f1dbdf02c30120994e52a447abf86552fb2a3e0ab70f718c4baafc9bc8b01fb17f -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/596a32ac2f4a2e4aedcef09cea7541a6 -libLLVM.v15.0.7+8.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/2ad659ebede4fbd2b09d487bd4efdf050988da7267797c4b884387f35c5e02cc0dbf93f56e51316dbdca3e8ffd6a7d9120c2cf10387fd1fead4a05d81366d83e -llvm-julia-15.0.7-7.tar.gz/md5/20678ba77ec517e16df67b6683fe1fd6 -llvm-julia-15.0.7-7.tar.gz/sha512/dd18b1d1817d7bff23bbd9598eb691e2d65ef679666e7219e4137223e739b62d5f4ef11d8c42474438b954026e0c3f0c5e350d3df23d8b4b294765d8d7788802 +libLLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/119e6752a47c65f2eb26becb92b0d1b6 +libLLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/f83e594967feaf6b5aea1b81db28f36386f2c33b28c63454123c4563e235526cad50446d153d0cafc41a39252fb13c62b9a9d9489429bb263e61d9ba54712a62 +libLLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/md5/946e446b392d33f6c42a3d6f8d854079 +libLLVM.v15.0.7+9.aarch64-apple-darwin-llvm_version+15.tar.gz/sha512/f5fd00286b65101b644837fae104c24cd8c99c79aa5b952c0fb3855a25377626295cd839cdecab7b839e3a75d5b2b852fc3a886c71fe0f5f4ab78ad348609c45 +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/55f9c6f7a51f5310da2d0205ce181c26 +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/89cdb450885dbb4f511ffe3939afbee607bcc2e8568e5ce6ac34bb36431db3c7c8ca3e9d59a27e2ccccddda13ecc3c5d5ffe7a19ae63f909718a731f5c27067b +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/8600b413e657ad169370d2e07d168aa7 +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/ca35d96928ae93ed36ab8274c67e5e8a9a971d2b11a3363313f3160579871856cf5c92a8246edc404e10bd44a21c1dbe66941995d87af5efe34b10882aae1df1 +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/504427a6bf7adf4178891c37a2cbee09 +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/3a4e40d3ce7ab47987ef604275759cadc171a168638781e74396e2cd48bb6a8a8bc0983ccbe099c2bbb43584d405df63a214d5426830863db773487733688121 +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/75dbde809013a444c1d9db1556b7e14b +libLLVM.v15.0.7+9.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/37a72c7dc0333fb6be67023447e82a8f98ec3b74c64a3f08b5b047feb585fa8f35cf397ab3db3eef512ff0a7ace6556c3c4e685df7ff22dd095515b77b3ef8ca +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/e92dafe7f987c44f2a860db03bb6df05 +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/31bc73561d6ee24bf8eaad8b7cbbcf1a3713814058a3db47624a05ce572e407241cb7857a851a4f12f93be0df4f2341102e0d68c8371505fd36ce19069e48918 +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/6b978e264a0a1131907c817d4f259534 +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/bdb4976a3d4fdde5885f930a411da895600ef1ef76c8c0f5d6929c9495062600dc422e87f7fea4af12e169f508740fb0701df50ba7e9c4c1c332387a9b7d4c6d +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/ab22578145e661333b4e4d7369e5ff7f +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/4598533c15224a1543fcdd84edbf11ef9611dc4cb22e16f4bef66ffec65e5a9b5a0993bea9bfe25c7af4bb0447af0f31ec82b1eca01cd96d8065bf82007e58b2 +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/9ceb4fc78861ca7d687646350a3d18b8 +libLLVM.v15.0.7+9.aarch64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/158f0bf1cf555e5c0b79c1bb8ab9cf8a2c434236f5795c70e9c08c2b5c01da4d88a59cf61a1215f40e4046d3875dcfe2fe89c56e9f6ca7088d10c1fc044de22c +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/0172fc1ff16552478bf00bbb480b08a2 +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/710d392dbd708208eb0e2149d87603e2aa4fa99722d50fef2e2ed8c9ba5fbb3b4dff3208a1ee390635eb885aab91a7b228083424a9ca320578b25d8e391d0a8a +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/c9583dd988c03827d08afb42342a4893 +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/0954a6c774befd092d59ae228b7a48cfc509fc89e215e79958f460ab2dadc5f7fbd46e00d9c3f0032ab96cd0300aab4f6cdb92488cdf8619513f82cf56f512a0 +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/5fbe9ce9d7cad44dc57757ce537e098f +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/b275a24bcc051c25fe57f042518749afae00df2ce61491a70227a7e2e5fdd793e069597a1d19d148462149e3bc0e7d7f5d6b578187dae4e791ae70fbe063e14c +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/42b7d81dc8084eeb385c22cd4b43e34b +libLLVM.v15.0.7+9.armv6l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/75ca00734dd52ef00f3603bb8b89d9ffbb45ff145d2557c460dc856802d814e3ff8e02af1179a18ee32edb0552ccd4fcb44cf5b23b682af164969433916c2d47 +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/a138c265db068e53752ed917ef9afeab +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/b66106cc2d348b262d097158ecc0a5ce604460b2de6e1f2c04c24f30a3e7a4103a2c775f0ac1b9f9ba2ad23c8b9a472d0dcb5a266222149deb6fe77611a245a1 +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/d1e2420d0c90443a2e9ed805e7f36bdd +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/641f40c2bc485a09f69c38afed880987562549342a71d8626daceb444d76d71d2ec7bcdfd23e870cc9e216791be223599d29e885856a8be4f394b59750b23a0b +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/03e52f6937072c2bb6ec1fe6e62e6181 +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/30399baaaf445c45b70f0fd4c95b7d9b63b0f0b2213d4817913b2ea28c35cd1906c398c8cfd9fffde077fcebc43445d6b5bd992ecbe9859e74a3122318ef3628 +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/12301c5764dd64d924ef617547dc9b8a +libLLVM.v15.0.7+9.armv6l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/3d11ba6018f67712483cbb9c52e686d69000b39964e908e13e6695832eb1e6e9f8c764669cbe487fc8a9ef11b4619bddbc9da42210f43e4f60984813cd81b1b7 +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/06c8c80bff9e49ee05f8024f527b925a +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/671c47b9f03856641eb0e24cb4d08fdfc2993bc739d5cf11857b0bbad517fab490b2259501d2efad84efd295ad7bcdfa9d0b4991425f7bfc2538b13f7958b556 +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/md5/a7d88848fd4ef9dff68aa4f1294a272a +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx03-llvm_version+15.tar.gz/sha512/25e243b38a1a5bcc1c01f9fcb69d7fa08ded91856de0c626bad22d472c3af77c3ac91d4dbbfef198fb90d21a7cc100eb461f66a21764adbd867fcb889121aa9b +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/c6cc7b104317544312531f2acda37610 +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/e732b0af56e5c0efb9bf15996bb398ba6ed49bd5a97517b742d54cd16415830e6bbdf4427ea6e07f316c720a31a279220e72e360128cbcd867520a8322690594 +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/md5/2318d50e1541d7d319ee23ce1eed268d +libLLVM.v15.0.7+9.armv7l-linux-gnueabihf-cxx11-llvm_version+15.tar.gz/sha512/3ff0a6d43cf26af45e51d966a4212cd3a7b4127cb7dfe6742ead34c489f1a6487c06721591db4e26848b0d42abd49b0a970231f2a1d655c46686f163c7fd3c0a +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/md5/560bdfdfef0fcab6cb71eefe82412f30 +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.asserts.tar.gz/sha512/8d1960d83544e4f6c1a421f4f74f17cf05503c52cd3b5bc2f3dd544aeb7b533af812e1ec1dc113a68396ea66adba5ce01019c97507f8115ec087c95456cb8bb8 +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/md5/b4765514e48975aa73a9694f3bdca5e5 +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx03-llvm_version+15.tar.gz/sha512/085aa81d1542b50b247120b08866775ce3a13dd23e9b649282c902bd2ba8d4581a4571c09d241340a29bc8413a7e749c5f37c1063af4f5b450cf5b271be1e24e +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/md5/78000c16b21ae1b67610976a26ef201f +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.asserts.tar.gz/sha512/1a053a22f183b7b04b4ce8fbcc24393612ace7479a60b73f2a58f54b1ae8632fb9679daf10662347d17ece27d4f64be10d28a6b7f21cedb1131c174754e77660 +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/md5/12ec163e43b1247a37b3edd5662b0317 +libLLVM.v15.0.7+9.armv7l-linux-musleabihf-cxx11-llvm_version+15.tar.gz/sha512/44a8a3a68f63a2858a190d2e6ab80952d233f1c86adcb9e6acb23a7f7719ac710a3aadc89053433baf33b435db191b67132f52ccb1ac0f731aa5088400f7a7b4 +libLLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/41bda0ee2f4bc2fbd5b9ee19648249c6 +libLLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/df36876b425dc1ad4639171c61bb82ad0f13405e192cff4d015dd98a2360970ccf096a865c0e8ffc94db829f928ce6323fe54c2db58532b5417ff36da69a1023 +libLLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/335e0c093c6df8d38a0543c5ac7da915 +libLLVM.v15.0.7+9.i686-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/384bb24b12d99896ee617bb54c5a76714df667b41de39dc83bbcfd7e94c8aa2e0e8af9f82570c828f395cf363fbb7b8989413618b0222da373bbeb37a60925ac +libLLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/6255fd402da3174d3256558b719b0ed2 +libLLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/df45f55a4c9f0b235dd741e85e7c353300fdc3dc7b0746b1627b2925d14aba8420ffd669529441b8decd8227dca7821e3efb7c5311368cafd2ef1e1c985a5546 +libLLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/c07fd8ab5524bdc8480bc3255b36b44f +libLLVM.v15.0.7+9.i686-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/015cdc9f78ad1caa90d22abe46314e7ef685ef6da3fc842de5dc641edecb6e41a1329ecd6a9b1450ab50649318320ec0960ae5baad1724c5d938ed97e6fcda17 +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/f7f778128d4bf9982a4b2d8fadece45f +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/622eabb90a99c34b02784303cb09a9ae2670d839f9ca0307c7034abe7e03ac2dc637eb60c084f4cc59e88b184a9dc174493e812b40a4935b05dcab8b4ae23f1e +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/899150cd028d99652e2e390c9afefff3 +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/834d8ce87a58e876c5589ab05389ddfb7dd898cc90a2a8138f31d5bb65d01821a4da4ad70b747b506cca6119cdf70146aa7448307655681aeb7e58012dabdc2f +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/152a7b0c440560edfe0e20a5c8eedb15 +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/344f2ecd173d198d3bfaa7400f46de57822219345234157ae9c901d929e0a32628339989eafeaff716763d26b4c66ca9cb5f55696fa3ad9f236d537f21e26b0b +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/3755794024285e1a3e9dd716e5a0c47b +libLLVM.v15.0.7+9.i686-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/245c5cfce819dcc128925bd40ebc3b39eb2b9760a400c3604168a13434ab6ca96e9067df19acaabc031205d59996e677bc1d804be3c63e7d9a0a88fee6e4d518 +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/fedb5c68002a0827e4172ba59ebd3efb +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/4137e0254c8176a9e5ac1d36160a27c1a0d67ec1c21970e115cdea831211ae1258fdfa8f8f7382bfccd08b467777421458e74274979f1e1c2c4c163cb9e51d06 +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/b6ce8039dd59ade65a12087fc9a507ea +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/06a351fa2e1dfe1d762908bfbc9c350b15758be77766b8c2fbe9d3208f4385304fce31051966c3073e3cb8aba7a1c15aac12b725fa8b552fb30ac3ebe69f7379 +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/fb15051e20aa736d745c75af41e1ac72 +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/4bdb341710510e07a2a7151f2f612229269b12d6bd6b3f61d9ecf5ae02001bee1e24cf0fa29ca36f105f5b003544b95c47858da59c201e49ba3a067dad7abc7d +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/4fcb319068cd0dce43619eee69c3ae04 +libLLVM.v15.0.7+9.powerpc64le-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/f576e9d47a6b12026d7b765b28fbe8fc88a64fa0d4d4b76640cfcc25648ba1894d0bed31a1c23c3a2086d9fc9db7e17c944c9f22cca3d8142656b12cabe1556d +libLLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/md5/b4a3dcd7838f363c67ffccf926e2607d +libLLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.asserts.tar.gz/sha512/1b72a72de7a14a15a9748820c44f75f3ec6b0ef59f25e9a0a3416205014076f4503781a8738770af2fa3b02ca8445be09bd873bf1d37fb56ad92ba690624f4d0 +libLLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/md5/3af7ad02cfedb3ae47b3bc9748abe5d0 +libLLVM.v15.0.7+9.x86_64-apple-darwin-llvm_version+15.tar.gz/sha512/18e6a2bbafa7f7381b5a063db3769aedf952f21bb97e6d26a7b55fced146cfd34ab16d300ca9d42be8d703e4e91426b21174f119fb0348179651d1689ff07c7b +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/md5/f6f5e31aa1047ab6afce0ffcac90ac14 +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.asserts.tar.gz/sha512/d4235fb8858d5f696e0ac6252d54e7ae54abe18336f6e962631c83feeb6a1c1c87cb3a65900dc4d41a2f2ecf4eaf63a914392c151d26003aa5ae6b1858d417c6 +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/md5/34a53675cb20a6c2114091dc4b500202 +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/ec81f180f3241c4936a0374b5eee9e1336bb16dd69b403c9c8a4d2bec6207a197a55d0d6b487b7ec694d18db09267f7cbee4efb09b13d32d57927381b5dd09dd +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/5a392fd27d729a834fff3536dd3a11b0 +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/152a79331508858070bfa62444c45a66eba488522739369886c277cf597e3b7e5d24b74b371b87e3c92383aea3ffa259a18f6d216f27388babf5baf46a3bf352 +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/d275153e2738e0517d42e9dd1594c1f5 +libLLVM.v15.0.7+9.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/16362cc75e79e7f19819a2d6b46af96d4ce152bf3a733eb5b573932ad09b3c46700036839978e5f968e14d7c6e5e96b53b051bbe0e1f644421bf8cb1078d3010 +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/8f6f6f101db3da2a422239db48d80228 +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/82950bb2b6e3f4cf4832c73df72753246476ae0c923fe2d1c0abfaee52bdf47dd307e478594163a50633c248d7b86b64ff43a6fd0601616425b0d44eaae1cf55 +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/dcf7c1df5048db10ff97ac0639a4e567 +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx03-llvm_version+15.tar.gz/sha512/99bfab8c2f954c889b63623e9426bd6e378b51a3bd414c6ce844e8464f026ca21de2e6cdfa313e678b6bf93a62af39b39bfeeb4154e7362604dd5216323fae4e +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/md5/4475f2fe1521a0cc8213a7ef53052a3b +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.asserts.tar.gz/sha512/82a0f70ffa92e7f43d8c07a0c64dc5ef0d628b3150c285d87926e49bf66017f1ca4cd8a372b1c9842154c8e47db933e95305626501f481d2b837119e843cea7a +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/md5/0f13558877d79581c2d302fc2480fd2b +libLLVM.v15.0.7+9.x86_64-linux-musl-cxx11-llvm_version+15.tar.gz/sha512/cc8343fabdc2569982b65c55dca33c290b3d72ebcd7126006fd13f1b216d2803c502f6a5e9839c69d22e642031db711b2dca23ccf1ca3b7c481c55dda1159630 +libLLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/md5/854190a61038ca020a18ef5fa5cdd0a1 +libLLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.asserts.tar.gz/sha512/f39ec16b2e8aef564b8cc7e523ab2b38de7f18705915140f1769e003bab3871259c8ba3403c0896b3cd78b2cf30bcf2c2d2f5f649329dd35c0e4fc706cee203e +libLLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/md5/3c58b4d61518cf6a53b1035f4fc9b13e +libLLVM.v15.0.7+9.x86_64-unknown-freebsd-llvm_version+15.tar.gz/sha512/b706427edd2fe21ca527da587f1cac37b0e36857c6006b1263115bf3e6eb9bc4524b7afd68aebad42d28eafb22fde8c373c460e31a123e8ae4cde3b2fb249d7b +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/md5/1d5d1f85a7ad52636b550fd0c449130a +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.asserts.tar.gz/sha512/4bb34be432bcb752561068b9b99756910bcce1ebc91a54761fc67ce08536e807d61cfa238a0df02026e1a4131cfb2feb1137f449fb16aac76eb4697befd94a6c +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/md5/b39be2b3fd55154523d6cefc9eec82c9 +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx03-llvm_version+15.tar.gz/sha512/ee38ba17a790caeb3997e872eaea2dc81a2e9cfbb70caf900c65052be859ce798b008d545b1cc3c0025d880e069fe4287a37862f1920c4e0c7abbd11a811a080 +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/md5/4197b06616c8a56ea25dd16fc5cb3b68 +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.asserts.tar.gz/sha512/cf2a1868f0b68b76b00bf97bf9ea89f5054ab89e5177b112b8c958ec1c9545bc6ed912c3b4b5038368cd6447ec295d3ae0fe6b9abc4f53c91239644a3bd1a95c +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/md5/608053656f194352fb58dd00a3168a41 +libLLVM.v15.0.7+9.x86_64-w64-mingw32-cxx11-llvm_version+15.tar.gz/sha512/8f4688db666fd2342f57887aeb64b85cf000321c6cd9d27f9a685d61136a27055cff426d3eda1a8beaafb8a178250ba0e4736f435baf3e6f1cf31e20720a3a8d +llvm-julia-15.0.7-9.tar.gz/md5/930ebd05cf54da65ae2142aa2833e2be +llvm-julia-15.0.7-9.tar.gz/sha512/f9f4d2e28379470f7b7785be2782f8295aaee2c1587d7678fa1f43747a1dabff6b065e4ce778def2ebf6471595b6c072a9650b4a61d019e34fde8a1fb7bdee5a llvmunwind-12.0.1.tar.xz/md5/4ec327cee517fdb1f6a20e83748e2c7b llvmunwind-12.0.1.tar.xz/sha512/847b6ba03010a43f4fdbfdc49bf16d18fd18474d01584712e651b11191814bf7c1cf53475021d9ee447ed78413202b4ed97973d7bdd851d3e49f8d06f55a7af4 diff --git a/deps/clang.version b/deps/clang.version index 4c5f1ecc02062..18e40bbd2c434 100644 --- a/deps/clang.version +++ b/deps/clang.version @@ -1,4 +1,4 @@ ## jll artifact # Clang (paired with LLVM, only here as a JLL download) CLANG_JLL_NAME := Clang -CLANG_JLL_VER := 15.0.7+8 +CLANG_JLL_VER := 15.0.7+9 diff --git a/deps/lld.version b/deps/lld.version index 64e8aca55fe84..106ffc05fecf3 100644 --- a/deps/lld.version +++ b/deps/lld.version @@ -1,3 +1,3 @@ ## jll artifact LLD_JLL_NAME := LLD -LLD_JLL_VER := 15.0.7+8 +LLD_JLL_VER := 15.0.7+9 diff --git a/deps/llvm-tools.version b/deps/llvm-tools.version index da7a4ec18bdcc..d7ae53fca1fc1 100644 --- a/deps/llvm-tools.version +++ b/deps/llvm-tools.version @@ -1,5 +1,5 @@ ## jll artifact # LLVM_tools (downloads LLVM_jll to get things like `lit` and `opt`) LLVM_TOOLS_JLL_NAME := LLVM -LLVM_TOOLS_JLL_VER := 15.0.7+8 -LLVM_TOOLS_ASSERT_JLL_VER := 15.0.7+8 +LLVM_TOOLS_JLL_VER := 15.0.7+9 +LLVM_TOOLS_ASSERT_JLL_VER := 15.0.7+9 diff --git a/deps/llvm.version b/deps/llvm.version index 52a3a11e1c145..ba0b900233bfb 100644 --- a/deps/llvm.version +++ b/deps/llvm.version @@ -2,14 +2,14 @@ ## jll artifact LLVM_JLL_NAME := libLLVM -LLVM_ASSERT_JLL_VER := 15.0.7+8 +LLVM_ASSERT_JLL_VER := 15.0.7+9 ## source build # Version number of LLVM LLVM_VER := 15.0.7 # Git branch name in `LLVM_GIT_URL` repository -LLVM_BRANCH=julia-15.0.7-7 +LLVM_BRANCH=julia-15.0.7-9 # Git ref in `LLVM_GIT_URL` repository -LLVM_SHA1=julia-15.0.7-7 +LLVM_SHA1=julia-15.0.7-9 ## Following options are used to automatically fetch patchset from Julia's fork. This is ## useful if you want to build an external LLVM while still applying Julia's patches. @@ -20,4 +20,4 @@ LLVM_JULIA_DIFF_GITHUB_REPO := https://github.com/llvm/llvm-project # Base GitHub ref for generating the diff. LLVM_BASE_REF := llvm:llvmorg-15.0.7 # Julia fork's GitHub ref for generating the diff. -LLVM_JULIA_REF := JuliaLang:julia-15.0.7-7 +LLVM_JULIA_REF := JuliaLang:julia-15.0.7-9 diff --git a/stdlib/LLD_jll/Project.toml b/stdlib/LLD_jll/Project.toml index 0a0cd4aa6924f..30d0c6625a28e 100644 --- a/stdlib/LLD_jll/Project.toml +++ b/stdlib/LLD_jll/Project.toml @@ -1,6 +1,6 @@ name = "LLD_jll" uuid = "d55e3150-da41-5e91-b323-ecfd1eec6109" -version = "15.0.7+8" +version = "15.0.7+9" [deps] Zlib_jll = "83775a58-1f1d-513f-b197-d71354ab007a" diff --git a/stdlib/libLLVM_jll/Project.toml b/stdlib/libLLVM_jll/Project.toml index b0bd480fc99fc..a8e628438e170 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 = "15.0.7+8" +version = "15.0.7+9" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" From cba88c10b815f64853b214a87ea6b7c4cd1bf50a Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Sat, 28 Oct 2023 11:52:34 -0400 Subject: [PATCH 42/45] Backport "Fix Expr(:loopinfo) codegen" (#51883) Backport #50663 to 1.10 --- src/codegen.cpp | 45 ++-- src/jl_exported_funcs.inc | 2 +- src/llvm-julia-passes.inc | 2 +- src/llvm-simdloop.cpp | 242 +++++++----------- src/passes.h | 10 +- src/pipeline.cpp | 2 +- test/llvmpasses/julia-simdloop-memoryssa.ll | 55 ++++ .../{simdloop.ll => julia-simdloop.ll} | 29 +-- test/llvmpasses/loopinfo.jl | 22 +- test/llvmpasses/parsing.ll | 2 +- 10 files changed, 209 insertions(+), 202 deletions(-) create mode 100644 test/llvmpasses/julia-simdloop-memoryssa.ll rename test/llvmpasses/{simdloop.ll => julia-simdloop.ll} (75%) diff --git a/src/codegen.cpp b/src/codegen.cpp index 384ee5caf9708..d28971b9a4caf 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -981,14 +981,7 @@ static const auto jl_typeof_func = new JuliaFunction<>{ Attributes(C, {Attribute::NonNull}), None); }, }; -static const auto jl_loopinfo_marker_func = new JuliaFunction<>{ - "julia.loopinfo_marker", - [](LLVMContext &C) { return FunctionType::get(getVoidTy(C), false); }, - [](LLVMContext &C) { return AttributeList::get(C, - Attributes(C, {Attribute::ReadOnly, Attribute::NoRecurse, Attribute::InaccessibleMemOnly}), - AttributeSet(), - None); }, -}; + static const auto jl_write_barrier_func = new JuliaFunction<>{ "julia.write_barrier", [](LLVMContext &C) { return FunctionType::get(getVoidTy(C), @@ -1600,6 +1593,7 @@ class jl_codectx_t { std::map &global_targets; std::map, GlobalVariable*> &external_calls; Function *f = NULL; + MDNode* LoopID = NULL; // local var info. globals are not in here. std::vector slots; std::map phic_slots; @@ -5766,16 +5760,22 @@ static jl_cgval_t emit_expr(jl_codectx_t &ctx, jl_value_t *expr, ssize_t ssaidx_ } else if (head == jl_loopinfo_sym) { // parse Expr(:loopinfo, "julia.simdloop", ("llvm.loop.vectorize.width", 4)) + // to LLVM LoopID SmallVector MDs; + + // Reserve first location for self reference to the LoopID metadata node. + TempMDTuple TempNode = MDNode::getTemporary(ctx.builder.getContext(), None); + MDs.push_back(TempNode.get()); + for (int i = 0, ie = nargs; i < ie; ++i) { Metadata *MD = to_md_tree(args[i], ctx.builder.getContext()); if (MD) MDs.push_back(MD); } - MDNode* MD = MDNode::get(ctx.builder.getContext(), MDs); - CallInst *I = ctx.builder.CreateCall(prepare_call(jl_loopinfo_marker_func)); - I->setMetadata("julia.loopinfo", MD); + ctx.LoopID = MDNode::getDistinct(ctx.builder.getContext(), MDs); + // Replace the temporary node with a self-reference. + ctx.LoopID->replaceOperandWith(0, ctx.LoopID); return jl_cgval_t(); } else if (head == jl_leave_sym || head == jl_coverageeffect_sym @@ -8045,6 +8045,7 @@ static jl_llvm_functions_t std::map BB; std::map come_from_bb; int cursor = 0; + int current_label = 0; auto find_next_stmt = [&] (int seq_next) { // new style ir is always in dominance order, but frontend IR might not be // `seq_next` is the next statement we want to emit @@ -8061,6 +8062,7 @@ static jl_llvm_functions_t workstack.pop_back(); auto nextbb = BB.find(item + 1); if (nextbb == BB.end()) { + // Not a BB cursor = item; return; } @@ -8071,8 +8073,10 @@ static jl_llvm_functions_t seq_next = -1; // if this BB is non-empty, we've visited it before so skip it if (!nextbb->second->getTerminator()) { + // New BB ctx.builder.SetInsertPoint(nextbb->second); cursor = item; + current_label = item; return; } } @@ -8319,7 +8323,12 @@ static jl_llvm_functions_t if (jl_is_gotonode(stmt)) { int lname = jl_gotonode_label(stmt); come_from_bb[cursor+1] = ctx.builder.GetInsertBlock(); - ctx.builder.CreateBr(BB[lname]); + auto br = ctx.builder.CreateBr(BB[lname]); + // Check if backwards branch + if (ctx.LoopID && lname <= current_label) { + br->setMetadata(LLVMContext::MD_loop, ctx.LoopID); + ctx.LoopID = NULL; + } find_next_stmt(lname - 1); continue; } @@ -8337,10 +8346,17 @@ static jl_llvm_functions_t workstack.push_back(lname - 1); BasicBlock *ifnot = BB[lname]; BasicBlock *ifso = BB[cursor+2]; + Instruction *br; if (ifnot == ifso) - ctx.builder.CreateBr(ifnot); + br = ctx.builder.CreateBr(ifnot); else - ctx.builder.CreateCondBr(isfalse, ifnot, ifso); + br = ctx.builder.CreateCondBr(isfalse, ifnot, ifso); + + // Check if backwards branch + if (ctx.LoopID && lname <= current_label) { + br->setMetadata(LLVMContext::MD_loop, ctx.LoopID); + ctx.LoopID = NULL; + } find_next_stmt(cursor + 1); continue; } @@ -9088,7 +9104,6 @@ static void init_jit_functions(void) add_named_global(jl_object_id__func, &jl_object_id_); add_named_global(jl_alloc_obj_func, (void*)NULL); add_named_global(jl_newbits_func, (void*)jl_new_bits); - add_named_global(jl_loopinfo_marker_func, (void*)NULL); add_named_global(jl_typeof_func, (void*)NULL); add_named_global(jl_write_barrier_func, (void*)NULL); add_named_global(jldlsym_func, &jl_load_and_lookup); diff --git a/src/jl_exported_funcs.inc b/src/jl_exported_funcs.inc index a7ffedd5cba10..745905b113622 100644 --- a/src/jl_exported_funcs.inc +++ b/src/jl_exported_funcs.inc @@ -580,7 +580,6 @@ YY(LLVMExtraAddCPUFeaturesPass) \ YY(LLVMExtraMPMAddCPUFeaturesPass) \ YY(LLVMExtraMPMAddRemoveNIPass) \ - YY(LLVMExtraMPMAddLowerSIMDLoopPass) \ YY(LLVMExtraMPMAddFinalLowerGCPass) \ YY(LLVMExtraMPMAddMultiVersioningPass) \ YY(LLVMExtraMPMAddRemoveJuliaAddrspacesPass) \ @@ -594,6 +593,7 @@ YY(LLVMExtraFPMAddLowerExcHandlersPass) \ YY(LLVMExtraFPMAddGCInvariantVerifierPass) \ YY(LLVMExtraLPMAddJuliaLICMPass) \ + YY(LLVMExtraLPMAddLowerSIMDLoopPass) \ YY(JLJITGetLLVMOrcExecutionSession) \ YY(JLJITGetJuliaOJIT) \ YY(JLJITGetExternalJITDylib) \ diff --git a/src/llvm-julia-passes.inc b/src/llvm-julia-passes.inc index 39030d60a44fc..d12370b1852c7 100644 --- a/src/llvm-julia-passes.inc +++ b/src/llvm-julia-passes.inc @@ -2,7 +2,6 @@ #ifdef MODULE_PASS MODULE_PASS("CPUFeatures", CPUFeaturesPass, CPUFeaturesPass()) MODULE_PASS("RemoveNI", RemoveNIPass, RemoveNIPass()) -MODULE_PASS("LowerSIMDLoop", LowerSIMDLoopPass, LowerSIMDLoopPass()) MODULE_PASS("FinalLowerGC", FinalLowerGCPass, FinalLowerGCPass()) MODULE_PASS("JuliaMultiVersioning", MultiVersioningPass, MultiVersioningPass()) MODULE_PASS("RemoveJuliaAddrspaces", RemoveJuliaAddrspacesPass, RemoveJuliaAddrspacesPass()) @@ -24,4 +23,5 @@ FUNCTION_PASS("GCInvariantVerifier", GCInvariantVerifierPass, GCInvariantVerifie //Loop passes #ifdef LOOP_PASS LOOP_PASS("JuliaLICM", JuliaLICMPass, JuliaLICMPass()) +LOOP_PASS("LowerSIMDLoop", LowerSIMDLoopPass, LowerSIMDLoopPass()) #endif diff --git a/src/llvm-simdloop.cpp b/src/llvm-simdloop.cpp index 21e2ec574d650..ad17e71aff3f5 100644 --- a/src/llvm-simdloop.cpp +++ b/src/llvm-simdloop.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -73,7 +74,7 @@ static unsigned getReduceOpcode(Instruction *J, Instruction *operand) JL_NOTSAFE /// If Phi is part of a reduction cycle of FAdd, FSub, FMul or FDiv, /// mark the ops as permitting reassociation/commuting. /// As of LLVM 4.0, FDiv is not handled by the loop vectorizer -static void enableUnsafeAlgebraIfReduction(PHINode *Phi, Loop *L, OptimizationRemarkEmitter &ORE) JL_NOTSAFEPOINT +static void enableUnsafeAlgebraIfReduction(PHINode *Phi, Loop &L, OptimizationRemarkEmitter &ORE, ScalarEvolution *SE) JL_NOTSAFEPOINT { typedef SmallVector chainVector; chainVector chain; @@ -84,7 +85,7 @@ static void enableUnsafeAlgebraIfReduction(PHINode *Phi, Loop *L, OptimizationRe // Find the user of instruction I that is within loop L. for (User *UI : I->users()) { /*}*/ Instruction *U = cast(UI); - if (L->contains(U)) { + if (L.contains(U)) { if (J) { LLVM_DEBUG(dbgs() << "LSL: not a reduction var because op has two internal uses: " << *I << "\n"); REMARK([&]() { @@ -151,128 +152,95 @@ static void enableUnsafeAlgebraIfReduction(PHINode *Phi, Loop *L, OptimizationRe }); (*K)->setHasAllowReassoc(true); (*K)->setHasAllowContract(true); + if (SE) + SE->forgetValue(*K); ++length; } ReductionChainLength += length; MaxChainLength.updateMax(length); } -static bool markLoopInfo(Module &M, Function *marker, function_ref GetLI) JL_NOTSAFEPOINT +static bool processLoop(Loop &L, OptimizationRemarkEmitter &ORE, ScalarEvolution *SE) JL_NOTSAFEPOINT { - bool Changed = false; - std::vector ToDelete; - for (User *U : marker->users()) { - ++TotalMarkedLoops; - Instruction *I = cast(U); - ToDelete.push_back(I); - - BasicBlock *B = I->getParent(); - OptimizationRemarkEmitter ORE(B->getParent()); - LoopInfo &LI = GetLI(*B->getParent()); - Loop *L = LI.getLoopFor(B); - if (!L) { - I->removeFromParent(); - continue; - } - - LLVM_DEBUG(dbgs() << "LSL: loopinfo marker found\n"); - bool simd = false; - bool ivdep = false; - SmallVector MDs; - - BasicBlock *Lh = L->getHeader(); - LLVM_DEBUG(dbgs() << "LSL: loop header: " << *Lh << "\n"); - - // Reserve first location for self reference to the LoopID metadata node. - TempMDTuple TempNode = MDNode::getTemporary(Lh->getContext(), None); - MDs.push_back(TempNode.get()); - - // Walk `julia.loopinfo` metadata and filter out `julia.simdloop` and `julia.ivdep` - if (I->hasMetadataOtherThanDebugLoc()) { - MDNode *JLMD= I->getMetadata("julia.loopinfo"); - if (JLMD) { - LLVM_DEBUG(dbgs() << "LSL: has julia.loopinfo metadata with " << JLMD->getNumOperands() <<" operands\n"); - for (unsigned i = 0, ie = JLMD->getNumOperands(); i < ie; ++i) { - Metadata *Op = JLMD->getOperand(i); - const MDString *S = dyn_cast(Op); - if (S) { - LLVM_DEBUG(dbgs() << "LSL: found " << S->getString() << "\n"); - if (S->getString().startswith("julia")) { - if (S->getString().equals("julia.simdloop")) - simd = true; - if (S->getString().equals("julia.ivdep")) - ivdep = true; - continue; - } - } - MDs.push_back(Op); - } - } - } - - LLVM_DEBUG(dbgs() << "LSL: simd: " << simd << " ivdep: " << ivdep << "\n"); - - REMARK([=]() { - return OptimizationRemarkAnalysis(DEBUG_TYPE, "Loop SIMD Flags", I->getDebugLoc(), B) - << "Loop marked for SIMD vectorization with flags { \"simd\": " << (simd ? "true" : "false") << ", \"ivdep\": " << (ivdep ? "true" : "false") << " }"; - }); - - MDNode *n = L->getLoopID(); - if (n) { - // Loop already has a LoopID so copy over Metadata - // original loop id is operand 0 - for (unsigned i = 1, ie = n->getNumOperands(); i < ie; ++i) { - Metadata *Op = n->getOperand(i); - MDs.push_back(Op); + MDNode *LoopID = L.getLoopID(); + if (!LoopID) + return false; + bool simd = false; + bool ivdep = false; + + BasicBlock *Lh = L.getHeader(); + LLVM_DEBUG(dbgs() << "LSL: loop header: " << *Lh << "\n"); + + SmallVector MDs(1); + // First Operand is self-reference + // Drop `julia.` prefixes + for (unsigned i = 1, ie = LoopID->getNumOperands(); i < ie; ++i) { + Metadata *Op = LoopID->getOperand(i); + const MDString *S = dyn_cast(Op); + if (S) { + LLVM_DEBUG(dbgs() << "LSL: found " << S->getString() << "\n"); + if (S->getString().startswith("julia")) { + if (S->getString().equals("julia.simdloop")) + simd = true; + if (S->getString().equals("julia.ivdep")) + ivdep = true; + continue; } } - MDNode *LoopID = MDNode::getDistinct(Lh->getContext(), MDs); - // Replace the temporary node with a self-reference. - LoopID->replaceOperandWith(0, LoopID); - L->setLoopID(LoopID); - assert(L->getLoopID()); + MDs.push_back(Op); + } + LLVM_DEBUG(dbgs() << "LSL: simd: " << simd << " ivdep: " << ivdep << "\n"); + if (!simd && !ivdep) + return false; + + ++TotalMarkedLoops; + LLVMContext &Context = L.getHeader()->getContext(); + LoopID = MDNode::get(Context, MDs); + // Set operand 0 to refer to the loop id itself + LoopID->replaceOperandWith(0, LoopID); + L.setLoopID(LoopID); + + REMARK([&]() { + return OptimizationRemarkAnalysis(DEBUG_TYPE, "Loop SIMD Flags", L.getStartLoc(), L.getHeader()) + << "Loop marked for SIMD vectorization with flags { \"simd\": " << (simd ? "true" : "false") << ", \"ivdep\": " << (ivdep ? "true" : "false") << " }"; + }); + + // If ivdep is true we assume that there is no memory dependency between loop iterations + // This is a fairly strong assumption and does often not hold true for generic code. + if (ivdep) { + ++IVDepLoops; MDNode *m = MDNode::get(Lh->getContext(), ArrayRef(LoopID)); - - // If ivdep is true we assume that there is no memory dependency between loop iterations - // This is a fairly strong assumption and does often not hold true for generic code. - if (ivdep) { - ++IVDepLoops; - // Mark memory references so that Loop::isAnnotatedParallel will return true for this loop. - for (BasicBlock *BB : L->blocks()) { - for (Instruction &I : *BB) { - if (I.mayReadOrWriteMemory()) { - ++IVDepInstructions; - I.setMetadata(LLVMContext::MD_mem_parallel_loop_access, m); - } - } + // Mark memory references so that Loop::isAnnotatedParallel will return true for this loop. + for (BasicBlock *BB : L.blocks()) { + for (Instruction &I : *BB) { + if (I.mayReadOrWriteMemory()) { + ++IVDepInstructions; + I.setMetadata(LLVMContext::MD_mem_parallel_loop_access, m); + } } - assert(L->isAnnotatedParallel()); } + assert(L.isAnnotatedParallel()); + } - if (simd) { - ++SimdLoops; - // Mark floating-point reductions as okay to reassociate/commute. - for (BasicBlock::iterator I = Lh->begin(), E = Lh->end(); I != E; ++I) { - if (PHINode *Phi = dyn_cast(I)) - enableUnsafeAlgebraIfReduction(Phi, L, ORE); - else - break; - } + if (simd) { + ++SimdLoops; + // Mark floating-point reductions as okay to reassociate/commute. + for (BasicBlock::iterator I = Lh->begin(), E = Lh->end(); I != E; ++I) { + if (PHINode *Phi = dyn_cast(I)) + enableUnsafeAlgebraIfReduction(Phi, L, ORE, SE); + else + break; } - I->removeFromParent(); - - Changed = true; + if (SE) + SE->forgetLoopDispositions(&L); } - for (Instruction *I : ToDelete) - I->deleteValue(); - marker->eraseFromParent(); #ifdef JL_VERIFY_PASSES - assert(!verifyModule(M, &errs())); + assert(!verifyFunction(*L.getHeader()->getParent(), &errs())); #endif - return Changed; + return true; } } // end anonymous namespace @@ -283,23 +251,19 @@ static bool markLoopInfo(Module &M, Function *marker, function_ref(M).getManager(); +PreservedAnalyses LowerSIMDLoopPass::run(Loop &L, LoopAnalysisManager &AM, + LoopStandardAnalysisResults &AR, LPMUpdater &U) - auto GetLI = [&FAM](Function &F) -> LoopInfo & { - return FAM.getResult(F); - }; - - if (markLoopInfo(M, loopinfo_marker, GetLI)) { - auto preserved = PreservedAnalyses::allInSet(); - preserved.preserve(); +{ + OptimizationRemarkEmitter ORE(L.getHeader()->getParent()); + if (processLoop(L, ORE, &AR.SE)) { +#ifdef JL_DEBUG_BUILD + if (AR.MSSA) + AR.MSSA->verifyMemorySSA(); +#endif + auto preserved = getLoopPassPreservedAnalyses(); + preserved.preserveSet(); + preserved.preserve(); return preserved; } @@ -307,37 +271,23 @@ PreservedAnalyses LowerSIMDLoopPass::run(Module &M, ModuleAnalysisManager &AM) } namespace { -class LowerSIMDLoopLegacy : public ModulePass { - //LowerSIMDLoop Impl; +class LowerSIMDLoopLegacy : public LoopPass { public: - static char ID; + static char ID; - LowerSIMDLoopLegacy() : ModulePass(ID) { - } - - bool runOnModule(Module &M) override { - bool Changed = false; - - Function *loopinfo_marker = M.getFunction("julia.loopinfo_marker"); - - auto GetLI = [this](Function &F) JL_NOTSAFEPOINT -> LoopInfo & { - return getAnalysis(F).getLoopInfo(); - }; - - if (loopinfo_marker) - Changed |= markLoopInfo(M, loopinfo_marker, GetLI); + LowerSIMDLoopLegacy() : LoopPass(ID) { + } - return Changed; - } + bool runOnLoop(Loop *L, LPPassManager &LPM) override + { + OptimizationRemarkEmitter ORE(L->getHeader()->getParent()); + return processLoop(*L, ORE, nullptr); + } - void getAnalysisUsage(AnalysisUsage &AU) const override - { - ModulePass::getAnalysisUsage(AU); - AU.addRequired(); - AU.addPreserved(); - AU.setPreservesCFG(); - } + void getAnalysisUsage(AnalysisUsage &AU) const override { + getLoopAnalysisUsage(AU); + } }; } // end anonymous namespace diff --git a/src/passes.h b/src/passes.h index 2bb33d6eec60d..030e5f1bfa677 100644 --- a/src/passes.h +++ b/src/passes.h @@ -57,11 +57,6 @@ struct RemoveNIPass : PassInfoMixin { static bool isRequired() { return true; } }; -struct LowerSIMDLoopPass : PassInfoMixin { - PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM) JL_NOTSAFEPOINT; - static bool isRequired() { return true; } -}; - struct FinalLowerGCPass : PassInfoMixin { PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM) JL_NOTSAFEPOINT; static bool isRequired() { return true; } @@ -103,6 +98,11 @@ struct JuliaLICMPass : PassInfoMixin { LoopStandardAnalysisResults &AR, LPMUpdater &U) JL_NOTSAFEPOINT; }; +struct LowerSIMDLoopPass : PassInfoMixin { + PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, + LoopStandardAnalysisResults &AR, LPMUpdater &U) JL_NOTSAFEPOINT; +}; + #define MODULE_MARKER_PASS(NAME) \ struct NAME##MarkerPass : PassInfoMixin { \ PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM) JL_NOTSAFEPOINT { return PreservedAnalyses::all(); } \ diff --git a/src/pipeline.cpp b/src/pipeline.cpp index 19cd085602594..88c2da5d729c9 100644 --- a/src/pipeline.cpp +++ b/src/pipeline.cpp @@ -402,6 +402,7 @@ static void buildLoopOptimizerPipeline(FunctionPassManager &FPM, PassBuilder *PB FPM.addPass(BeforeLoopOptimizationMarkerPass()); { LoopPassManager LPM; + LPM.addPass(LowerSIMDLoopPass()); if (O.getSpeedupLevel() >= 2) { LPM.addPass(LoopRotatePass()); } @@ -560,7 +561,6 @@ static void buildPipeline(ModulePassManager &MPM, PassBuilder *PB, OptimizationL buildEarlySimplificationPipeline(MPM, PB, O, options); MPM.addPass(AlwaysInlinerPass()); buildEarlyOptimizerPipeline(MPM, PB, O, options); - MPM.addPass(LowerSIMDLoopPass()); { FunctionPassManager FPM; buildLoopOptimizerPipeline(FPM, PB, O, options); diff --git a/test/llvmpasses/julia-simdloop-memoryssa.ll b/test/llvmpasses/julia-simdloop-memoryssa.ll new file mode 100644 index 0000000000000..0c1c4ac021996 --- /dev/null +++ b/test/llvmpasses/julia-simdloop-memoryssa.ll @@ -0,0 +1,55 @@ +; COM: NewPM-only test, tests that memoryssa is preserved correctly + +; RUN: opt -enable-new-pm=1 --opaque-pointers=0 --load-pass-plugin=libjulia-codegen%shlibext -passes='function(loop-mssa(LowerSIMDLoop),print)' -S -o /dev/null %s 2>&1 | FileCheck %s --check-prefixes=CHECK + +; RUN: opt -enable-new-pm=1 --opaque-pointers=1 --load-pass-plugin=libjulia-codegen%shlibext -passes='function(loop-mssa(LowerSIMDLoop),print)' -S -o /dev/null %s 2>&1 | FileCheck %s --check-prefixes=CHECK + +; CHECK-LABEL: MemorySSA for function: simd_test +; CHECK-LABEL: @simd_test( +define void @simd_test(double *%a, double *%b) { +; CHECK: top: +top: + br label %loop +; CHECK: loop: +loop: +; CHECK-NEXT: [[MPHI:[0-9]+]] = MemoryPhi({top,liveOnEntry},{loop,[[MSSA_USE:[0-9]+]]}) + %i = phi i64 [0, %top], [%nexti, %loop] + %aptr = getelementptr double, double *%a, i64 %i + %bptr = getelementptr double, double *%b, i64 %i +; CHECK: MemoryUse([[MPHI]]) MayAlias +; CHECK: llvm.mem.parallel_loop_access + %aval = load double, double *%aptr +; CHECK: MemoryUse([[MPHI]]) MayAlias + %bval = load double, double *%aptr + %cval = fadd double %aval, %bval +; CHECK: [[MSSA_USE]] = MemoryDef([[MPHI]]) + store double %cval, double *%bptr + %nexti = add i64 %i, 1 + %done = icmp sgt i64 %nexti, 500 + br i1 %done, label %loopdone, label %loop, !llvm.loop !1 +loopdone: + ret void +} + +; CHECK-LABEL: MemorySSA for function: simd_test_sub2 +; CHECK-LABEL: @simd_test_sub2( +define double @simd_test_sub2(double *%a) { +top: + br label %loop +loop: + %i = phi i64 [0, %top], [%nexti, %loop] + %v = phi double [0.000000e+00, %top], [%nextv, %loop] + %aptr = getelementptr double, double *%a, i64 %i +; CHECK: MemoryUse(liveOnEntry) MayAlias + %aval = load double, double *%aptr + %nextv = fsub double %v, %aval +; CHECK: fsub reassoc contract double %v, %aval + %nexti = add i64 %i, 1 + %done = icmp sgt i64 %nexti, 500 + br i1 %done, label %loopdone, label %loop, !llvm.loop !0 +loopdone: + ret double %nextv +} + +!0 = distinct !{!0, !"julia.simdloop"} +!1 = distinct !{!1, !"julia.simdloop", !"julia.ivdep"} \ No newline at end of file diff --git a/test/llvmpasses/simdloop.ll b/test/llvmpasses/julia-simdloop.ll similarity index 75% rename from test/llvmpasses/simdloop.ll rename to test/llvmpasses/julia-simdloop.ll index 929fbeea2c3f5..ad3e125893068 100644 --- a/test/llvmpasses/simdloop.ll +++ b/test/llvmpasses/julia-simdloop.ll @@ -1,12 +1,10 @@ ; This file is a part of Julia. License is MIT: https://julialang.org/license ; RUN: opt -enable-new-pm=0 --opaque-pointers=0 -load libjulia-codegen%shlibext -LowerSIMDLoop -S %s | FileCheck %s -; RUN: opt -enable-new-pm=1 --opaque-pointers=0 --load-pass-plugin=libjulia-codegen%shlibext -passes='LowerSIMDLoop' -S %s | FileCheck %s +; RUN: opt -enable-new-pm=1 --opaque-pointers=0 --load-pass-plugin=libjulia-codegen%shlibext -passes='loop(LowerSIMDLoop)' -S %s | FileCheck %s ; RUN: opt -enable-new-pm=0 --opaque-pointers=1 -load libjulia-codegen%shlibext -LowerSIMDLoop -S %s | FileCheck %s -; RUN: opt -enable-new-pm=1 --opaque-pointers=1 --load-pass-plugin=libjulia-codegen%shlibext -passes='LowerSIMDLoop' -S %s | FileCheck %s - -declare void @julia.loopinfo_marker() +; RUN: opt -enable-new-pm=1 --opaque-pointers=1 --load-pass-plugin=libjulia-codegen%shlibext -passes='loop(LowerSIMDLoop)' -S %s | FileCheck %s ; CHECK-LABEL: @simd_test( define void @simd_test(double *%a, double *%b) { @@ -22,9 +20,8 @@ loop: %cval = fadd double %aval, %bval store double %cval, double *%bptr %nexti = add i64 %i, 1 - call void @julia.loopinfo_marker(), !julia.loopinfo !3 %done = icmp sgt i64 %nexti, 500 - br i1 %done, label %loopdone, label %loop + br i1 %done, label %loopdone, label %loop, !llvm.loop !1 loopdone: ret void } @@ -42,9 +39,8 @@ loop: %nextv = fsub double %v, %aval ; CHECK: fsub reassoc contract double %v, %aval %nexti = add i64 %i, 1 - call void @julia.loopinfo_marker(), !julia.loopinfo !3 %done = icmp sgt i64 %nexti, 500 - br i1 %done, label %loopdone, label %loop + br i1 %done, label %loopdone, label %loop, !llvm.loop !1 loopdone: ret double %nextv } @@ -61,9 +57,8 @@ loop: %nextv = fsub double %v, %aval ; CHECK: fsub reassoc contract double %v, %aval %nexti = add i64 %i, 1 - call void @julia.loopinfo_marker(), !julia.loopinfo !2 %done = icmp sgt i64 %nexti, 500 - br i1 %done, label %loopdone, label %loop + br i1 %done, label %loopdone, label %loop, !llvm.loop !0 loopdone: ret double %nextv } @@ -82,20 +77,16 @@ for.body: ; preds = %for.body, %entry %arrayidx2 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv store i32 %add, i32* %arrayidx2, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - call void @julia.loopinfo_marker(), !julia.loopinfo !4 %exitcond = icmp eq i64 %indvars.iv.next, 48 ; CHECK: br {{.*}} !llvm.loop [[LOOP:![0-9]+]] - br i1 %exitcond, label %for.end, label %for.body + br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !2 for.end: ; preds = %for.body %1 = load i32, i32* %a, align 4 ret i32 %1 } -!1 = !{} -!2 = !{!"julia.simdloop"} -!3 = !{!"julia.simdloop", !"julia.ivdep"} -!4 = !{!"julia.simdloop", !"julia.ivdep", !5} -!5 = !{!"llvm.loop.vectorize.disable", i1 0} -; CHECK: [[LOOP]] = distinct !{[[LOOP]], [[LOOP_DISABLE:![0-9]+]]} -; CHECK-NEXT: [[LOOP_DISABLE]] = !{!"llvm.loop.vectorize.disable", i1 false} +!0 = distinct !{!0, !"julia.simdloop"} +!1 = distinct !{!1, !"julia.simdloop", !"julia.ivdep"} +!2 = distinct !{!2, !"julia.simdloop", !"julia.ivdep", !3} +!3 = !{!"llvm.loop.vectorize.disable", i1 0} diff --git a/test/llvmpasses/loopinfo.jl b/test/llvmpasses/loopinfo.jl index b9b388c73d0c5..559793b70b27f 100644 --- a/test/llvmpasses/loopinfo.jl +++ b/test/llvmpasses/loopinfo.jl @@ -3,7 +3,7 @@ # RUN: julia --startup-file=no %s %t && llvm-link -S %t/* -o %t/module.ll # RUN: cat %t/module.ll | FileCheck %s # RUN: cat %t/module.ll | opt -enable-new-pm=0 -load libjulia-codegen%shlibext -LowerSIMDLoop -S - | FileCheck %s -check-prefix=LOWER -# RUN: cat %t/module.ll | opt -enable-new-pm=1 --load-pass-plugin=libjulia-codegen%shlibext -passes='LowerSIMDLoop' -S - | FileCheck %s -check-prefix=LOWER +# RUN: cat %t/module.ll | opt -enable-new-pm=1 --load-pass-plugin=libjulia-codegen%shlibext -passes='loop(LowerSIMDLoop)' -S - | FileCheck %s -check-prefix=LOWER # RUN: julia --startup-file=no %s %t -O && llvm-link -S %t/* -o %t/module.ll # RUN: cat %t/module.ll | FileCheck %s -check-prefix=FINAL @@ -27,10 +27,9 @@ function simdf(X) acc = zero(eltype(X)) @simd for x in X acc += x -# CHECK: call void @julia.loopinfo_marker(), {{.*}}, !julia.loopinfo [[LOOPINFO:![0-9]+]] +# CHECK: br {{.*}}, !llvm.loop [[LOOPID:![0-9]+]] # LOWER-NOT: llvm.mem.parallel_loop_access # LOWER: fadd reassoc contract double -# LOWER-NOT: call void @julia.loopinfo_marker() # LOWER: br {{.*}}, !llvm.loop [[LOOPID:![0-9]+]] # FINAL: fadd reassoc contract <{{(vscale x )?}}{{[0-9]+}} x double> end @@ -43,9 +42,8 @@ function simdf2(X) acc = zero(eltype(X)) @simd ivdep for x in X acc += x -# CHECK: call void @julia.loopinfo_marker(), {{.*}}, !julia.loopinfo [[LOOPINFO2:![0-9]+]] +# CHECK: br {{.*}}, !llvm.loop [[LOOPID2:![0-9]+]] # LOWER: llvm.mem.parallel_loop_access -# LOWER-NOT: call void @julia.loopinfo_marker() # LOWER: fadd reassoc contract double # LOWER: br {{.*}}, !llvm.loop [[LOOPID2:![0-9]+]] end @@ -61,8 +59,7 @@ end for i in 1:N iteration(i) $(Expr(:loopinfo, (Symbol("llvm.loop.unroll.count"), 3))) -# CHECK: call void @julia.loopinfo_marker(), {{.*}}, !julia.loopinfo [[LOOPINFO3:![0-9]+]] -# LOWER-NOT: call void @julia.loopinfo_marker() +# CHECK: br {{.*}}, !llvm.loop [[LOOPID3:![0-9]+]] # LOWER: br {{.*}}, !llvm.loop [[LOOPID3:![0-9]+]] # FINAL: call {{(swiftcc )?}}void @j_iteration # FINAL: call {{(swiftcc )?}}void @j_iteration @@ -87,8 +84,7 @@ end iteration(i) end $(Expr(:loopinfo, (Symbol("llvm.loop.unroll.full"),))) -# CHECK: call void @julia.loopinfo_marker(), {{.*}}, !julia.loopinfo [[LOOPINFO4:![0-9]+]] -# LOWER-NOT: call void @julia.loopinfo_marker() +# CHECK: br {{.*}}, !llvm.loop [[LOOPID4:![0-9]+]] # LOWER: br {{.*}}, !llvm.loop [[LOOPID4:![0-9]+]] # FINAL: call {{(swiftcc )?}}void @j_iteration # FINAL: call {{(swiftcc )?}}void @j_iteration @@ -119,11 +115,11 @@ end end ## Check all the MD nodes -# CHECK: [[LOOPINFO]] = !{!"julia.simdloop"} -# CHECK: [[LOOPINFO2]] = !{!"julia.simdloop", !"julia.ivdep"} -# CHECK: [[LOOPINFO3]] = !{[[LOOPUNROLL:![0-9]+]]} +# CHECK: [[LOOPID]] = distinct !{[[LOOPID]], !"julia.simdloop"} +# CHECK: [[LOOPID2]] = distinct !{[[LOOPID2]], !"julia.simdloop", !"julia.ivdep"} +# CHECK: [[LOOPID3]] = distinct !{[[LOOPID3]], [[LOOPUNROLL:![0-9]+]]} # CHECK: [[LOOPUNROLL]] = !{!"llvm.loop.unroll.count", i64 3} -# CHECK: [[LOOPINFO4]] = !{[[LOOPUNROLL2:![0-9]+]]} +# CHECK: [[LOOPID4]] = distinct !{[[LOOPID4]], [[LOOPUNROLL2:![0-9]+]]} # CHECK: [[LOOPUNROLL2]] = !{!"llvm.loop.unroll.full"} # LOWER: [[LOOPID]] = distinct !{[[LOOPID]]} # LOWER: [[LOOPID2]] = distinct !{[[LOOPID2]]} diff --git a/test/llvmpasses/parsing.ll b/test/llvmpasses/parsing.ll index 434ffbb26c95f..dadf7db62db57 100644 --- a/test/llvmpasses/parsing.ll +++ b/test/llvmpasses/parsing.ll @@ -1,6 +1,6 @@ ; COM: NewPM-only test, tests for ability to parse Julia passes -; RUN: opt --opaque-pointers=0 --load-pass-plugin=libjulia-codegen%shlibext -passes='module(CPUFeatures,RemoveNI,LowerSIMDLoop,FinalLowerGC,JuliaMultiVersioning,RemoveJuliaAddrspaces,LowerPTLSPass,function(DemoteFloat16,CombineMulAdd,LateLowerGCFrame,AllocOpt,PropagateJuliaAddrspaces,LowerExcHandlers,GCInvariantVerifier,loop(JuliaLICM),GCInvariantVerifier,GCInvariantVerifier),LowerPTLSPass,LowerPTLSPass,JuliaMultiVersioning,JuliaMultiVersioning)' -S %s -o /dev/null +; RUN: opt --opaque-pointers=0 --load-pass-plugin=libjulia-codegen%shlibext -passes='module(CPUFeatures,RemoveNI,FinalLowerGC,JuliaMultiVersioning,RemoveJuliaAddrspaces,LowerPTLSPass,function(DemoteFloat16,CombineMulAdd,LateLowerGCFrame,AllocOpt,PropagateJuliaAddrspaces,LowerExcHandlers,GCInvariantVerifier,loop(LowerSIMDLoop,JuliaLICM),GCInvariantVerifier,GCInvariantVerifier),LowerPTLSPass,LowerPTLSPass,JuliaMultiVersioning,JuliaMultiVersioning)' -S %s -o /dev/null define void @test() { ret void From 0edde833a19937db09396826afbefcb747099443 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Wed, 25 Oct 2023 20:18:13 -0400 Subject: [PATCH 43/45] fixup to #51743, timetype subtraction Restores the method whose removal was probably causing problems. (cherry picked from commit f6f1ee9e00b1b9cc1e7703cd4ce7712f7064fdd4) --- stdlib/Dates/test/arithmetic.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stdlib/Dates/test/arithmetic.jl b/stdlib/Dates/test/arithmetic.jl index d1dad0180f57b..d266526496c45 100644 --- a/stdlib/Dates/test/arithmetic.jl +++ b/stdlib/Dates/test/arithmetic.jl @@ -11,8 +11,13 @@ using Dates @test Dates.CompoundPeriod(a - b) == Dates.Hour(12) end +struct MonthlyDate <: TimeType + instant::Dates.UTInstant{Month} +end @testset "TimeType arithmetic" begin @test_throws MethodError DateTime(2023, 5, 2) - Date(2023, 5, 1) + # check that - between two same-type TimeTypes works by default + @test MonthlyDate(Dates.UTInstant(Month(10))) - MonthlyDate(Dates.UTInstant(Month(1))) == Month(9) end @testset "Wrapping arithmetic for Months" begin From 4770eeabc36e10e8196d7f0aa79cc8f30d9dbad8 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Tue, 31 Oct 2023 12:19:12 +0100 Subject: [PATCH 44/45] remove chmodding the pkgimages (#51885) This shouldn't be needed because `ldd` should do it itself. (cherry picked from commit 5b34cdfa705df21997a8b97f6642c18de3a6d0e1) --- base/loading.jl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/base/loading.jl b/base/loading.jl index 78849ab6cdd3f..d748283c7c9d8 100644 --- a/base/loading.jl +++ b/base/loading.jl @@ -2398,12 +2398,6 @@ function compilecache(pkg::PkgId, path::String, internal_stderr::IO = stderr, in # inherit permission from the source file (and make them writable) chmod(tmppath, filemode(path) & 0o777 | 0o200) - if cache_objects - # Ensure that the user can execute the `.so` we're generating - # Note that on windows, `filemode(path)` typically returns `0o666`, so this - # addition of the execute bit for the user is doubly needed. - chmod(tmppath_so, filemode(path) & 0o777 | 0o331) - end # prune the directory with cache files if pkg.uuid !== nothing From 81d8c12adfe5d687a3e25599996aa6a244b2c3da Mon Sep 17 00:00:00 2001 From: DilumAluthgeBot <43731525+DilumAluthgeBot@users.noreply.github.com> Date: Tue, 31 Oct 2023 18:49:17 -0400 Subject: [PATCH 45/45] =?UTF-8?q?=F0=9F=A4=96=20[backports-release-1.10]?= =?UTF-8?q?=20Bump=20the=20Pkg=20stdlib=20from=209261a54d3=20to=20e63c601b?= =?UTF-8?q?d=20(#51964)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/md5 | 1 - .../Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/sha512 | 1 - .../Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/md5 | 1 + .../Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/sha512 | 1 + stdlib/Pkg.version | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/md5 delete mode 100644 deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/sha512 create mode 100644 deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/md5 create mode 100644 deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/sha512 diff --git a/deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/md5 b/deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/md5 deleted file mode 100644 index 82bb339b85d7b..0000000000000 --- a/deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -c5e39338f3fa7bb37694a36b179f388a diff --git a/deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/sha512 b/deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/sha512 deleted file mode 100644 index 5b44edb1a6f7b..0000000000000 --- a/deps/checksums/Pkg-9261a54d360bd9f7e49ce60faa7318c2057348b1.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -78640eed1615523d1e289f6a79eb3e0f4152aa40cb9878663888b4a00a50647908472ed70abd657896491a92526de2fe38759bc87caab9e53856056dfe4b8510 diff --git a/deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/md5 b/deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/md5 new file mode 100644 index 0000000000000..bddd4fc615336 --- /dev/null +++ b/deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/md5 @@ -0,0 +1 @@ +a68258944ba3c7b8a31864ad5dc6e320 diff --git a/deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/sha512 b/deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/sha512 new file mode 100644 index 0000000000000..0f89a4347a7d6 --- /dev/null +++ b/deps/checksums/Pkg-e63c601bd3a00a8e6062d926673337c8a659542d.tar.gz/sha512 @@ -0,0 +1 @@ +e7ea74323f873e6ff0b92b19d368a16df768f21474222ef38918d36d827c92a5597e7fa243e9ef985b02f3bcf65d41904cfeeae9aca64612fdfbb9483c3cbd12 diff --git a/stdlib/Pkg.version b/stdlib/Pkg.version index 46843b84bda97..7c2d80c35fe19 100644 --- a/stdlib/Pkg.version +++ b/stdlib/Pkg.version @@ -1,4 +1,4 @@ PKG_BRANCH = release-1.10 -PKG_SHA1 = 9261a54d360bd9f7e49ce60faa7318c2057348b1 +PKG_SHA1 = e63c601bd3a00a8e6062d926673337c8a659542d PKG_GIT_URL := https://github.com/JuliaLang/Pkg.jl.git PKG_TAR_URL = https://api.github.com/repos/JuliaLang/Pkg.jl/tarball/$1