diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f8e777ff4f3cb..e38d333291d15 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,7 @@ If you are already familiar with Julia itself, this blog post by Katharine Hyatt ## Learning Julia -[The learning page](https://julialang.org/learning) has a great list of resources for new and experienced users alike. [This tutorial video](https://www.youtube.com/watch?v=vWkgEddb4-A) is one recommended starting point, as is the "[Invitation to Julia](https://www.youtube.com/watch?v=gQ1y5NUD_RI)" workshop video from JuliaCon 2015 ([slide materials here](https://github.com/dpsanders/invitation_to_julia)). The [Julia documentation](https://docs.julialang.org/en/latest) covers the language and core library features, and is searchable. +[The learning page](https://julialang.org/learning) has a great list of resources for new and experienced users alike. [This tutorial video](https://www.youtube.com/watch?v=vWkgEddb4-A) is one recommended starting point, as is the "[Invitation to Julia](https://www.youtube.com/watch?v=gQ1y5NUD_RI)" workshop video from JuliaCon 2015 ([slide materials here](https://github.com/dpsanders/invitation_to_julia)). The [Julia documentation](https://docs.julialang.org) covers the language and core library features, and is searchable. ## Before filing an issue @@ -43,7 +43,7 @@ A useful bug report filed as a GitHub issue provides information about how to re - Try some simple debugging techniques to help isolate the problem. - Try running the code with the debug build of Julia with `make debug`, which produces the `usr/bin/julia-debug`. - Consider running `julia-debug` with a debugger such as `gdb` or `lldb`. Obtaining even a simple [backtrace](http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html) is very useful. - - If Julia segfaults, try following [these debugging tips](https://docs.julialang.org/en/latest/devdocs/backtraces#Reporting-and-analyzing-crashes-(segfaults)-1) to help track down the specific origin of the bug. + - If Julia segfaults, try following [these debugging tips](https://docs.julialang.org/en/v1/devdocs/backtraces/) to help track down the specific origin of the bug. 2. If the problem is caused by a Julia package rather than core Julia, file a bug report with the relevant package author rather than here. @@ -86,7 +86,7 @@ There are never enough tests. Track [code coverage at Coveralls](https://coveral 2. Browse through the source files and find some untested functionality (highlighted in red) that you think you might be able to write a test for. -3. Write a test that exercises this functionality---you can add your test to one of the existing files, or start a new one, whichever seems most appropriate to you. If you're adding a new test file, make sure you include it in the list of tests in `test/choosetests.jl`. https://docs.julialang.org/en/latest/stdlib/Test/ may be helpful in explaining how the testing infrastructure works. +3. Write a test that exercises this functionality---you can add your test to one of the existing files, or start a new one, whichever seems most appropriate to you. If you're adding a new test file, make sure you include it in the list of tests in `test/choosetests.jl`. https://docs.julialang.org/en/v1/stdlib/Test/ may be helpful in explaining how the testing infrastructure works. 4. Run `make test-all` to rebuild Julia and run your new test(s). If you had to fix a bug or add functionality in `base`, this will ensure that your test passes and that you have not introduced extraneous whitespace. diff --git a/Make.inc b/Make.inc index 09263f6df7116..0e0187081c021 100644 --- a/Make.inc +++ b/Make.inc @@ -1010,13 +1010,17 @@ else UTF8PROC_INC := $(build_includedir) endif +# We need python for things like BB triplet recognition. We don't really care +# about version, generally, so just find something that works: +PYTHON := $(shell which python 2>/dev/null || which python3 2>/dev/null || which python2 2>/dev/null || echo not found) + # BinaryBuilder options. We default to "on" for all the projects listed in BB_PROJECTS, # but only if contrib/normalize_triplet.py works for our requested triplet. -ifeq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) >/dev/null 2>/dev/null; echo $$?),0) +ifeq ($(shell $(PYTHON) $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) >/dev/null 2>/dev/null; echo $$?),0) USE_BINARYBUILDER ?= 1 else -ifneq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py x86_64-linux-gnu),x86_64-linux-gnu) -$(warning python normalize_triplet.py appears to be non-functional, so BinaryBuilder disabled) +ifneq ($(shell $(PYTHON) $(JULIAHOME)/contrib/normalize_triplet.py x86_64-linux-gnu),x86_64-linux-gnu) +$(warning normalize_triplet.py appears to be non-functional (used python interpreter "$(PYTHON)"), so BinaryBuilder disabled) endif USE_BINARYBUILDER ?= 0 endif @@ -1340,11 +1344,9 @@ endif exec = $(shell $(call spawn,$(1))) JULIA_BUILD_MODE := release -JULIA_LIBSUFFIX:= ifeq (,$(findstring release,$(MAKECMDGOALS))) ifneq (,$(findstring debug,$(MAKECMDGOALS))) JULIA_BUILD_MODE := debug -JULIA_LIBSUFFIX:=-debug endif endif @@ -1352,6 +1354,10 @@ JULIA_EXECUTABLE_debug := $(build_bindir)/julia-debug$(EXE) JULIA_EXECUTABLE_release := $(build_bindir)/julia$(EXE) JULIA_EXECUTABLE := $(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE)) +JULIA_SYSIMG_debug := $(build_private_libdir)/sys-debug.$(SHLIB_EXT) +JULIA_SYSIMG_release := $(build_private_libdir)/sys.$(SHLIB_EXT) +JULIA_SYSIMG := $(JULIA_SYSIMG_$(JULIA_BUILD_MODE)) + # Colors for make ifndef VERBOSE VERBOSE := 0 diff --git a/Makefile b/Makefile index 44c053ec3230f..df2e9c26ac3e6 100644 --- a/Makefile +++ b/Makefile @@ -571,8 +571,6 @@ distcleanall: cleanall test: check-whitespace $(JULIA_BUILD_MODE) @$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/test default JULIA_BUILD_MODE=$(JULIA_BUILD_MODE) -JULIA_SYSIMG=$(build_private_libdir)/sys$(JULIA_LIBSUFFIX).$(SHLIB_EXT) - testall: check-whitespace $(JULIA_BUILD_MODE) cp $(JULIA_SYSIMG) $(BUILDROOT)/local.$(SHLIB_EXT) $(call spawn,$(JULIA_EXECUTABLE) -J $(call cygpath_w,$(BUILDROOT)/local.$(SHLIB_EXT)) -e 'true') diff --git a/README.md b/README.md index ac4bc1e0f3fef..5a6388944656e 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ The Julia source code is organized as follows: ## Terminal, Editors and IDEs The Julia REPL is quite powerful. See the section in the manual on -[the Julia REPL](https://docs.julialang.org/en/latest/stdlib/REPL/) +[the Julia REPL](https://docs.julialang.org/en/v1/stdlib/REPL/) for more details. Support for editing Julia is available for many diff --git a/base/client.jl b/base/client.jl index a6b07aadde5a7..5341c465bf9bb 100644 --- a/base/client.jl +++ b/base/client.jl @@ -427,7 +427,7 @@ using ..Base # include(fname::AbstractString) = Main.Base.include(Main, fname) function include(fname::AbstractString) mod = Main - isa(fname, String) || (fname = Base.convert(String, fname)) + isa(fname, String) || (fname = Base.convert(String, fname)::String) path, prev = Base._include_dependency(mod, fname) for callback in Base.include_callbacks # to preserve order, must come before Core.include Base.invokelatest(callback, mod, path) diff --git a/base/compiler/inferenceresult.jl b/base/compiler/inferenceresult.jl index a466a00df89df..24206369b3018 100644 --- a/base/compiler/inferenceresult.jl +++ b/base/compiler/inferenceresult.jl @@ -35,9 +35,13 @@ function matching_cache_argtypes(linfo::MethodInstance, given_argtypes::Vector) if linfo.def.isva isva_given_argtypes = Vector{Any}(undef, nargs) for i = 1:(nargs - 1) - isva_given_argtypes[i] = given_argtypes[i] + isva_given_argtypes[i] = argtype_by_index(given_argtypes, i) + end + if length(given_argtypes) >= nargs || !isvarargtype(given_argtypes[end]) + isva_given_argtypes[nargs] = tuple_tfunc(given_argtypes[nargs:end]) + else + isva_given_argtypes[nargs] = tuple_tfunc(given_argtypes[end:end]) end - isva_given_argtypes[nargs] = tuple_tfunc(given_argtypes[nargs:end]) given_argtypes = isva_given_argtypes end cache_argtypes, overridden_by_const = matching_cache_argtypes(linfo, nothing) diff --git a/base/iterators.jl b/base/iterators.jl index 7f8525d8e1d82..891c413ee3970 100644 --- a/base/iterators.jl +++ b/base/iterators.jl @@ -98,7 +98,6 @@ reverse(G::Generator) = Generator(G.f, reverse(G.iter)) reverse(r::Reverse) = r.itr reverse(x::Union{Number,AbstractChar}) = x reverse(p::Pair) = Base.reverse(p) # copying pairs is cheap -reverse(xs::Tuple) = Base.reverse(xs) # allows inference in mapfoldr and similar iterate(r::Reverse{<:Tuple}, i::Int = length(r.itr)) = i < 1 ? nothing : (r.itr[i], i-1) diff --git a/base/loading.jl b/base/loading.jl index f8771afc58a69..cc4153e9a31e6 100644 --- a/base/loading.jl +++ b/base/loading.jl @@ -1086,8 +1086,8 @@ include_string(m::Module, txt::AbstractString, fname::AbstractString="string") = function source_path(default::Union{AbstractString,Nothing}="") s = current_task().storage - if s !== nothing && haskey(s, :SOURCE_PATH) - return s[:SOURCE_PATH] + if s !== nothing && haskey(s::IdDict{Any,Any}, :SOURCE_PATH) + return s[:SOURCE_PATH]::Union{Nothing,String} end return default end @@ -1264,6 +1264,8 @@ function compilecache(pkg::PkgId, path::String) open(cachefile, "a+") do f write(f, _crc32c(seekstart(f))) end + # inherit permission from the source file + chmod(cachefile, filemode(path) & 0o777) elseif p.exitcode == 125 return PrecompilableError() else @@ -1485,7 +1487,7 @@ Alternatively see [`PROGRAM_FILE`](@ref). """ macro __FILE__() __source__.file === nothing && return nothing - return String(__source__.file) + return String(__source__.file::Symbol) end """ @@ -1497,6 +1499,6 @@ Return the current working directory if run from a REPL or if evaluated by `juli """ macro __DIR__() __source__.file === nothing && return nothing - _dirname = dirname(String(__source__.file)) + _dirname = dirname(String(__source__.file::Symbol)) return isempty(_dirname) ? pwd() : abspath(_dirname) end diff --git a/base/logging.jl b/base/logging.jl index 0de8ae9337374..517bcd3e0d5b4 100644 --- a/base/logging.jl +++ b/base/logging.jl @@ -204,7 +204,7 @@ end macro _sourceinfo() esc(quote (__module__, - __source__.file === nothing ? "?" : String(__source__.file), + __source__.file === nothing ? "?" : String(__source__.file::Symbol), __source__.line) end) end @@ -248,6 +248,8 @@ function log_record_id(_module, level, message, log_kws) end end +default_group(file) = Symbol(splitext(basename(file))[1]) + # Generate code for logging macros function logmsg_code(_module, file, line, level, message, exs...) id = Expr(:quote, log_record_id(_module, level, message, exs)) @@ -293,12 +295,12 @@ function logmsg_code(_module, file, line, level, message, exs...) if group === nothing group = if isdefined(Base, :basename) && isa(file, String) # precompute if we can - QuoteNode(splitext(basename(file))[1]) + QuoteNode(default_group(file)) else # memoized run-time execution ref = Ref{Symbol}() :(isassigned($ref) ? $ref[] - : $ref[] = Symbol(splitext(basename(something($file, "")))[1])) + : $ref[] = default_group(something($file, ""))) end end diff --git a/base/math.jl b/base/math.jl index c3429723db932..85574e22f69b6 100644 --- a/base/math.jl +++ b/base/math.jl @@ -613,9 +613,19 @@ julia> hypot(3, 4im) hypot(x::Number, y::Number) = hypot(promote(x, y)...) hypot(x::Complex, y::Complex) = hypot(abs(x), abs(y)) hypot(x::T, y::T) where {T<:Real} = hypot(float(x), float(y)) -hypot(x::T, y::T) where {T<:Number} = (z = y/x; abs(x) * sqrt(one(z) + z*z)) +function hypot(x::T, y::T) where {T<:Number} + if !iszero(x) + z = y/x + z2 = z*z + + abs(x) * sqrt(oneunit(z2) + z2) + else + abs(y) + end +end + function hypot(x::T, y::T) where T<:AbstractFloat - #Return Inf if either or both imputs is Inf (Compliance with IEEE754) + # Return Inf if either or both inputs is Inf (Compliance with IEEE754) if isinf(x) || isinf(y) return T(Inf) end diff --git a/base/reduce.jl b/base/reduce.jl index c89e7b8763547..b61a8357d9b0e 100644 --- a/base/reduce.jl +++ b/base/reduce.jl @@ -178,9 +178,12 @@ foldl(op, itr; kw...) = mapfoldl(identity, op, itr; kw...) function mapfoldr_impl(f, op, nt, itr) op′, itr′ = _xfadjoint(BottomRF(FlipArgs(op)), Generator(f, itr)) - return foldl_impl(op′, nt, Iterators.reverse(itr′)) + return foldl_impl(op′, nt, _reverse(itr′)) end +_reverse(itr) = Iterators.reverse(itr) +_reverse(itr::Tuple) = reverse(itr) #33235 + struct FlipArgs{F} f::F end diff --git a/base/reducedim.jl b/base/reducedim.jl index a448931499fc5..a66cb09cfe5c5 100644 --- a/base/reducedim.jl +++ b/base/reducedim.jl @@ -4,7 +4,7 @@ # for reductions that expand 0 dims to 1 reduced_index(i::OneTo) = OneTo(1) -reduced_index(i::Union{Slice, IdentityUnitRange}) = first(i):first(i) +reduced_index(i::Union{Slice, IdentityUnitRange}) = oftype(i, first(i):first(i)) reduced_index(i::AbstractUnitRange) = throw(ArgumentError( """ diff --git a/base/reflection.jl b/base/reflection.jl index df3368022fc09..4f83dfa500d6a 100644 --- a/base/reflection.jl +++ b/base/reflection.jl @@ -319,8 +319,8 @@ struct DataTypeLayout nfields::UInt32 npointers::UInt32 firstptr::Int32 - alignment::UInt32 - # alignment : 9; + alignment::UInt16 + flags::UInt16 # haspadding : 1; # fielddesc_type : 2; end @@ -335,7 +335,7 @@ function datatype_alignment(dt::DataType) @_pure_meta dt.layout == C_NULL && throw(UndefRefError()) alignment = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).alignment - return Int(alignment & 0x1FF) + return Int(alignment) end # amount of total space taken by T when stored in a container @@ -368,8 +368,8 @@ Can be called on any `isconcretetype`. function datatype_haspadding(dt::DataType) @_pure_meta dt.layout == C_NULL && throw(UndefRefError()) - alignment = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).alignment - return (alignment >> 9) & 1 == 1 + flags = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).flags + return flags & 1 == 1 end """ @@ -397,8 +397,8 @@ See also [`fieldoffset`](@ref). function datatype_fielddesc_type(dt::DataType) @_pure_meta dt.layout == C_NULL && throw(UndefRefError()) - alignment = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).alignment - return (alignment >> 10) & 3 + flags = unsafe_load(convert(Ptr{DataTypeLayout}, dt.layout)).flags + return (flags >> 1) & 3 end """ diff --git a/base/show.jl b/base/show.jl index a2eb5664ab223..784ad04904c07 100644 --- a/base/show.jl +++ b/base/show.jl @@ -1580,11 +1580,17 @@ function show_unquoted(io::IO, ex::Expr, indent::Int, prec::Int, quote_level::In print(io, '(') ind = indent + indent_width for i = 1:length(ex.args) - i > 1 && print(io, ";\n", ' '^ind) + if i > 1 + # if there was only a comment before the first semicolon, the expression would get parsed as a NamedTuple + if !(i == 2 && ex.args[1] isa LineNumberNode) + print(io, ';') + end + print(io, "\n", ' '^ind) + end show_unquoted(io, ex.args[i], ind, -1, quote_level) end if length(ex.args) < 2 - print(isempty(ex.args) ? "nothing;)" : ";)") + print(io, isempty(ex.args) ? "nothing;)" : ";)") else print(io, ')') end @@ -2055,13 +2061,13 @@ alignment(io::IO, x::Number) = (length(sprint(show, x, context=io, sizehint=0)), alignment(io::IO, x::Integer) = (length(sprint(show, x, context=io, sizehint=0)), 0) "`alignment(4.23)` yields (1,3) for `4` and `.23`" function alignment(io::IO, x::Real) - m = match(r"^(.*?)((?:[\.eE].*)?)$", sprint(show, x, context=io, sizehint=0)) + m = match(r"^(.*?)((?:[\.eEfF].*)?)$", sprint(show, x, context=io, sizehint=0)) m === nothing ? (length(sprint(show, x, context=io, sizehint=0)), 0) : (length(m.captures[1]), length(m.captures[2])) end "`alignment(1 + 10im)` yields (3,5) for `1 +` and `_10im` (plus sign on left, space on right)" function alignment(io::IO, x::Complex) - m = match(r"^(.*[^e][\+\-])(.*)$", sprint(show, x, context=io, sizehint=0)) + m = match(r"^(.*[^ef][\+\-])(.*)$", sprint(show, x, context=io, sizehint=0)) m === nothing ? (length(sprint(show, x, context=io, sizehint=0)), 0) : (length(m.captures[1]), length(m.captures[2])) end diff --git a/deps/Versions.make b/deps/Versions.make index 74d802921fb0c..af87ef5cf48b0 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -5,7 +5,7 @@ PCRE_BB_REL = 0 DSFMT_VER = 2.2.3 DSFMT_BB_REL = 0 OPENBLAS_VER = 0.3.5 -OPENBLAS_BB_REL = 0 +OPENBLAS_BB_REL = 1 LAPACK_VER = 3.5.0 SUITESPARSE_VER = 5.4.0 SUITESPARSE_BB_REL = 2 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..9c5324bd5236f --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +0740cc29f22c662e265737045e637112 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..15a671a094197 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +2aafd248b82de55dccdec65fea088c1726967fbdae01afd251645349fcbc0da01893dce714a93a644d6f0e051aba05d43cec84c49dfb73b41a9532754886a518 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..ad842024388f2 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +89ce36300ffd0f2bc1aeddcf019a3aa4 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..e7fb20ff26121 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +3d24df343627777c8adb7ffd90379cdbfc48fdbdf7fe2aae8b8a4ad83c534cce6958a23eaeba9d703f4f00f293d36c8d618c930d66e3fc04dd9b745ad8aa447f diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..fad791ab5aed2 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +0bb8ede857f498c5c4b2b7c1cdfab22f diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..54e79b5f47140 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.aarch64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +01923975b5121e9ec144d6110a4072d51a764eae8cb4de3dd4af6698759832342fbf56c7b2102097e4fd1e79df0bf05935b58af6fd8ca6ee81637876fddf8bb8 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..47588d301ea18 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +0c9eb5839c0e41fef06c390cba6bc032 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..b72c3a7ceec06 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +8722dbf467c8729d1d2eb64b86d3457daff0906e4a839990ca7eac3ca094e6542da957f0e9c2050e7b6526462dde3383cec94fea8c56c19a289a4a113055af03 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..cc57707c5dea7 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +49bc35e66e801f4d999c7fc43c0edc23 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..28b2a72d600ed --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +bd76fdba0242051a3b64dc962e6c03ddde69ca213dca5935348ee9d8a65be88f2cdb50882e85a238e738d441472c97020ce96f50d4fd7a901293cb9424b23d75 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..c023093de17c6 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +f70ea31676f544cf8eb8d4ea981c096e diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..beffc018e9f3f --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.arm-linux-gnueabihf-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +925906ffaa2854aaf645c8187fec41182dce06efe3cd47af1849ae06c92ca1bd44de8783c455112092d7830fcd06466f2ba7e8e0a5ab2567f0370d7cfa725bf1 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..777018fc4fdae --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +c6ec99ca9a26a119a8a8b3e14869f0dc diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..e47973b038f4b --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +1eff4695a923f11ae0465d4a3f3f8fd8404689637c46a3766305bae019562986212b63865c4c678d35e639ce5184597de04b821b633a3bea9832838a547892ca diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..5426eafec986b --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +9a14bed041690c24c171c2cd03e9218e diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..1b626927ba8eb --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +8ce3526e4214f51c87d7373c26a7bf6c8c363ca67cbb1b3920bc6cae5f1ec27ec3b50f3c153f0c14d314e68bc4d932145cb6b010f7800b671913b645f1d707f4 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..76cb3b23d0349 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +72eac17e11be9a2252236f218d205834 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..a21ec1a89bf1d --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +4e6db589316c2282e0dcd30c02202ca5fbda5ccf59d5ea08060419bdf579d5695bfbf7ad2163032233753283e430f07998b808bb620fb090a2d79e9d03c7b231 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..b3008737fe8f0 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +eb4e92189affd15c3cf1d047990b8d14 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..1e8e826d9b4c8 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +b92403df2e4e0f174d544d6cde53f1ef94dd03ef34866a0a782f5853de9d2b9165a0466195fba79a2da8e582fcff0b745d6b23f395f7b11f13aa480c4aa166f5 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..cd6ecf6d0a6de --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +bb9a3e9aa5b301f9c80bd019cfa7d805 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..121a5826861f0 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +5c72d5f72a3923b68eeedaa7f6ca49d99558ae6ba647f171e0f8f2f147a8266541177432c7f260f09fddd6096046ab9830aeb24be312ab54678c53113d2c14a3 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..b90c8d6c47ea4 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +c3881b19da149713bd7b3e205ae55c1d diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..1616747623e52 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.i686-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +03b21f17a720e41642794a603b76ff627f19802ae7f0563590d8a5d3db9ce4415dd65231c86b7989743aaf9b587b8ab3b141bafe049f6957aa9ecbf7ae740d8f diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..039c7554a2bc0 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +f2b1cf1684dd90cd34b866b67c51a8f8 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..ac2e589bf1d2b --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +6ad5a99c0237e905bbc194f0a41529504f32e2b4ab8a08b292de80e527957ea2cdfbebd609e804c7072216749aa7dbf0539c41f5f68217bc65af623acbfd1d59 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..fc8420a91c8e2 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +41f88ee5ff86f56cb2233729adabddf4 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..aae1761e6ce79 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +722374a4bf2700267b6138f3c524653dd2f4272c0ceca5431ef2c60298dc1e7908e733e1a6cfd5ec975cead68e09fe755be29b56cf7d3d0a18a09f95d142a776 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..b11931f688f09 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +dc28cdcfa74e06e5385d02016cc84cbd diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..8b20b384295df --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +561b6773169fdd8ba0966a79448281c163984f67eee7c9d89f826733232776008011083a2ce6375413de06eae80e20a28bd9c46c4bef51078c729b9ca785921b diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..9c38796b7c53b --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +28cf728c02deb8506d72e1dd9814c308 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..c747fabeb0f60 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +12f15a6a102f14b6b87e2ffce1fb09523eb9977ae66240481fc1aa450a45517d81a29116964af673dd28aba9903d4146aa562112a4a74323c55355f793c1ba2e diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..1262f1c5b40d3 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +02eb0c570837afe5ee9a76571af2fbfb diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..e12934e93b3ee --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +288246efb49795234fb555ed19d08f33f1af20b221a160b0885ad6a18036b8bac299fea8333a977750e40adf68c45899d3a5916f885556f607126f682729b481 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..21538bc4297b5 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +d79b813303ad7d5758ab86a2ec16602b diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..c0f036f88021b --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-apple-darwin14-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +036b698e77442d1fc6cc623b97da3fd53c487959866faf6c4624b0566472955d14bd2062cc25e6f4199afc3f63e78d75b4e920a44d9e270ac3cbd0563aefe25d diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..26fe39bd220f3 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +878c64ad9e182be661f8c5402fc38c67 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..b90170950ce0d --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +0737c4358f968d3d1695156df5adcfb3ec0ed71e4f7293cf7e022b514709d5139007f7ffa130007e4e73f5bda89e8354d72a4109d224fa9ee0aaf66517c1fd13 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..69e467e8c7729 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +befff28f3abd70de2207d4316c6f8b71 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..6500b2e739497 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +27e293913cf05e7602252aa9d2c948b47da1aa9400725cac76bc3aae777717f39c193edc8f59d4ec902626776ed6e6903db4fa1af1f30ca0c24392d0e00b16f7 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..11ad3f1090f85 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +e43c672ecc5ea4591933bb27323a614d diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..346d32b0aaa37 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +2fa2ca3a620dd5912c1dfdad0e5408ed33d2f5d6e5840a3059468f8bf9435903dcdcea70c8253af9e38da38b1113cec026bc4f8da6385191f1365d8bc02d003f diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..68f71debf4e88 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +b2a10c47c352320a94608034b676726e diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..779ae5c0549c1 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +6bd24936c0f6e2c0cf47a1715941a5aca181a7b36f343310e16cfc9ed6aa3943c689391d02a2b491b027f5f899191b775674507c0266f7cad3650b6a349234f6 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..09ee61f9d7283 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +eeaaf74ca31ebf1f64d23e5750d7f18a diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..deb403c50bbb2 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +5d9d9d77b321f8854d991201b9a9c19dba45395190dd5b3baee9a01c90e334d359c7b00f39b04367c5a02cdefdc930a8da40c9122bfa444287a675f75639cfbd diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..77d86057e873a --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +6246a3353161b8b38f8a5c61cef7bd3f diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..d754dcc68b7af --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +9910a58a883fa0892dea384306d2b58751571e5a07c39abc75e8c5224af8e06730d5a95adc89fe06b033e5959e7821f34e682597ffe3f3ac8764bd3b177312dc diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..c601c62160517 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +60fb3a2c626879f63ead55a3e8003a14 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..8e81be46536a0 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +17a97b0f7d9dee8b7136fa3cb9641e29f9fe0aefcd060e40c807487943a6411bc7052a09a605dc3e0a1b7b9a6697609137bd643b5f6e5e7a1c01a7197db9e10e diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..68513b832c190 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +5a1ad11689d77a9614ce0f79d465b580 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..94781db81beec --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +a74beed9f6a31387c696e0e722489f9d658295af56db07dc93bbfd94e21faf0965d520b6b478a8cdb776aa9e17d3d4083f893dbd39ff282b0308e0be5d3fb219 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..b803694be7777 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +c2bbabc63fb5465ec3d239350615e535 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..4e9fff74c1e3d --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +1061c5aa38244037f376f85d9eb4bf1daa257deafdeb60662198dfe5122692e2cc401b7a192672933032d0263c27b96c43beeb3d82a7c01161737ba0901858fa diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..40548105cb04b --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +70473d105887db9b47e188897393f15c diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..29e1c48b8affe --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +d60c414479aa88a4602b180b3f0ec45fbc5b1d86e185a620e5d8a731ebab221ea20084721ea1c93d67eea6a98db56b64c06ace5ee236e58b3aaf7bb7c8f55718 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..d0ad3c87c7fd1 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +634388e07576c7c43a480337bab77f19 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..ba25df627c3f1 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +4739ed30f03076d0b1ee6b7ed9b2b55eac319278ea17619334eccfbf1ba9168198f3a2f5984cfd89e2303d61f4dfe862bbde01ae2ef846a3b947970bc92f4462 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..b818b10a43c42 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +8fa2cf1c4c194640a7becb72c49dd2b5 diff --git a/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..bb34a525f9567 --- /dev/null +++ b/deps/checksums/LLVM.asserts.v8.0.1-4.x86_64-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +4878b802f33e4fbaacbebd8f99e9a3833f5ef214586119e178e36e6a27191b592e78b9ec2779a1840272fcc1e8fd5b76c32f23e83b889e04cc8618c6b35b7582 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 2d130cd135a25..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -9bbf83fce2f15f717101ec7d0df2fa4f diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 262d053cde546..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -667f9036b2ae1e16feb2c59192561017d14b843f1f967e9a150f2b3190f3d14624a4bcab322fc4ebc9ba0281d721c1ecd326fc1cf663ed3b59f57a82ea6834fd diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index 90a7df063b85b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1f4a939afe0bcb144e588b62be0b3d37 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index a7b42e4cc27b1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d203ee0b090d88fb9cf0c7639c638c6d57794c51c40489fd27c7d8bebdf5313882ba0c38860c2dd8c9ae3f8aad0731618e5fa03981db74ef2500a6b9140c6680 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 6c78c684c383a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -2583fe7faf43fe4b24dfd8e3552bb565 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 16282b39b3d21..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -008ca412e9a01cb654d363be902b5b608b23831daa93190a3a1193176d620bd0b148fcd0dfcbc1ebe33fb966f4924372dc198f69d3ac5ec255ec56b2d3c92bb8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index 7315de7005426..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -996600c776b5beb7a3546dfd2d827891 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index 0c359024dd518..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -4f1356ba08aaeafe454c8c8d53bd4706bc32cd424c047b51d46a1b2b4a645a98b8f20adee7e30a255182bdc36e0b26b30a02fd9308aae18e0c08b34c419fdc53 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index e55188c177b58..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -7e521282dea43200f63f41761af7395c diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index 0c2c69ebb53b2..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -e00d07c97934b5df947ea0d503a95d5e075c8c18373199515304b3370db96685c6e0b0503e8631a91ff7487a9b69f92163cd7899480231a33b59a2ab58c13950 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index 91665477ffeb6..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -01607bf69c96015b04a48dee37d1c294 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index 859f7fe4eeed1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.aarch64-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -c90771eaec17085115eef4de826689ba1910919b1469d694c01e0dba7909242a4fc49df788efb798349c5fa275156d63b4b544fb6e1fe559e82bcc2674006e73 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc4.tar.gz/md5 deleted file mode 100644 index 6350dd861a165..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -ada3082418bd4b41b876db90e731b8f7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 deleted file mode 100644 index 4ddb4bdee516e..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -16a836d2fc3a554b3f4235ddec1126f60cebde7b1fc9baa33f33bdd3957cbed74927f4af3d523ffa4b80237d6343ce2d4bff377cb5dac23ec5f43a9026a00884 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc7.tar.gz/md5 deleted file mode 100644 index 4ba93b75f3686..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -e2ffa22404ae8f3cc8789aac82a42981 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 deleted file mode 100644 index 989e082e40109..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -c76a5a815a9278a26d0626cdf2529f6c2c577c0168236ff5621851493bc5aec8e9c978d5d83c5b9bfa924c826931b81aea61559c2603e0a2e0b8b8d9a6516070 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc8.tar.gz/md5 deleted file mode 100644 index cb50df85e97e4..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -550836a6911ef0764d130710410f3f7b diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 deleted file mode 100644 index 4fe931c2f3462..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -a611fc48cff875d8d434201d223c3d630e0b5f9398888a27dda4b73a931031ad3db0870c9c10242a592c07f1fd79f7a605520588c3799f5ad455c4b7eab94d21 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc4.tar.gz/md5 deleted file mode 100644 index 1f35eb9cf4ab0..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -0225a263bad9c3339b9b6c144840d586 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc4.tar.gz/sha512 deleted file mode 100644 index ccdc2d7851ade..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -6ea1eda9e794ade98d349a41e3871b298e26791382e561a76ba73334d5b8382bda23312be43293cb0cb6a0e17bc3fc51854a3adff98020248a6690b34b509880 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc7.tar.gz/md5 deleted file mode 100644 index 85afda304d5d1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -0083fa05f53567efcccaa5f6a92c3034 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc7.tar.gz/sha512 deleted file mode 100644 index ece4ac1a54edb..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d955ec24040682af22772f9318a87948bd87e1fcd7f0720c7539be423d0d3f0a1ed8555a7fce0d24b87d649cfcf83e4bebfc1a246798340a64c5a310a679cb3f diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc8.tar.gz/md5 deleted file mode 100644 index e572e06feb781..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -980936a4242e5dd178c2cc8be61112d9 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc8.tar.gz/sha512 deleted file mode 100644 index 7da2290399c13..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.arm-linux-musleabihf-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f930c788fb543b66c96795c112d7509daea0f48b4c0fccf16a407f246ba7c593f08fd15796ba850c67069ef84481e9f1e277a0805c885139502b75523fe00cce diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index debdf862c9ce9..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -c13e3ae50c2fb9b403a0bdb247e32002 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 3dc71c4445d1a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3a773c52e435da247992ac0d5740d6bec8d062214d03861d1335ede399c080edfd023516721fa0e801f625c8a9d8ecaa4e0d6c3b229ec3bd9f7a93cf5e10ebd3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index bb11ff1c2d108..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -f557bfc3bbbaf69910976f8dbca4502a diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index f5fe3a829d77d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -b3c1d66a877fa6ecc74e346545f054adec91b96d3ed4ec6d6b5f4b7ee3a5be1ed13e966b97afc6949d8908c12e02e3aedafaaea804c2aa9f91f8d080f7bbca5c diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index ffd61abc48442..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -4fba529a18d3c20626bb38461b6d8b9a diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 31ab3b8410a84..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3311cc914036ad050f325dbe60673f35da68fdd7313c8f38e455ec2bbc8b06b60b71a01094bdf0b4ac48e159baae12af12e80606cdbaf1d771319030472c2cf4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index e8c3fc225945e..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -bfdf7209ef49e67529724bf8c2812561 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index 40c12d6731012..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -10913cf9d95a171e656566a06f99084ed3e8d277893e8a5db889d34848f9c49bb127e9ae6ec57075b212ec694bf0a27e27cc9db22caa1806e59f322b857ff275 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index 250b043fbe14c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -4a06a33376ef2fbc342b141dac870115 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index 70beeb908cdb5..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -fad7912b31d146bfd0449771e9713c1951da10ef62b77da959ae90b10943594479179bfe498cc464ededd315d7a1016ee09f8433e1a0fcba9d657a34e0eb2e3c diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index 5140689c3c997..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -8bfa9815e6e406bd89cdde963e972abf diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index 15c8fdc5b1258..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -60b4df78d435cef2f326733095883ee5e41aac12d9602636069b9dab2dcbabfc383b5b0026c473cd36c628938da517eb1f5716a0d6eb7973be9b52b6ccfb7799 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc4.tar.gz/md5 deleted file mode 100644 index 5680d71eb2e34..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -c1f22d38e6f5a0cbb575d5a517f4a64e diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc4.tar.gz/sha512 deleted file mode 100644 index 7aa641f464434..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -ea582ad17465a48e41aeea70fa0181bee348b066aa3336404c583a55623f428b1e096312e2e5527bdfb350df0373fcd8fa007edc96756885c05e82574f716bf8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc7.tar.gz/md5 deleted file mode 100644 index 8d26be6ded25a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -2a74cfba9ea8b4dd4b75d37ed35fc923 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc7.tar.gz/sha512 deleted file mode 100644 index 46617dba23015..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -60c0230a4700ebf33f55e3dd84050d9ab1acd6456595f726d22698358ce3a55e6014df91f44c131280f12649fabe1e6b8d20ab5528607c306e2203b01c196021 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc8.tar.gz/md5 deleted file mode 100644 index 7e74d0defe6e4..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -884953cbb391162ea9c4afa1aef2e277 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc8.tar.gz/sha512 deleted file mode 100644 index a6227eecd82f5..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.i686-w64-mingw32-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -71f9ac6f7d15a27668b18ef410ffb370433ba819e4eabe3775d1807cf8d4ca6e75745ba1e48fe8421e9c9a8eaaa20cd5798d3a9692e86d7ed2f7aacf708b7774 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 190be48fafc69..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b93a88cc361697d1312381507ad75205 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index aeb89db3bf96c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -073e6e65c22593e66955e7d3bb9516b8501acb14795b570f8e40fd9b5fab091f2872235a3058851f755e54f22c78fdd5bd2932e568097738fa4ac3e24813c113 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index f5efe954bf38c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -5f82b92bd903df85c45dd807939ab41c diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index 72ed9ace209d5..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -1c793bd56a470ed766e4047ce317b3add85fc86a464d2b903e6bbcd6020401f14ccc600bbeb43fdd77ca19396ca951f463d925b14f0416fddf91fa99b73abe68 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index e9707e4195163..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -d11cbf640872bc35f4ff189b3d8ebc0f diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index d4422a56cfe01..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -9886f2d89ddc24c0007111ed8bda373ab0d33eb1e16fa958538df8f50af3df67b5298fb06ddbe22e4ed99e875a05f545949e2767e3cdbf30c4da370b608ad2f9 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc4.tar.gz/md5 deleted file mode 100644 index ccc1839fb49a5..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -a63b21f16bc6f72f644869eebee71212 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 deleted file mode 100644 index dcd097748782a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -715e08c869438ce514187eb42d610eb4edbddc3ed79188327741f7af34638e01920a1171a48686fa2188867eaffd2c3decf2556a8cfd5fcc64c941d347043baf diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc7.tar.gz/md5 deleted file mode 100644 index 7fd62057eda7f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -757d2363388831794d07e42e73bcd5e2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 deleted file mode 100644 index bcb398522aee6..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -dd68a08f0c258878e66a3c4e0c5d0d47c7e2a0862406b01b76b48442e4a29265c21c0dbca10586221b820b55ef9baed88d93f6af40b14d6f048ec6047b1a2e47 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc8.tar.gz/md5 deleted file mode 100644 index 28938c0e3b722..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -30ded9efc429691b65efc00111a00f82 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 deleted file mode 100644 index 0783b0e1cb71d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3505449c345c29d1485c44af56cf3a6986ce60ecdc0e26687d92f60cf038a60bc8a1a44921db69401c1235dfeeda754a1b6e09936cf0e9088cf044c85d9d5a45 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 645aa61d328ae..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -c6d01844d4fcddc6fee5753ec0480ee0 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index d920f302efb35..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -99a0f207506f23deca8f537767a8d122092c35385dd6843026041f379d19f4de56fc33030ca8e746840c9cafc29c78534dd917f86ae8712e494c2e283b245de2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index c5a79dd077b74..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -011a9de81291915cf8cbd15e76c8691e diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index 4e06e8885f326..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -5e8d54b1b802b90c0dd086ab8f550a46e69c6b2c8c6f56333c3194f1710b9a6349bbbf3d191d70590d3607352b5bf2ef5fd7888fa873b1d7ba0e543a99314446 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 61c7199fef468..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -eede665ed6831b2e92348e948d212526 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 059afd324fc21..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -6600dcd587e55843103385338eb07d7eb58a69869494d79e6aba73cfa0df59fe2b6db164164bb36fe855540a990de50b147f7f5f3c3ca4ea860673bf4cb7bf33 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index bfcedf5665935..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1150bd6f9b9b9b8b3983e5a95dced7fc diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index 267db5855a399..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -9fc73b9e8804b49dad4d3ed6bb57f5d3f46552dc27523092d20e582941464cc9e7c0e1d9b5b21ff22f2cabd7738b58d86f429cc961e32d60e96ec8464cdbc500 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index 0e6af153d33db..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -077594ce7e653bbb04c9f734d8bff07b diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index 3bdb7f062ab68..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -843262d18ca37b742217f5200d34d4c9c793bda0e7ba602a601b24043eb0e55e51b489099e539dc0922ef26358ac64c50cb6d0fa3d9de06de3752b035e7d4f3e diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index 3b5e3ea0a9b7c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -a0a8bafa0ec422cb4e5329a2d37adb3f diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index b27de663d619c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -65ed55aff797acba6aaf58f3343336861d4f6d510ee444d7ba694052c77064834fb7722e23511538e4dd89447a7cadd58fda380b54f69b849be5723264dce54b diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 deleted file mode 100644 index e4c0d9afcdaa7..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -100fff94cdfb73b8f608a71d55f74318 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 deleted file mode 100644 index 89854abd60a5f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d16fadacf35c2b14c804247b98b1882e7864c4da231488a040bdb529550c39882b8fbfb669b3c4ed6e90494ec48a2d93825414d05bf35f0cf2d538fc5309ad57 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 deleted file mode 100644 index 9dff0fa66dcb7..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -5a5218c7e0f730b0a37824f7f574aaef diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 deleted file mode 100644 index 7d3477a747217..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -faadfcc091dda6bcc3db235d81a6aa396b0220055d0ad3a50215c8be57a7a00d852d4020a6dbb3a8ed4820a15ff0429908e7e1d22da295d66bbf04a923016ccc diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 deleted file mode 100644 index f43284df8d7ab..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -6fe2c6b822bfb5a7e48d09e151139336 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 deleted file mode 100644 index 7a1fdc7940386..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -36969d188bd9e56d96745d51a2e710c646584e47618d0aeb0d04c00b0a8947f45de5a5b389895d01fe267e3d8211de72343494f9f6851dd363608ac79bb12ad7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc4.tar.gz/md5 deleted file mode 100644 index f504d3644c282..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -5c5d118a33a4b9db4d43d592a028b4d1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 deleted file mode 100644 index 303e8a841246f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -137662813050df25c87e7b039ac62fd8f33696879dd0575ed9367bf65da9fae562f43e8de4592edbdd6babef5b6ae340af6f274427fdc37aece5fa1b6865dfd7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc7.tar.gz/md5 deleted file mode 100644 index f0d05df05cebf..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1fea2ee4c4250f67adfa23e7ee3f2df6 diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 deleted file mode 100644 index 9188bb03df49a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -a214045c28391a31335de260f27a0fa378532476a9f2f9e98bcad2399c4aae27d4abf2f66158d4a90d110ed51e4fbb4ab49444d1ccb70100330a2588b81d9dbe diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc8.tar.gz/md5 deleted file mode 100644 index 066fd99eccc02..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -3372f112bcd4933ec7c261081f747acc diff --git a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 deleted file mode 100644 index 804d750e41fd5..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -909e3823cd3ff702e878a28c433992793fddcbaad302bdb61a6d6a975209b6bfd394904564634c12c71b682d212c88066a40305e91ec3d25ea5408d5335a8220 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..4f8b3b84b1a2e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +4b54f9f78817e6c73929398e21e61ffb diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..7026b9c83b679 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +0ba7785354e7527b8c5e16b04e4a004e924b57d038c40d5b39ea03bcb110e623bd568ba658e9e0c0e756483f57776a2f20df1522cbfb8e8a7edd20614044354a diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..6aa733d378dac --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +facb889c36411371eeb5f3a0a572ea29 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..2bb3703ca6b20 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +428077bfe05c8f12a8dd7f1372a905b9fa7d3da13d391df47a4c23efe4420a98cfab16bfd4daa62977a9d7fc95ee56d32761f5eb7f10eff785df59cb3339bc18 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..778ec60345a2f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +427398ebb09c8400983c467d4182ab89 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..ad7c72d88f7a0 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +8c549842b70015a3c7fbe98a92cabf75191ff36ebf0fa89532a53622bbbc7cac23c549a05cd4a0791102cc33e8bd5acd073416c43939dd104898f4574a2a7869 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..7255991383978 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +2bc510613d6ee06094582b8d423d72bd diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..4d0bd5bfa9aeb --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +d353955cffc52c82dfa4fd8fa3c2c3b62dc28bc49fbe096a6b96686f35fc45541c0912337a3d6fbd601aca56e6a1eaf65f8f8ee340a2a853ecd976feab13f522 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..6830f3966f29f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +49a4230c8c599500d6a6a7ec3d76b328 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..22cbc1958a3b3 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +eb7de3ecac20f5021d1d98589126bca5e6c9469e330077c6f695af6f597626b0e240a27f2572ba304c8d4e1ed186e9638b4bd54fda7ce5c07236d08e06fd2c16 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..4b4811c68f44a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +06362a9c09a08d724c41d68dec67de6d diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..dccf19efb1d53 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +493a8a16bf6a369408ddd904c68ee25c5b6a9b18955a5dd661587bce001a8e37cd4cb30af77c0ed024ae4168b0d9bf5c341ba0837983e8565ddfe45c7f03273b diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..621cd81bfc323 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +b7072566dd86e1b432726c5a832e5164 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..e02389bd4fba5 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +5602a8dd47d24bbdd6c2303d8fd8836f0ddf6ec9371888ac57eff7f1cb65a8c33da7fec9b794108bb6c140e2f69a1508a2a2ee48951c897b9bdf79c6071b2100 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..fd5337a2f1871 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +29e0423db67d2886cc35022bb0b0a67e diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..3f7d8a4b2549f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +48f17505a6dd8efdd79fcebee263004c30da350c00649bba5286d1df1acf369fdb050ad3d47fff5336252691d891949ee916896504f327ab53f7a1bbbc0a6b13 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..1034c240550d2 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +cec0a1c2ce1128102b0cbf8c3e4ca3d9 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..b48e0ee61f6de --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +42ee1534dab01b56827c8344e2bccc14b5e2b6e0ac1cca40edd3ca22e1917559448482f2c41e9a32b90fdf6dc6ec5c56f5bde11360bad45cdfe65dc6416b007c diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..8a96b8051ab91 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +960d183ee1167e0d9e6cc31ac60631e8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..422b58b431824 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +15fed065cb9c15d0c1762c36658b36913566873b5646f5079154e31e531623f0f5ac0902ed69261909501b123471d224251e9ae0206b3a97927376e9f7b344c4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..8938b4a550cd6 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +4a9fae8c02809e702bec6b4928cd4b8a diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..2289278f08fff --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +0ee62ea2facfe3ddf617916193c9eeaa58a18d4b2a5fb93f4ae8173b67a0b021c6494f241395c2adbef4c61ec050747fd19c627be596ae338f22074076f9bcb6 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..364dd36ed3f36 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +7cb36a0d4de4dde8b0b3fda27dabaf51 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..47a1c2b2c0dd1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +535a50389776066415ccbb3dbf3798123d6311be674d1ec90ef6d96d146890bb29684d0710c2cf05b5e5f941cc293653c96b510f8136e49d265f58da4f28b1c8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..1185e4c9bf286 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +d6a8d32f64d2e3ed388f305f7d54665b diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..9d554a03ac7af --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +1b67ffdfbaf2b9afe47fb85e8aeb71f3ad05472c49bb8f5de60416cfa0544b6c697ea570e803e7768b1a6dbc617dd14484de231bad2b4a38ca6aaae2ea1af6d0 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..3a1384316a5ea --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +76dfc6c75fe481a9545303a1145dc203 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..0cdc57e40b2d1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +00f6deb7ac6dcdf505299ebbdb2c988f56a06c2055908e9a28975b3a1844891282bf7657baf048f83015935f10b433eccad51def4e5b8340718a5f06be150970 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..c6e3495a557d4 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +cf77a12eb81573147e366d3c7388ec3f diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..bb6a46f619b38 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +27e9aadae513edd93f3de15230de5f4259a0d798c50b9c1166dc78b53b620622a52fc8415ffed7bfde4b616f8ac383a138ef8db7035eba57e7b286d6448ec636 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..7fbdf6e2c5f75 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +82a6940c6df54d193bd801857fa20ef4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..c4d92f26d1770 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +3b08899507e1a473e53c3b0d6264c8cbc939b30c6aa8b00674f16c31c657b0c4cab008580fa5ca439d8a3819a471495a0d3f38d68af9b66a89c2780be7cdd155 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..5446800f1581b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +5c50251f4b9ce27c4756557bda16e24b diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..7abff1f8331df --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +307e6fd7e596b75d25aa3c19b0e6901347c7e6c20afc366c2da9f838c132bf21f86d0c6735cb0e431aec1638bfaa0ceab2915236bca4c5cc507011f16df0b54e diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..187c086ee6382 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +5414363d8e5b6a7348ead693eac3dd09 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..8bf5b34ff88cb --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +fb1681ceb11beeb041afc88699047a509ca35f070af072f11a0a1730796dc9d7b71eb5d60c7c9360b20cf693ac773207ddb544ffda25eec2fa2a5aa4fd40f653 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..79a2bb6d2e103 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +500da909e94415818b984bdaef4c36c5 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..a87f4e855ff62 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +cebbc454b62343e89d9dbf7a4ac61a5f56d9f09bdaf7f82923cac334f885368bb08042b8ffc4719cdeecca44f7d5c0152b9544215d56639fc833a4398f3ba006 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..cb3cb6cf85f1f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +a96e3f7c5f1e843cdff68a6e51215e11 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..6b7bb859a8f1e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +37eedd4ce58fa6a9064864860345c3e7ee9102d12c3c8a7c61e6d996b33c0da77efd1193e6d7cf8d535da1212143d92a73fcb352c5da5a8c71533dd8d1f582ff diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..66768732a5ae1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +b6370238bf188c08d486f01819f65097 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..886735327afaf --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +d78d99fca9f2479203539d03ec10b00cca37cc7b9678a90ab2f909fff22e49a149c959ec6615c588e56ab3bb415479643fa39d105f8685298b06a037bfb982cf diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..b71f18066e35d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +1bfba2b3094584bad91af3ff7a6d6590 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..a819f4b53c3f8 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +efc7066927dcde4290946ab25483a68a3dba2f2b0260de0874387421f4b5e6636c309e39f7fb26d9b2c8eb1d24dd3b01d13b547d01b56e2477e15e40be3fe2aa diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..6eb2db661ec8a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +a2c7e2214432defab74eb1a172f1e544 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..26668b1130cf5 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +a433b0a38c9890a562724beb4c68ff1e1e91c18c8bd44cc64a47084fd89f4280d734cdb13d538236fbc051e471ee8004ca0c222c2849890ad25dbe2ead83d621 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..9c7e28d0d5238 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +cc7170026c7447dbf7cc8435d912f730 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..0f2e1541ac30d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +3940c7786b8aebd45dc55fe61a00b2702c5da4468ff608ae92c763b199fc318042c849d268b965dbbe52aef12e4defb71fb978beb875e9aeb4b62679fbd4bdc3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..f0bf0fbefded2 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +f8a5b84b34fb4f7f3b3e5dbd8fd47eb8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..48bd47d7fb522 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +0789f4072861d91574019ac41000f092d71e354279dc6ca8866599c79035a068d5b7597a33d6c907047231e77872a127c5aa5075da9bd276585d2d183308fbbf diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..f6beb21de797b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +5a426bcf510648aa7610551fa987765d diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..2cbec33e51153 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +1842acbcb51808d70f77ae4bff9b44feef37488452775bc3c9b748df8acbf40cef555072c004c17165b24682de9f5381fc818f65722a54ad90be1d5556326b48 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..629c12d60b578 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +e3c6fc9fa847b1c55091c037ecbbb017 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..792da94458d7a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +4cef0b9728f28cab4666c0a094b6e50f57d5c2e99acd35eec8f1b3500317f52141cae0961c129b05fc0c97290d6c6e82da588542f2275e2501c21f46c539073d diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..4c104620f9393 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +412be2937b18d57ae3ab4e45ea8abe7b diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..2d1187ff20784 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +381fd4b554682755e7e76aa0853408c2bbe6bec8ec752483f771fcee7e974cc9da08ad04b67be2858ca162259a4aae83471d8f1caceb493a6fdf57eaf48f74e2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..dbd586922d529 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +39c39519a806c4ba5da9c31692f503bc diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..89cb26d74a3dd --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +67ab7a4457a16d32de08c92b95c0b544dd34af7c74a9d64207706c668008c225d684deb989c80f459f038aecb02e47e3463b377c5a6439aa4131a32690048917 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..b49a6745a9030 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +0142970d754e2006ef86a94c51ff2875 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..3e3bea7e159a7 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +e56cb6f67e43eec60207d700f4a4b9a0b84f5b988792ab4ca2c2559045ff2966e4ece95da2abe545fe2f9317ddc57afc4be41866dc319435fc7add74b6e3e3d7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..e6bbaaaa4596a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +824ce91e7e4c63304a741e9813d72d3d diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..eeb6e4190d6a5 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +3a7b88c18a457c25d71f59c037b9c483d81ba408cd2d8e01acb79e56faf197062dd92343f8dc1439ad726d26b7de60dd86b336af5ef1cec1f5d469212d2bf557 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..a4c43db9d9b4b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +b2024e2cf83e8a15272d373639dae4a3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..4331d7b9842eb --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +5e982c38501ffdf2424189e7d9510ad4397b6bd72b1b39b80eae048b6fe7435540973138a3d15258c4cfbe4b8d2cac507e5aacd2a9c579753e540b8b466a81dc diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..30afa4267ca93 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +b8233eba5d2e69d84a53c0dfbe96c797 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..bdc7ae6f1d744 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +419e943b1242208f172b668534473ff8760c9de8e7b5478486c2299bd8396488ac7c574965740b7523c5703168f4c968986eef331bb070b0ee3af55a764da643 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..ca84e2fea0fad --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +119786c4238669e70cbb202f57e18097 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..f794a3b15d4d3 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +18b3a57d4dd71938483d6e1720192e1d1235eefcbe502f49eba0f7d4898c08876fc92f6aec9330ed1e2c8a918568a9149dea88e761ef1effc90916b23b8ef2a4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..b680081f8ae2e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +6b9f214df55cba9ffc49c3a32b340a66 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..71ebef42c0ed0 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +e486f11c6b1c8941d4613422a2a764ba655882320ee0373b04adceb080e93bb6ed46c20890b1ed86378f5c51e183f92b7c5fd63c228ec9c74764b830113c1427 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..a054ecbb63da8 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +088622a020360fc4c24c26e096a74cad diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..6b3df5a363706 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +2b00c525e1a038d43b39151672245cef881e3713b59014e7a85eefc17a13b94064b60e618b09c7452fcca554a015bb294f746547d19a692ea2276bbc7fc32846 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..dbb17af8d63b9 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +5aae708824826fb624440dfa9bdeff23 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..3045e916bd683 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +db15905d0255d645e178b85450ced8736bd96c5f94900a81c5b0d7c3a18ce26dd1b594f2f4dcc04662d529ae8c59fe2e8c08ea748330dc0de3f2be9d4eb1689a diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..db6108d31aaf0 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +426b68729a688e5256396a979ea704d5 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..cf7d07a7893c4 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +840b961fb389d5090ea17fcf4d4a8a9c43160355e2a0622342cf8e24d0d3f8d1e65285058ba1ef54881997b0b122d328e5e08c41ecb5eaeddd0a0f75806927e7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..60672232bc808 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +d3e4d22ec02cace792dc2ac5ec62cfe4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..c1986634a6e13 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +e719cdb2660b51a79c83dfe23dddb296a2fc788af3b2cfd5cfbe4d603de53325f92386402e02644717a80167a1aa1d8743b078dbf42614bac73a7c23032cdf9e diff --git a/deps/checksums/Pkg-9419c70af69153cd5c4276bff90fbb135e0aa3f1.tar.gz/md5 b/deps/checksums/Pkg-9419c70af69153cd5c4276bff90fbb135e0aa3f1.tar.gz/md5 new file mode 100644 index 0000000000000..6a1f3e9c17528 --- /dev/null +++ b/deps/checksums/Pkg-9419c70af69153cd5c4276bff90fbb135e0aa3f1.tar.gz/md5 @@ -0,0 +1 @@ +a107b2b69d899e5191e7cdbff263df10 diff --git a/deps/checksums/Pkg-9419c70af69153cd5c4276bff90fbb135e0aa3f1.tar.gz/sha512 b/deps/checksums/Pkg-9419c70af69153cd5c4276bff90fbb135e0aa3f1.tar.gz/sha512 new file mode 100644 index 0000000000000..0e6d8858a9675 --- /dev/null +++ b/deps/checksums/Pkg-9419c70af69153cd5c4276bff90fbb135e0aa3f1.tar.gz/sha512 @@ -0,0 +1 @@ +beab318b1cf96a2f0957f26d33f2d06e6dfabed405778f3945caf6372cc62ed74ff069e912475f3e553cf3013db73a2c73f2a758a3e3b1ba21db0471b7182dbe diff --git a/deps/checksums/Pkg-a1eea5d5bd6493eb233b8e7abcdae6fc7e5751e1.tar.gz/md5 b/deps/checksums/Pkg-a1eea5d5bd6493eb233b8e7abcdae6fc7e5751e1.tar.gz/md5 deleted file mode 100644 index bfad529f9b9e1..0000000000000 --- a/deps/checksums/Pkg-a1eea5d5bd6493eb233b8e7abcdae6fc7e5751e1.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -7d40c950e852131184c0af6376d14f3d diff --git a/deps/checksums/Pkg-a1eea5d5bd6493eb233b8e7abcdae6fc7e5751e1.tar.gz/sha512 b/deps/checksums/Pkg-a1eea5d5bd6493eb233b8e7abcdae6fc7e5751e1.tar.gz/sha512 deleted file mode 100644 index 51db8e03fad6c..0000000000000 --- a/deps/checksums/Pkg-a1eea5d5bd6493eb233b8e7abcdae6fc7e5751e1.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -71a811bcae23fb8999ea4eeb5d878f9bc769c9cc4e940c987d89ee82bb706d7ff4abd5151a9e0053367137488e682e4c8b4bb382fa981895d47ba44f120f5c73 diff --git a/deps/tools/bb-install.mk b/deps/tools/bb-install.mk index 4b6ceb064fc34..e59da7cdcacdb 100644 --- a/deps/tools/bb-install.mk +++ b/deps/tools/bb-install.mk @@ -5,8 +5,7 @@ # 4 cxx11) # signifies a cxx11 ABI dependency # Auto-detect triplet once, create different versions that we use as defaults below for each BB install target -# This is much more efficient than launching `gcc` and `python` once for each BB install target. -BB_TRIPLET_GCCABI_CXXABI := $(shell python $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) "$(shell $(FC) --version | head -1)" "$(shell echo '\#include ' | $(CXX) $(CXXFLAGS) -x c++ -dM -E - | grep _GLIBCXX_USE_CXX11_ABI | awk '{ print $$3 }' )") +BB_TRIPLET_GCCABI_CXXABI := $(shell $(PYTHON) $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) "$(shell $(FC) --version | head -1)" "$(shell echo '\#include ' | $(CXX) $(CXXFLAGS) -x c++ -dM -E - | grep _GLIBCXX_USE_CXX11_ABI | awk '{ print $$3 }' )") BB_TRIPLET_GCCABI := $(subst $(SPACE),-,$(filter-out cxx%,$(subst -,$(SPACE),$(BB_TRIPLET_GCCABI_CXXABI)))) BB_TRIPLET_CXXABI := $(subst $(SPACE),-,$(filter-out gcc%,$(subst -,$(SPACE),$(BB_TRIPLET_GCCABI_CXXABI)))) BB_TRIPLET := $(subst $(SPACE),-,$(filter-out cxx%,$(filter-out gcc%,$(subst -,$(SPACE),$(BB_TRIPLET_GCCABI_CXXABI))))) diff --git a/deps/tools/find_python2 b/deps/tools/find_python2 deleted file mode 100755 index 88d1410e47f18..0000000000000 --- a/deps/tools/find_python2 +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# LLVM requires 2.7 <= python2 < 3 -# - -valid_python() { - $1 -c 'import sys; sys.exit(not (sys.version_info >= (2,7) and sys.version_info < (3,0)))' 2> /dev/null -} - -for python in python python2 python2.7 python27; do - if valid_python $python; then - echo `which $python` - break - fi -done - diff --git a/doc/Manifest.toml b/doc/Manifest.toml index 02381c6737de8..1499098e1ee1e 100644 --- a/doc/Manifest.toml +++ b/doc/Manifest.toml @@ -19,9 +19,9 @@ version = "0.8.1" [[Documenter]] deps = ["Base64", "Dates", "DocStringExtensions", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "REPL", "Test", "Unicode"] -git-tree-sha1 = "7f6ad432deb42aa108bc79205ee96d28724b084f" +git-tree-sha1 = "51f0c7df46abb9c07d80e529718951e634670afb" uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" -version = "0.24.1" +version = "0.24.4" [[DocumenterLaTeX]] deps = ["Documenter", "Test"] @@ -40,8 +40,12 @@ uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" version = "0.21.0" [[LibGit2]] +deps = ["Printf"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + [[Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" @@ -59,7 +63,7 @@ uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" version = "0.3.10" [[Pkg]] -deps = ["Dates", "LibGit2", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] +deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" [[Printf]] diff --git a/doc/README.md b/doc/README.md index c1541ddc7b747..be5426018084d 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,6 +1,6 @@ # Julia Documentation README -Julia's documentation is written in Markdown. A reference of all supported syntax can be found in the [manual](https://docs.julialang.org/en/latest/stdlib/Markdown/). All documentation can be found in the Markdown files in `doc/src/` and the docstrings in Julia source files in `base/`. +Julia's documentation is written in Markdown. A reference of all supported syntax can be found in the [manual](https://docs.julialang.org/en/v1/stdlib/Markdown/). All documentation can be found in the Markdown files in `doc/src/` and the docstrings in Julia source files in `base/` and `stdlib/`. ## Requirements diff --git a/doc/src/manual/parallel-computing.md b/doc/src/manual/parallel-computing.md index 84279a7b3415a..35d131f3a676a 100644 --- a/doc/src/manual/parallel-computing.md +++ b/doc/src/manual/parallel-computing.md @@ -394,7 +394,7 @@ julia> acc[] When using multi-threading we have to be careful when using functions that are not [pure](https://en.wikipedia.org/wiki/Pure_function) as we might get a wrong answer. For instance functions that have their -[name ending with `!`](https://docs.julialang.org/en/latest/manual/style-guide/#Append-!-to-names-of-functions-that-modify-their-arguments-1) +[name ending with `!`](@ref bang-convention) by convention modify their arguments and thus are not pure. However, there are functions that have side effects and their name does not end with `!`. For instance [`findfirst(regex, str)`](@ref) mutates its `regex` argument or diff --git a/doc/src/manual/performance-tips.md b/doc/src/manual/performance-tips.md index 8793d11bcadc6..6d5ad5ff83cc2 100644 --- a/doc/src/manual/performance-tips.md +++ b/doc/src/manual/performance-tips.md @@ -1188,7 +1188,7 @@ Sometimes you can enable better optimization by promising certain program proper The common idiom of using 1:n to index into an AbstractArray is not safe if the Array uses unconventional indexing, and may cause a segmentation fault if bounds checking is turned off. Use `LinearIndices(x)` or `eachindex(x)` -instead (see also [offset-arrays](https://docs.julialang.org/en/latest/devdocs/offset-arrays/)). +instead (see also [Arrays with custom indices](@ref man-custom-indices)). !!! note While `@simd` needs to be placed directly in front of an innermost `for` loop, both `@inbounds` and `@fastmath` diff --git a/doc/src/manual/style-guide.md b/doc/src/manual/style-guide.md index e9d21a48f7c94..e2513bde013bf 100644 --- a/doc/src/manual/style-guide.md +++ b/doc/src/manual/style-guide.md @@ -86,7 +86,7 @@ One issue here is that if a function inherently requires integers, it might be b the caller to decide how non-integers should be converted (e.g. floor or ceiling). Another issue is that declaring more specific types leaves more "space" for future method definitions. -## Append `!` to names of functions that modify their arguments +## [Append `!` to names of functions that modify their arguments](@id bang-convention) Instead of: diff --git a/src/array.c b/src/array.c index ffdf2857bf479..3d660dc78594b 100644 --- a/src/array.c +++ b/src/array.c @@ -318,7 +318,7 @@ JL_DLLEXPORT jl_array_t *jl_ptr_to_array_1d(jl_value_t *atype, void *data, else { align = elsz = sizeof(void*); } - if (((uintptr_t)data) & (align - 1)) + if (((uintptr_t)data) & ((align > JL_HEAP_ALIGNMENT ? JL_HEAP_ALIGNMENT : align) - 1)) jl_exceptionf(jl_argumenterror_type, "unsafe_wrap: pointer %p is not properly aligned to %u bytes", data, align); @@ -385,7 +385,7 @@ JL_DLLEXPORT jl_array_t *jl_ptr_to_array(jl_value_t *atype, void *data, else { align = elsz = sizeof(void*); } - if (((uintptr_t)data) & (align - 1)) + if (((uintptr_t)data) & ((align > JL_HEAP_ALIGNMENT ? JL_HEAP_ALIGNMENT : align) - 1)) jl_exceptionf(jl_argumenterror_type, "unsafe_wrap: pointer %p is not properly aligned to %u bytes", data, align); diff --git a/src/ccall.cpp b/src/ccall.cpp index 7056eb22cd66f..042ee143b65c5 100644 --- a/src/ccall.cpp +++ b/src/ccall.cpp @@ -1,6 +1,7 @@ // This file is a part of Julia. License is MIT: https://julialang.org/license // --- the ccall, cglobal, and llvm intrinsics --- +#include "llvm/Support/Path.h" // for llvm::sys::path // Map from symbol name (in a certain library) to its GV in sysimg and the // DL handle address in the current session. @@ -68,7 +69,8 @@ static bool runtime_sym_gvs(const char *f_lib, const char *f_name, MT &&M, } else { std::string name = "ccalllib_"; - name += f_lib; + name += llvm::sys::path::filename(f_lib); + name += std::to_string(globalUnique++); runtime_lib = true; auto &libgv = libMapGV[f_lib]; if (libgv.first == NULL) { @@ -418,6 +420,7 @@ static Value *llvm_type_rewrite( from = emit_static_alloca(ctx, from_type); to = emit_bitcast(ctx, from, target_type->getPointerTo()); } + // XXX: deal with possible alignment issues ctx.builder.CreateStore(v, from); return ctx.builder.CreateLoad(to); } @@ -514,7 +517,7 @@ static Value *julia_to_native( tbaa_decorate(jvinfo.tbaa, ctx.builder.CreateStore(emit_unbox(ctx, to, jvinfo, jlto), slot)); } else { - emit_memcpy(ctx, slot, jvinfo.tbaa, jvinfo, jl_datatype_size(jlto), jl_datatype_align(jlto)); + emit_memcpy(ctx, slot, jvinfo.tbaa, jvinfo, jl_datatype_size(jlto), julia_alignment(jlto)); } return slot; } @@ -1392,9 +1395,9 @@ 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); - if (arg_root.Vboxed || arg_root.V) { - gc_uses.push_back(arg_root.Vboxed ? arg_root.Vboxed : arg_root.V); - } + Value *gc_root = get_gc_root_for(arg_root); + if (gc_root) + gc_uses.push_back(gc_root); } jl_unionall_t *unionall = (jl_is_method(ctx.linfo->def.method) && jl_is_unionall(ctx.linfo->def.method->sig)) @@ -1489,8 +1492,9 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) if (!retboxed) { return mark_or_box_ccall_result( ctx, - emit_pointer_from_objref(ctx, - emit_bitcast(ctx, ary, T_prjlvalue)), + ctx.builder.CreatePtrToInt( + emit_pointer_from_objref(ctx, emit_bitcast(ctx, ary, T_prjlvalue)), + T_size), retboxed, rt, unionall, static_rt); } else { @@ -1498,7 +1502,7 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) ctx, ctx.builder.CreateAddrSpaceCast( ctx.builder.CreateIntToPtr(ary, T_pjlvalue), - T_prjlvalue), // TODO: this addrspace cast is invalid (implies that the value is rooted elsewhere) + T_prjlvalue), // WARNING: this addrspace cast necessarily implies that the value is rooted elsewhere! retboxed, rt, unionall, static_rt); } } @@ -1649,7 +1653,7 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) else if (is_libjulia_func(jl_string_ptr)) { assert(lrt == T_size); assert(!isVa && !llvmcall && nccallargs == 1); - Value *obj = emit_pointer_from_objref(ctx, boxed(ctx, argv[0])); + Value *obj = ctx.builder.CreatePtrToInt(emit_pointer_from_objref(ctx, boxed(ctx, argv[0])), T_size); Value *strp = ctx.builder.CreateAdd(obj, ConstantInt::get(T_size, sizeof(void*))); JL_GC_POP(); return mark_or_box_ccall_result(ctx, strp, retboxed, rt, unionall, static_rt); @@ -1665,7 +1669,8 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) ctx.builder.CreateIntToPtr(destp, T_pint8), 1, ctx.builder.CreateIntToPtr( - emit_unbox(ctx, T_size, src, (jl_value_t*)jl_voidpointer_type), T_pint8), + emit_unbox(ctx, T_size, src, (jl_value_t*)jl_voidpointer_type), + T_pint8), 0, emit_unbox(ctx, T_size, n, (jl_value_t*)jl_ulong_type), false); @@ -1800,7 +1805,7 @@ jl_cgval_t function_sig_t::emit_a_ccall( literal_pointer_val(ctx, (jl_value_t*)rt)); sretboxed = true; gc_uses.push_back(result); - argvals[0] = ctx.builder.CreateIntToPtr(emit_pointer_from_objref(ctx, result), fargt_sig.at(0)); + argvals[0] = ctx.builder.CreateBitCast(emit_pointer_from_objref(ctx, result), fargt_sig.at(0)); } } @@ -1945,7 +1950,7 @@ jl_cgval_t function_sig_t::emit_a_ccall( assert(rtsz > 0); Value *strct = emit_allocobj(ctx, rtsz, runtime_bt); MDNode *tbaa = jl_is_mutable(rt) ? tbaa_mutab : tbaa_immut; - int boxalign = jl_datatype_align(rt); + int boxalign = julia_alignment(rt); // copy the data from the return value to the new struct const DataLayout &DL = jl_data_layout; auto resultTy = result->getType(); diff --git a/src/cgutils.cpp b/src/cgutils.cpp index fbeabe667a6de..d5944326d6ee7 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -253,24 +253,34 @@ static DIType *julia_type_to_di(jl_value_t *jt, DIBuilder *dbuilder, bool isboxe return (llvm::DIType*)jdt->ditype; } -static Value *emit_pointer_from_objref_internal(jl_codectx_t &ctx, Value *V) +static Value *emit_pointer_from_objref(jl_codectx_t &ctx, Value *V) { + unsigned AS = cast(V->getType())->getAddressSpace(); + if (AS != AddressSpace::Tracked && AS != AddressSpace::Derived) + return V; + V = decay_derived(V); + Type *T = PointerType::get(T_jlvalue, AddressSpace::Derived); + if (V->getType() != T) + V = ctx.builder.CreateBitCast(V, T); CallInst *Call = ctx.builder.CreateCall(prepare_call(pointer_from_objref_func), V); - Call->addAttribute(AttributeList::FunctionIndex, Attribute::ReadNone); + Call->setAttributes(pointer_from_objref_func->getAttributes()); return Call; } -static Value *emit_pointer_from_objref(jl_codectx_t &ctx, Value *V) +static Value *get_gc_root_for(const jl_cgval_t &x) { - unsigned AS = cast(V->getType())->getAddressSpace(); - if (AS != AddressSpace::Tracked && AS != AddressSpace::Derived) - return ctx.builder.CreatePtrToInt(V, T_size); - V = ctx.builder.CreateBitCast(decay_derived(V), - PointerType::get(T_jlvalue, AddressSpace::Derived)); - - return ctx.builder.CreatePtrToInt( - emit_pointer_from_objref_internal(ctx, V), - T_size); + if (x.Vboxed) + return x.Vboxed; + if (x.ispointer() && !x.constant) { + assert(x.V); + if (PointerType *T = dyn_cast(x.V->getType())) { + if (T->getAddressSpace() == AddressSpace::Tracked || + T->getAddressSpace() == AddressSpace::Derived) { + return x.V; + } + } + } + return nullptr; } // --- emitting pointers directly into code --- @@ -386,8 +396,8 @@ static unsigned julia_alignment(jl_value_t *jt) } assert(jl_is_datatype(jt) && ((jl_datatype_t*)jt)->layout); unsigned alignment = jl_datatype_align(jt); - assert(alignment <= JL_HEAP_ALIGNMENT); - assert(JL_HEAP_ALIGNMENT % alignment == 0); + if (alignment > JL_HEAP_ALIGNMENT) + return JL_HEAP_ALIGNMENT; return alignment; } @@ -594,7 +604,7 @@ static unsigned jl_field_align(jl_datatype_t *dt, size_t i) unsigned al = jl_field_offset(dt, i); al |= 16; al &= -al; - return std::min(al, jl_datatype_align(dt)); + return std::min({al, (unsigned)jl_datatype_align(dt), (unsigned)JL_HEAP_ALIGNMENT}); } static Type *julia_struct_to_llvm(jl_value_t *jt, jl_unionall_t *ua, bool *isboxed, bool llvmcall) @@ -636,7 +646,6 @@ static Type *julia_struct_to_llvm(jl_value_t *jt, jl_unionall_t *ua, bool *isbox if (jst->layout) { assert(isptr == jl_field_isptr(jst, i)); assert((isptr ? sizeof(void*) : fsz + jl_is_uniontype(ty)) == jl_field_size(jst, i)); - assert(al <= jl_field_align(jst, i)); } Type *lty; if (isptr) { @@ -647,8 +656,15 @@ static Type *julia_struct_to_llvm(jl_value_t *jt, jl_unionall_t *ua, bool *isbox lty = T_int8; } else if (jl_is_uniontype(ty)) { - // pick an Integer type size such that alignment will be correct - // and always end with an Int8 (selector byte) + // pick an Integer type size such that alignment will generally be correct, + // and always end with an Int8 (selector byte). + // We may need to insert padding first to get to the right offset + if (al > MAX_ALIGN) { + Type *AlignmentType = ArrayType::get(VectorType::get(T_int8, al), 0); + latypes.push_back(AlignmentType); + al = MAX_ALIGN; + } + assert(al <= jl_field_align(jst, i)); Type *AlignmentType = IntegerType::get(jl_LLVMContext, 8 * al); unsigned NumATy = fsz / al; unsigned remainder = fsz % al; @@ -678,8 +694,8 @@ static Type *julia_struct_to_llvm(jl_value_t *jt, jl_unionall_t *ua, bool *isbox assert(jst->layout == NULL); // otherwise should have been caught above decl = T_void; } - else if (jl_is_vecelement_type(jt)) { - // VecElement type is unwrapped in LLVM + else if (jl_is_vecelement_type(jt) && !jl_is_uniontype(jl_svecref(ftypes, 0))) { + // VecElement type is unwrapped in LLVM (when possible) decl = latypes[0]; } else if (isarray && !type_is_ghost(lasttype)) { @@ -1212,7 +1228,7 @@ static Value *emit_isconcrete(jl_codectx_t &ctx, Value *typ) { Value *isconcrete; isconcrete = ctx.builder.CreateConstInBoundsGEP1_32(T_int8, emit_bitcast(ctx, decay_derived(typ), T_pint8), offsetof(jl_datatype_t, isconcretetype)); - isconcrete = ctx.builder.CreateLoad(isconcrete, tbaa_const); + isconcrete = ctx.builder.CreateLoad(T_int8, isconcrete, tbaa_const); isconcrete = ctx.builder.CreateTrunc(isconcrete, T_int1); return isconcrete; } @@ -1336,7 +1352,7 @@ static jl_cgval_t typed_load(jl_codectx_t &ctx, Value *ptr, Value *idx_0based, j //} //else { load = ctx.builder.CreateAlignedLoad(data, - isboxed || alignment ? alignment : julia_alignment(jltype), + isboxed || alignment ? alignment : julia_alignment(jltype), false); if (aliasscope) load->setMetadata("alias.scope", aliasscope); @@ -1898,7 +1914,7 @@ static Value *emit_arrayptr(jl_codectx_t &ctx, const jl_cgval_t &tinfo, bool isb static Value *emit_unsafe_arrayptr(jl_codectx_t &ctx, const jl_cgval_t &tinfo, bool isboxed = false) { Value *t = boxed(ctx, tinfo); - t = emit_pointer_from_objref_internal(ctx, decay_derived(t)); + t = emit_pointer_from_objref(ctx, decay_derived(t)); return emit_arrayptr_internal(ctx, tinfo, t, 0, isboxed); } @@ -2434,7 +2450,8 @@ static Value *boxed(jl_codectx_t &ctx, const jl_cgval_t &vinfo) static void emit_unionmove(jl_codectx_t &ctx, Value *dest, MDNode *tbaa_dst, const jl_cgval_t &src, Value *skip, bool isVolatile=false) { if (AllocaInst *ai = dyn_cast(dest)) - ctx.builder.CreateStore(UndefValue::get(ai->getAllocatedType()), ai); + // TODO: make this a lifetime_end & dereferencable annotation? + ctx.builder.CreateAlignedStore(UndefValue::get(ai->getAllocatedType()), ai, ai->getAlignment()); if (jl_is_concrete_type(src.typ) || src.constant) { jl_value_t *typ = src.constant ? jl_typeof(src.constant) : src.typ; Type *store_ty = julia_type_to_llvm(typ); @@ -2694,7 +2711,7 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg if (jl_field_isptr(sty, i)) { fval = boxed(ctx, fval_info); if (!init_as_value) - tbaa_decorate(tbaa_stack, ctx.builder.CreateStore(fval, dest)); + tbaa_decorate(tbaa_stack, ctx.builder.CreateAlignedStore(fval, dest, jl_field_align(sty, i))); } else if (jl_is_uniontype(jtype)) { // compute tindex from rhs @@ -2738,6 +2755,8 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg } llvm_idx = ptindex; fval = tindex; + if (jl_is_vecelement_type(ty)) + fval = ctx.builder.CreateInsertValue(strct, fval, makeArrayRef(llvm_idx)); } else { Value *ptindex = emit_struct_gep(ctx, lt, strct, offs + fsz); diff --git a/src/codegen.cpp b/src/codegen.cpp index dad73e3f08030..6b0dce9eccbda 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -296,7 +296,7 @@ static Function *jlsubtype_func; static Function *jlapplytype_func; static Function *jl_object_id__func; static Function *setjmp_func; -static Function *memcmp_derived_func; +static Function *memcmp_func; static Function *box_int8_func; static Function *box_uint8_func; static Function *box_int16_func; @@ -723,7 +723,7 @@ static inline jl_cgval_t mark_julia_type(jl_codectx_t &ctx, Value *v, bool isbox if (type_is_ghost(T)) { return ghostValue(typ); } - if (v && !isboxed && v->getType()->isAggregateType() && CountTrackedPointers(v->getType()).count == 0) { + if (v && !isboxed && v->getType()->isAggregateType() && !jl_is_vecelement_type(typ) && CountTrackedPointers(v->getType()).count == 0) { // eagerly put this back onto the stack // llvm mem2reg pass will remove this if unneeded return value_to_pointer(ctx, v, typ, NULL); @@ -1685,7 +1685,7 @@ void *jl_get_llvmf_decl(jl_method_instance_t *mi, size_t world, bool getwrapper, // internal error return NULL; - const jl_llvm_functions_t &decls = codeinst->functionObjectsDecls; + jl_llvm_functions_t decls = codeinst->functionObjectsDecls; if (decls.functionObject == NULL && codeinst->invoke == jl_fptr_const_return && jl_is_method(mi->def.method)) { // normally we don't generate native code for these functions, so need an exception here // This leaks a bit of memory to cache native code that we'll never actually need @@ -1699,6 +1699,7 @@ void *jl_get_llvmf_decl(jl_method_instance_t *mi, size_t world, bool getwrapper, if (codeinst == NULL) // internal error return NULL; + decls = codeinst->functionObjectsDecls; } JL_UNLOCK(&codegen_lock); } @@ -2373,13 +2374,24 @@ static Value *emit_bits_compare(jl_codectx_t &ctx, jl_cgval_t arg1, jl_cgval_t a Value *varg1 = arg1.ispointer() ? maybe_decay_tracked(data_pointer(ctx, arg1)) : arg1.V; Value *varg2 = arg2.ispointer() ? maybe_decay_tracked(data_pointer(ctx, arg2)) : arg2.V; if (sz > 512 && !sty->layout->haspadding) { - varg1 = decay_derived(arg1.ispointer() ? varg1 : value_to_pointer(ctx, arg1).V); - varg2 = decay_derived(arg2.ispointer() ? varg2 : value_to_pointer(ctx, arg2).V); - Value *answer = ctx.builder.CreateCall(prepare_call(memcmp_derived_func), { - maybe_bitcast(ctx, varg1, T_pint8), - maybe_bitcast(ctx, varg2, T_pint8), - ConstantInt::get(T_size, sz) - }); + if (!arg1.ispointer()) + varg1 = value_to_pointer(ctx, arg1).V; + if (!arg2.ispointer()) + varg2 = value_to_pointer(ctx, arg2).V; + varg1 = emit_pointer_from_objref(ctx, varg1); + varg2 = emit_pointer_from_objref(ctx, varg2); + Value *gc_uses[2]; + int nroots = 0; + if ((gc_uses[nroots] = get_gc_root_for(arg1))) + nroots++; + if ((gc_uses[nroots] = get_gc_root_for(arg2))) + nroots++; + OperandBundleDef OpBundle("jl_roots", gc_uses); + Value *answer = ctx.builder.CreateCall(prepare_call(memcmp_func), { + ctx.builder.CreateBitCast(varg1, T_pint8), + ctx.builder.CreateBitCast(varg2, T_pint8), + ConstantInt::get(T_size, sz) }, + ArrayRef(&OpBundle, nroots ? 1 : 0)); return ctx.builder.CreateICmpEQ(answer, ConstantInt::get(T_int32, 0)); } else { @@ -2590,7 +2602,7 @@ static bool emit_builtin_call(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f, #ifdef _P64 nva = ctx.builder.CreateTrunc(nva, T_int32); #endif - Value *theArgs = ctx.builder.CreateInBoundsGEP(ctx.argArray, ConstantInt::get(T_size, ctx.nReqArgs)); + Value *theArgs = ctx.builder.CreateInBoundsGEP(T_prjlvalue, ctx.argArray, ConstantInt::get(T_size, ctx.nReqArgs)); Value *r = ctx.builder.CreateCall(prepare_call(jlapplygeneric_func), { theF, theArgs, nva }); *ret = mark_julia_type(ctx, r, true, jl_any_type); return true; @@ -2846,13 +2858,13 @@ static bool emit_builtin_call(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f, if (load->getPointerOperand() == ctx.slots[ctx.vaSlot].boxroot && ctx.argArray) { Value *valen = emit_n_varargs(ctx); jl_cgval_t va_ary( // fake instantiation of a cgval, in order to call emit_bounds_check - ctx.builder.CreateInBoundsGEP(ctx.argArray, ConstantInt::get(T_size, ctx.nReqArgs)), + ctx.builder.CreateInBoundsGEP(T_prjlvalue, ctx.argArray, ConstantInt::get(T_size, ctx.nReqArgs)), NULL, false, NULL, NULL); Value *idx = emit_unbox(ctx, T_size, fld, (jl_value_t*)jl_long_type); jl_value_t *boundscheck = (nargs == 3 ? argv[3].constant : jl_true); idx = emit_bounds_check(ctx, va_ary, NULL, idx, valen, boundscheck); idx = ctx.builder.CreateAdd(idx, ConstantInt::get(T_size, ctx.nReqArgs)); - Instruction *v = ctx.builder.CreateLoad(ctx.builder.CreateInBoundsGEP(ctx.argArray, idx)); + Instruction *v = ctx.builder.CreateLoad(T_prjlvalue, ctx.builder.CreateInBoundsGEP(ctx.argArray, idx)); // if we know the result type of this load, we will mark that information here too tbaa_decorate(tbaa_value, maybe_mark_load_dereferenceable(v, false, rt)); *ret = mark_julia_type(ctx, v, /*boxed*/ true, rt); @@ -2994,8 +3006,8 @@ static bool emit_builtin_call(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f, Value *idx = emit_unbox(ctx, T_size, fld, (jl_value_t*)jl_long_type); jl_value_t *boundscheck = (nargs == 3 ? argv[3].constant : jl_true); emit_bounds_check(ctx, typ, (jl_value_t*)jl_datatype_type, idx, types_len, boundscheck); - Value *fieldtyp_p = ctx.builder.CreateInBoundsGEP(decay_derived(emit_bitcast(ctx, types_svec, T_pprjlvalue)), idx); - Value *fieldtyp = tbaa_decorate(tbaa_const, ctx.builder.CreateLoad(fieldtyp_p)); + Value *fieldtyp_p = ctx.builder.CreateInBoundsGEP(T_prjlvalue, decay_derived(emit_bitcast(ctx, types_svec, T_pprjlvalue)), idx); + Value *fieldtyp = tbaa_decorate(tbaa_const, ctx.builder.CreateLoad(T_prjlvalue, fieldtyp_p)); *ret = mark_julia_type(ctx, fieldtyp, true, (jl_value_t*)jl_type_type); return true; } @@ -3009,7 +3021,7 @@ static bool emit_builtin_call(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f, if (sty == jl_string_type || sty == jl_simplevector_type) { // String and SimpleVector's length fields have the same layout auto ptr = emit_bitcast(ctx, boxed(ctx, obj), T_psize); - Value *len = tbaa_decorate(tbaa_mutab, ctx.builder.CreateLoad(ptr)); + Value *len = tbaa_decorate(tbaa_mutab, ctx.builder.CreateLoad(T_size, ptr)); if (sty == jl_simplevector_type) { len = ctx.builder.CreateMul(len, ConstantInt::get(T_size, sizeof(void*))); len = ctx.builder.CreateAdd(len, ConstantInt::get(T_size, sizeof(void*))); @@ -3424,7 +3436,7 @@ static Value *global_binding_pointer(jl_codectx_t &ctx, jl_module_t *m, jl_sym_t GlobalVariable *bindinggv = new GlobalVariable(*ctx.f->getParent(), T_pjlvalue, false, GlobalVariable::InternalLinkage, initnul, name.str()); - Value *cachedval = ctx.builder.CreateLoad(bindinggv); + Value *cachedval = ctx.builder.CreateLoad(T_pjlvalue, bindinggv); BasicBlock *have_val = BasicBlock::Create(jl_LLVMContext, "found"), *not_found = BasicBlock::Create(jl_LLVMContext, "notfound"); BasicBlock *currentbb = ctx.builder.GetInsertBlock(); @@ -3476,7 +3488,7 @@ static jl_cgval_t emit_sparam(jl_codectx_t &ctx, size_t i) T_prjlvalue, ctx.spvals_ptr, i + sizeof(jl_svec_t) / sizeof(jl_value_t*)); - Value *sp = tbaa_decorate(tbaa_const, ctx.builder.CreateLoad(bp)); + Value *sp = tbaa_decorate(tbaa_const, ctx.builder.CreateLoad(T_prjlvalue, bp)); Value *isnull = ctx.builder.CreateICmpNE(emit_typeof(ctx, sp), maybe_decay_untracked(literal_pointer_val(ctx, (jl_value_t*)jl_tvar_type))); jl_unionall_t *sparam = (jl_unionall_t*)ctx.linfo->def.method->sig; @@ -3499,7 +3511,7 @@ static jl_cgval_t emit_global(jl_codectx_t &ctx, jl_sym_t *sym) // double-check that a global variable is actually defined. this // can be a problem in parallel when a definition is missing on // one machine. - return mark_julia_type(ctx, tbaa_decorate(tbaa_binding, ctx.builder.CreateLoad(bp)), true, jl_any_type); + return mark_julia_type(ctx, tbaa_decorate(tbaa_binding, ctx.builder.CreateLoad(T_prjlvalue, bp)), true, jl_any_type); } return emit_checked_var(ctx, bp, sym, false, tbaa_binding); } @@ -3514,15 +3526,15 @@ static jl_cgval_t emit_isdefined(jl_codectx_t &ctx, jl_value_t *sym) return mark_julia_const(jl_true); if (vi.boxroot == NULL || vi.pTIndex != NULL) { assert(vi.defFlag); - isnull = ctx.builder.CreateLoad(vi.defFlag, vi.isVolatile); + isnull = ctx.builder.CreateLoad(T_int1, vi.defFlag, vi.isVolatile); } if (vi.boxroot != NULL) { - Value *boxed = ctx.builder.CreateLoad(vi.boxroot, vi.isVolatile); + Value *boxed = ctx.builder.CreateLoad(T_prjlvalue, vi.boxroot, vi.isVolatile); Value *box_isnull = ctx.builder.CreateICmpNE(boxed, maybe_decay_untracked(V_null)); if (vi.pTIndex) { // value is either boxed in the stack slot, or unboxed in value // as indicated by testing (pTIndex & 0x80) - Value *tindex = ctx.builder.CreateLoad(vi.pTIndex, vi.isVolatile); + Value *tindex = ctx.builder.CreateLoad(T_int8, vi.pTIndex, vi.isVolatile); Value *load_unbox = ctx.builder.CreateICmpEQ( ctx.builder.CreateAnd(tindex, ConstantInt::get(T_int8, 0x80)), ConstantInt::get(T_int8, 0)); @@ -3547,7 +3559,7 @@ static jl_cgval_t emit_isdefined(jl_codectx_t &ctx, jl_value_t *sym) T_prjlvalue, ctx.spvals_ptr, i + sizeof(jl_svec_t) / sizeof(jl_value_t*)); - Value *sp = tbaa_decorate(tbaa_const, ctx.builder.CreateLoad(bp)); + Value *sp = tbaa_decorate(tbaa_const, ctx.builder.CreateLoad(T_prjlvalue, bp)); isnull = ctx.builder.CreateICmpNE(emit_typeof(ctx, sp), maybe_decay_untracked(literal_pointer_val(ctx, (jl_value_t*)jl_tvar_type))); } @@ -3601,8 +3613,8 @@ static jl_cgval_t emit_varinfo(jl_codectx_t &ctx, jl_varinfo_t &vi, jl_sym_t *va AllocaInst *ssaslot = cast(varslot->clone()); ssaslot->insertAfter(varslot); if (vi.isVolatile) { - Value *unbox = ctx.builder.CreateLoad(vi.value.V, true); - ctx.builder.CreateStore(unbox, ssaslot); + Value *unbox = ctx.builder.CreateAlignedLoad(ssaslot->getAllocatedType(), varslot, varslot->getAlignment(), true); + ctx.builder.CreateAlignedStore(unbox, ssaslot, ssaslot->getAlignment()); } else { const DataLayout &DL = jl_data_layout; @@ -3611,18 +3623,18 @@ static jl_cgval_t emit_varinfo(jl_codectx_t &ctx, jl_varinfo_t &vi, jl_sym_t *va } Value *tindex = NULL; if (vi.pTIndex) - tindex = ctx.builder.CreateLoad(vi.pTIndex, vi.isVolatile); + tindex = ctx.builder.CreateLoad(T_int8, vi.pTIndex, vi.isVolatile); v = mark_julia_slot(ssaslot, vi.value.typ, tindex, tbaa_stack); } if (vi.boxroot == NULL) v = update_julia_type(ctx, v, typ); if (vi.usedUndef) { assert(vi.defFlag); - isnull = ctx.builder.CreateLoad(vi.defFlag, vi.isVolatile); + isnull = ctx.builder.CreateLoad(T_int1, vi.defFlag, vi.isVolatile); } } if (vi.boxroot != NULL) { - Instruction *boxed = ctx.builder.CreateLoad(vi.boxroot, vi.isVolatile); + Instruction *boxed = ctx.builder.CreateLoad(T_prjlvalue, vi.boxroot, vi.isVolatile); Value *box_isnull; if (vi.usedUndef) box_isnull = ctx.builder.CreateICmpNE(boxed, maybe_decay_untracked(V_null)); @@ -3714,7 +3726,7 @@ static void emit_vi_assignment_unboxed(jl_codectx_t &ctx, jl_varinfo_t &vi, Valu if (vi.value.V != rval_info.V) { Value *copy_bytes = ConstantInt::get(T_int32, jl_datatype_size(vi.value.typ)); emit_memcpy(ctx, vi.value.V, tbaa_stack, rval_info, copy_bytes, - jl_datatype_align(rval_info.typ), vi.isVolatile); + julia_alignment(rval_info.typ), vi.isVolatile); } } else { @@ -3803,12 +3815,12 @@ static void emit_phinode_assign(jl_codectx_t &ctx, ssize_t idx, jl_value_t *r) dest = emit_static_alloca(ctx, vtype); Value *phi = emit_static_alloca(ctx, vtype); #if JL_LLVM_VERSION >= 70000 - ctx.builder.CreateMemCpy(phi, jl_datatype_align(phiType), + ctx.builder.CreateMemCpy(phi, julia_alignment(phiType), dest, 0, jl_datatype_size(phiType), false); #else ctx.builder.CreateMemCpy(phi, dest, jl_datatype_size(phiType), - jl_datatype_align(phiType), false); + julia_alignment(phiType), false); #endif ctx.builder.CreateLifetimeEnd(dest); slot = mark_julia_slot(phi, phiType, NULL, tbaa_stack); @@ -4663,7 +4675,7 @@ static Function* gen_cfun_wrapper( if (aref) { if (jargty == (jl_value_t*)jl_any_type) { inputarg = mark_julia_type(ctx, - ctx.builder.CreateLoad(emit_bitcast(ctx, val, T_pprjlvalue)), + ctx.builder.CreateLoad(T_prjlvalue, emit_bitcast(ctx, val, T_pprjlvalue)), true, jl_any_type); } else if (static_at && jl_is_concrete_immutable(jargty)) { // anything that could be stored unboxed @@ -5325,7 +5337,7 @@ static Function *gen_invoke_wrapper(jl_method_instance_t *lam, jl_value_t *jlret } else { Value *argPtr = ctx.builder.CreateConstInBoundsGEP1_32(T_prjlvalue, argArray, i - 1); - theArg = maybe_mark_load_dereferenceable(ctx.builder.CreateLoad(argPtr), false, ty); + theArg = maybe_mark_load_dereferenceable(ctx.builder.CreateLoad(T_prjlvalue, argPtr), false, ty); } if (!isboxed) { theArg = decay_derived(emit_bitcast(ctx, theArg, PointerType::get(lty, 0))); @@ -5345,7 +5357,7 @@ static Function *gen_invoke_wrapper(jl_method_instance_t *lam, jl_value_t *jlret if (retarg == 0) theArg = funcArg; else - theArg = ctx.builder.CreateLoad(ctx.builder.CreateConstInBoundsGEP1_32(T_prjlvalue, argArray, retarg - 1)); + theArg = ctx.builder.CreateLoad(T_prjlvalue, ctx.builder.CreateConstInBoundsGEP1_32(T_prjlvalue, argArray, retarg - 1)); retval = mark_julia_type(ctx, theArg, true, jl_any_type); } else { @@ -6120,8 +6132,8 @@ static std::unique_ptr emit_function( theArg = mark_julia_type(ctx, fArg, true, vi.value.typ); } else { - Value *argPtr = ctx.builder.CreateInBoundsGEP(argArray, ConstantInt::get(T_size, i-1)); - auto load = maybe_mark_load_dereferenceable(ctx.builder.CreateLoad(argPtr), + Value *argPtr = ctx.builder.CreateInBoundsGEP(T_prjlvalue, argArray, ConstantInt::get(T_size, i-1)); + auto load = maybe_mark_load_dereferenceable(ctx.builder.CreateLoad(T_prjlvalue, argPtr), false, vi.value.typ); theArg = mark_julia_type(ctx, load, true, vi.value.typ); if (ctx.debug_enabled && vi.dinfo && !vi.boxroot && !vi.value.V) { @@ -6198,7 +6210,7 @@ static std::unique_ptr emit_function( restTuple = ctx.builder.CreateCall(prepare_call(jltuple_func), { maybe_decay_untracked(V_null), - ctx.builder.CreateInBoundsGEP(argArray, + ctx.builder.CreateInBoundsGEP(T_prjlvalue, argArray, ConstantInt::get(T_size, nreq - 1)), ctx.builder.CreateSub(argCount, ConstantInt::get(T_int32, nreq - 1)) }); @@ -6563,16 +6575,17 @@ static std::unique_ptr emit_function( } } else { - Type *store_ty = julia_type_to_llvm(retvalinfo.typ); + Type *store_ty = retvalinfo.V->getType(); Type *dest_ty = store_ty->getPointerTo(); - Value *Val = emit_unbox(ctx, store_ty, retvalinfo, retvalinfo.typ); + Value *Val = retvalinfo.V; if (returninfo.return_roots) { - assert(store_ty == Val->getType()); + assert(julia_type_to_llvm(retvalinfo.typ) == store_ty); emit_sret_roots(ctx, false, Val, store_ty, f->arg_begin() + 1, returninfo.return_roots); } if (dest_ty != sret->getType()) sret = emit_bitcast(ctx, sret, dest_ty); - ctx.builder.CreateStore(Val, sret); + ctx.builder.CreateAlignedStore(Val, sret, julia_alignment(retvalinfo.typ)); + assert(retvalinfo.TIndex == NULL && "unreachable"); // unimplemented representation } } @@ -7334,16 +7347,17 @@ static void init_julia_llvm_env(Module *m) add_named_global(setjmp_func, &jl_setjmp_f); std::vector args_memcmp(0); - args_memcmp.push_back(T_pint8_derived); - args_memcmp.push_back(T_pint8_derived); + args_memcmp.push_back(T_pint8); + args_memcmp.push_back(T_pint8); args_memcmp.push_back(T_size); - memcmp_derived_func = + memcmp_func = Function::Create(FunctionType::get(T_int32, args_memcmp, false), Function::ExternalLinkage, "memcmp", m); - memcmp_derived_func->addFnAttr(Attribute::ReadOnly); - memcmp_derived_func->addFnAttr(Attribute::NoUnwind); - memcmp_derived_func->addFnAttr(Attribute::ArgMemOnly); - add_named_global(memcmp_derived_func, &memcmp); + memcmp_func->addFnAttr(Attribute::ReadOnly); + memcmp_func->addFnAttr(Attribute::NoUnwind); + memcmp_func->addFnAttr(Attribute::ArgMemOnly); + add_named_global(memcmp_func, &memcmp); + // TODO: inferLibFuncAttributes(*memcmp_func, TLI); std::vector te_args(0); te_args.push_back(T_pint8); diff --git a/src/datatype.c b/src/datatype.c index 57f2111127bfa..779d0a30c98af 100644 --- a/src/datatype.c +++ b/src/datatype.c @@ -105,6 +105,8 @@ static jl_datatype_layout_t *jl_get_layout(uint32_t nfields, jl_fielddesc32_t desc[], uint32_t pointers[]) JL_NOTSAFEPOINT { + assert(alignment); // should have been verified by caller + // compute the smallest fielddesc type that can hold the layout description int fielddesc_type = 0; if (nfields > 0) { @@ -191,19 +193,7 @@ unsigned jl_special_vector_alignment(size_t nfields, jl_value_t *t) { if (!jl_is_vecelement_type(t)) return 0; - // LLVM 3.7 and 3.8 either crash or generate wrong code for many - // SIMD vector sizes N. It seems the rule is that N can have at - // most 2 non-zero bits. (This is true at least for N<=100.) See - // also . - size_t mask = nfields; - // See e.g. - // for an - // explanation of this bit-counting algorithm. - mask &= mask-1; // clear least-significant 1 if present - mask &= mask-1; // clear another 1 - if (mask) - return 0; // nfields has more than two 1s - assert(jl_datatype_nfields(t)==1); + assert(jl_datatype_nfields(t) == 1); jl_value_t *ty = jl_field_type((jl_datatype_t*)t, 0); if (!jl_is_primitivetype(ty)) // LLVM requires that a vector element be a primitive type. @@ -211,16 +201,12 @@ unsigned jl_special_vector_alignment(size_t nfields, jl_value_t *t) // motivating use case comes up for Julia, we reject pointers. return 0; size_t elsz = jl_datatype_size(ty); - if (elsz>8 || (1<alignment; alignment*=2 ) - continue; - return alignment; + size_t size = nfields * elsz; + // Use natural alignment for this vector: this matches LLVM and clang. + return next_power_of_two(size); } STATIC_INLINE int jl_is_datatype_make_singleton(jl_datatype_t *d) @@ -464,7 +450,6 @@ void jl_compute_field_offsets(jl_datatype_t *st) haspadding = 1; } } - assert(al <= JL_HEAP_ALIGNMENT && (JL_HEAP_ALIGNMENT % al) == 0); if (al != 0) { size_t alsz = LLT_ALIGN(sz, al); if (sz & (al - 1)) @@ -484,10 +469,7 @@ void jl_compute_field_offsets(jl_datatype_t *st) // Some tuples become LLVM vectors with stronger alignment than what was calculated above. unsigned al = jl_special_vector_alignment(nfields, firstty); assert(al % alignm == 0); - // JL_HEAP_ALIGNMENT is the biggest alignment we can guarantee on the heap. - if (al > JL_HEAP_ALIGNMENT) - alignm = JL_HEAP_ALIGNMENT; - else if (al) + if (al > alignm) alignm = al; } st->size = LLT_ALIGN(sz, alignm); diff --git a/src/gc.h b/src/gc.h index 270f1101debee..ee460df679c12 100644 --- a/src/gc.h +++ b/src/gc.h @@ -374,7 +374,7 @@ STATIC_INLINE unsigned ffs_u32(uint32_t bitvec) _BitScanForward(&j, bitvec); return j; #else - return ffs(bitvec) - 1; + return __builtin_ffs(bitvec) - 1; #endif } #endif diff --git a/src/intrinsics.cpp b/src/intrinsics.cpp index 90a2ff695ae77..deeca508061c6 100644 --- a/src/intrinsics.cpp +++ b/src/intrinsics.cpp @@ -156,25 +156,25 @@ static Constant *julia_const_to_llvm(const void *ptr, jl_datatype_t *bt) if (bt == jl_bool_type) return ConstantInt::get(T_int8, (*(const uint8_t*)ptr) ? 1 : 0); - if (jl_is_vecelement_type((jl_value_t*)bt)) - bt = (jl_datatype_t*)jl_tparam0(bt); - Type *lt = julia_struct_to_llvm((jl_value_t*)bt, NULL, NULL); + if (jl_is_vecelement_type((jl_value_t*)bt) && !jl_is_uniontype(jl_tparam0(bt))) + bt = (jl_datatype_t*)jl_tparam0(bt); + if (type_is_ghost(lt)) return UndefValue::get(lt); - if (jl_is_primitivetype(bt)) { - if (lt->isFloatTy()) { - uint32_t data32 = *(const uint32_t*)ptr; - return ConstantFP::get(jl_LLVMContext, - APFloat(lt->getFltSemantics(), APInt(32, data32))); - } - if (lt->isDoubleTy()) { - uint64_t data64 = *(const uint64_t*)ptr; - return ConstantFP::get(jl_LLVMContext, - APFloat(lt->getFltSemantics(), APInt(64, data64))); - } + if (lt->isFloatTy()) { + uint32_t data32 = *(const uint32_t*)ptr; + return ConstantFP::get(jl_LLVMContext, + APFloat(lt->getFltSemantics(), APInt(32, data32))); + } + if (lt->isDoubleTy()) { + uint64_t data64 = *(const uint64_t*)ptr; + return ConstantFP::get(jl_LLVMContext, + APFloat(lt->getFltSemantics(), APInt(64, data64))); + } + if (lt->isFloatingPointTy() || lt->isIntegerTy()) { int nb = jl_datatype_size(bt); APInt val(8 * nb, 0); void *bits = const_cast(val.getRawData()); @@ -335,13 +335,13 @@ static Value *emit_unbox(jl_codectx_t &ctx, Type *to, const jl_cgval_t &x, jl_va Constant *c = x.constant ? julia_const_to_llvm(x.constant) : NULL; if (!x.ispointer() || c) { // already unboxed, but sometimes need conversion - Value *unboxed = emit_unboxed_coercion(ctx, to, c ? c : x.V); + Value *unboxed = c ? c : x.V; if (!dest) - return unboxed; + return emit_unboxed_coercion(ctx, to, unboxed); Type *dest_ty = unboxed->getType()->getPointerTo(); if (dest->getType() != dest_ty) dest = emit_bitcast(ctx, dest, dest_ty); - tbaa_decorate(tbaa_dest, ctx.builder.CreateStore(unboxed, dest)); + tbaa_decorate(tbaa_dest, ctx.builder.CreateAlignedStore(unboxed, dest, julia_alignment(jt))); return NULL; } @@ -654,7 +654,7 @@ static jl_cgval_t emit_pointerset(jl_codectx_t &ctx, jl_cgval_t *argv) // unsafe_store to Ptr{Any} is allowed to implicitly drop GC roots. thePtr = emit_unbox(ctx, T_psize, e, e.typ); Instruction *store = ctx.builder.CreateAlignedStore( - emit_pointer_from_objref(ctx, boxed(ctx, x)), + ctx.builder.CreatePtrToInt(emit_pointer_from_objref(ctx, boxed(ctx, x)), T_size), ctx.builder.CreateGEP(T_size, thePtr, im1), align_nb); tbaa_decorate(tbaa_data, store); } diff --git a/src/julia.h b/src/julia.h index 647ee82be932f..e4e6403945b95 100644 --- a/src/julia.h +++ b/src/julia.h @@ -428,9 +428,9 @@ typedef struct { uint32_t nfields; uint32_t npointers; // number of pointers embedded inside int32_t first_ptr; // index of the first pointer (or -1) - uint32_t alignment : 9; // strictest alignment over all fields - uint32_t haspadding : 1; // has internal undefined bytes - uint32_t fielddesc_type : 2; // 0 -> 8, 1 -> 16, 2 -> 32 + uint16_t alignment; // strictest alignment over all fields + uint16_t haspadding : 1; // has internal undefined bytes + uint16_t fielddesc_type : 2; // 0 -> 8, 1 -> 16, 2 -> 32 // union { // jl_fielddesc8_t field8[nfields]; // jl_fielddesc16_t field16[nfields]; diff --git a/src/llvm-alloc-opt.cpp b/src/llvm-alloc-opt.cpp index fd45665791389..46cbb3c64f41f 100644 --- a/src/llvm-alloc-opt.cpp +++ b/src/llvm-alloc-opt.cpp @@ -938,8 +938,8 @@ void Optimizer::moveToStack(CallInst *orig_inst, size_t sz, bool has_ref) // SSA from it are live when we run the allocation again. // It is now safe to promote the allocation to an entry block alloca. size_t align = 1; - // TODO make codegen handling of alignment consistent and pass that as a parameter - // to the allocation function directly. + // TODO: This is overly conservative. May want to instead pass this as a + // parameter to the allocation function directly. if (sz > 1) align = MinAlign(JL_SMALL_BYTE_ALIGNMENT, NextPowerOf2(sz)); // No debug info for prolog instructions diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index e2a48171c27a0..90138a45b703f 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -477,15 +477,15 @@ static std::pair FindBaseValue(const State &S, Value *V, bool UseCac CurrentV = EEI->getVectorOperand(); } else if (auto LI = dyn_cast(CurrentV)) { - if (auto PtrT = dyn_cast(LI->getType())) { + if (auto PtrT = dyn_cast(LI->getType()->getScalarType())) { if (PtrT->getAddressSpace() == AddressSpace::Loaded) { CurrentV = LI->getPointerOperand(); + fld_idx = -1; if (!isSpecialPtr(CurrentV->getType())) { - // Special case to bypass the check below. // This could really be anything, but it's not loaded // from a tracked pointer, so it doesn't matter what - // it is. - return std::make_pair(CurrentV, fld_idx); + // it is--just pick something simple. + CurrentV = ConstantPointerNull::get(Type::getInt8PtrTy(V->getContext())); } continue; } @@ -493,6 +493,34 @@ static std::pair FindBaseValue(const State &S, Value *V, bool UseCac // In general a load terminates a walk break; } + else if (auto II = dyn_cast(CurrentV)) { + // Some intrinsics behave like LoadInst followed by a SelectInst + // This should never happen in a derived addrspace (since those cannot be stored to memory) + // so we don't need to lift these operations, but we do need to check if it's loaded and continue walking the base pointer + if (II->getIntrinsicID() == Intrinsic::masked_load || + II->getIntrinsicID() == Intrinsic::masked_gather) { + if (auto PtrT = dyn_cast(II->getType()->getVectorElementType())) { + if (PtrT->getAddressSpace() == AddressSpace::Loaded) { + assert(isa(II->getOperand(3)) && "unimplemented"); + CurrentV = II->getOperand(0); + if (II->getIntrinsicID() == Intrinsic::masked_load) { + fld_idx = -1; + if (!isSpecialPtr(CurrentV->getType())) { + CurrentV = ConstantPointerNull::get(Type::getInt8PtrTy(V->getContext())); + } + } else { + if (!isSpecialPtr(CurrentV->getType()->getVectorElementType())) { + CurrentV = ConstantPointerNull::get(Type::getInt8PtrTy(V->getContext())); + fld_idx = -1; + } + } + continue; + } + } + // In general a load terminates a walk + break; + } + } else { break; } @@ -1299,6 +1327,23 @@ State LateLowerGCFrame::LocalScan(Function &F) { II->getIntrinsicID() == Intrinsic::lifetime_end) { continue; } + if (II->getIntrinsicID() == Intrinsic::masked_load || + II->getIntrinsicID() == Intrinsic::masked_gather) { + if (auto PtrT = dyn_cast(II->getType()->getVectorElementType())) { + if (isSpecialPtr(PtrT)) { + // LLVM sometimes tries to materialize these operations with undefined pointers in our non-integral address space. + // Hopefully LLVM didn't already propagate that information and poison our users. Set those to NULL now. + Value *passthru = II->getArgOperand(3); + if (isa(passthru)) { + II->setArgOperand(3, Constant::getNullValue(passthru->getType())); + } + if (PtrT->getAddressSpace() == AddressSpace::Loaded) { + // These are not real defs + continue; + } + } + } + } } auto callee = CI->getCalledFunction(); if (callee && callee == typeof_func) { @@ -1379,10 +1424,11 @@ State LateLowerGCFrame::LocalScan(Function &F) { // of this object to uses of the object we're loading // from. SmallVector RefinedPtr{}; + Type *Ty = LI->getType()->getScalarType(); if (isLoadFromImmut(LI) && isSpecialPtr(LI->getPointerOperand()->getType())) { RefinedPtr.push_back(Number(S, LI->getPointerOperand())); } else if (LI->getType()->isPointerTy() && - isSpecialPtr(LI->getType()) && + isSpecialPtr(Ty) && LooksLikeFrameRef(LI->getPointerOperand())) { // Loads from a jlcall argument array RefinedPtr.push_back(-1); @@ -1392,8 +1438,7 @@ State LateLowerGCFrame::LocalScan(Function &F) { // we know that the object is a constant as well and doesn't need rooting. RefinedPtr.push_back(-2); } - if (!LI->getType()->isPointerTy() || - LI->getType()->getPointerAddressSpace() != AddressSpace::Loaded) { + if (!Ty->isPointerTy() || Ty->getPointerAddressSpace() != AddressSpace::Loaded) { MaybeNoteDef(S, BBS, LI, BBS.Safepoints, std::move(RefinedPtr)); } NoteOperandUses(S, BBS, I); @@ -1990,21 +2035,16 @@ bool LateLowerGCFrame::CleanupIR(Function &F, State *S) { for (BasicBlock &BB : F) { for (auto it = BB.begin(); it != BB.end();) { Instruction *I = &*it; - if (isa(I) || isa(I)) { - // strip all constant alias information, as it might depend on the gc having - // preserved a gc root, which stops being true after this pass (#32215) - // we'd like to call RewriteStatepointsForGC::stripNonValidData here, but - // that function asserts that the GC strategy must be named either "statepoint-example" or "coreclr", - // while we don't give a name to our GC in the IR, and C++ scope rules prohibit us from using it, - // so instead we reimplement it here badly - if (I->getMetadata(LLVMContext::MD_invariant_load)) - I->setMetadata(LLVMContext::MD_invariant_load, NULL); - if (MDNode *TBAA = I->getMetadata(LLVMContext::MD_tbaa)) { - if (TBAA->getNumOperands() == 4 && isTBAA(TBAA, {"jtbaa_const"})) { - MDNode *MutableTBAA = createMutableTBAAAccessTag(TBAA); - if (MutableTBAA != TBAA) - I->setMetadata(LLVMContext::MD_tbaa, MutableTBAA); - } + // strip all constant alias information, as it might depend on the gc having + // preserved a gc root, which stops being true after this pass (#32215) + // similar to RewriteStatepointsForGC::stripNonValidData, but less aggressive + if (I->getMetadata(LLVMContext::MD_invariant_load)) + I->setMetadata(LLVMContext::MD_invariant_load, NULL); + if (MDNode *TBAA = I->getMetadata(LLVMContext::MD_tbaa)) { + if (TBAA->getNumOperands() == 4 && isTBAA(TBAA, {"jtbaa_const"})) { + MDNode *MutableTBAA = createMutableTBAAAccessTag(TBAA); + if (MutableTBAA != TBAA) + I->setMetadata(LLVMContext::MD_tbaa, MutableTBAA); } } auto *CI = dyn_cast(&*it); diff --git a/src/partr.c b/src/partr.c index c457643797446..f6cac067f9222 100644 --- a/src/partr.c +++ b/src/partr.c @@ -461,6 +461,9 @@ JL_DLLEXPORT jl_task_t *jl_task_get_next(jl_value_t *trypoptask, jl_value_t *q) // TODO: this relinquishes responsibility for all event // to the last thread to do an explicit operation, // which may starve other threads of critical work + if (jl_atomic_load(&jl_uv_n_waiters) == 0) { + continue; + } } if (!_threadedregion && active && ptls->tid == 0) { // thread 0 is the only thread permitted to run the event loop diff --git a/stdlib/InteractiveUtils/test/runtests.jl b/stdlib/InteractiveUtils/test/runtests.jl index 946056e50e667..b96125350630d 100644 --- a/stdlib/InteractiveUtils/test/runtests.jl +++ b/stdlib/InteractiveUtils/test/runtests.jl @@ -433,3 +433,9 @@ end # buildbot path updating file, ln = functionloc(versioninfo, Tuple{}) @test isfile(file) + +@testset "Issue #34434" begin + io = IOBuffer() + code_native(io, eltype, Tuple{Int}) + @test occursin("eltype", String(take!(io))) +end diff --git a/stdlib/LibGit2/test/libgit2.jl b/stdlib/LibGit2/test/libgit2.jl index 4f0de2131fc5e..0b3d61c9fe1e7 100644 --- a/stdlib/LibGit2/test/libgit2.jl +++ b/stdlib/LibGit2/test/libgit2.jl @@ -600,6 +600,7 @@ end end mktempdir() do dir + dir = realpath(dir) # test parameters repo_url = "https://github.com/JuliaLang/Example.jl" cache_repo = joinpath(dir, "Example") diff --git a/stdlib/LinearAlgebra/src/generic.jl b/stdlib/LinearAlgebra/src/generic.jl index 0b5c1af380257..2288a34c7a5c1 100644 --- a/stdlib/LinearAlgebra/src/generic.jl +++ b/stdlib/LinearAlgebra/src/generic.jl @@ -25,10 +25,23 @@ struct MulAddMul{ais1, bis0, TA, TB} beta::TB end -MulAddMul(alpha::TA, beta::TB) where {TA, TB} = - MulAddMul{isone(alpha), iszero(beta), TA, TB}(alpha, beta) +@inline function MulAddMul(alpha::TA, beta::TB) where {TA,TB} + if isone(alpha) + if iszero(beta) + return MulAddMul{true,true,TA,TB}(alpha, beta) + else + return MulAddMul{true,false,TA,TB}(alpha, beta) + end + else + if iszero(beta) + return MulAddMul{false,true,TA,TB}(alpha, beta) + else + return MulAddMul{false,false,TA,TB}(alpha, beta) + end + end +end -MulAddMul() = MulAddMul(true, false) +MulAddMul() = MulAddMul{true,true,Bool,Bool}(true, false) @inline (::MulAddMul{true})(x) = x @inline (p::MulAddMul{false})(x) = x * p.alpha diff --git a/stdlib/LinearAlgebra/src/matmul.jl b/stdlib/LinearAlgebra/src/matmul.jl index 1bbd2230c315d..e5c33388a9af0 100644 --- a/stdlib/LinearAlgebra/src/matmul.jl +++ b/stdlib/LinearAlgebra/src/matmul.jl @@ -166,7 +166,7 @@ end @inline function mul!(C::StridedMatrix{T}, A::StridedVecOrMat{T}, B::StridedVecOrMat{T}, alpha::Number, beta::Number) where {T<:BlasFloat} - return gemm_wrapper!(C, 'N', 'N', A, B, alpha, beta) + return gemm_wrapper!(C, 'N', 'N', A, B, MulAddMul(alpha, beta)) end # Complex Matrix times real matrix: We use that it is generally faster to reinterpret the # first matrix as a real matrix and carry out real matrix matrix multiply @@ -307,7 +307,7 @@ lmul!(A, B) if A===B return syrk_wrapper!(C, 'T', A, alpha, beta) else - return gemm_wrapper!(C, 'T', 'N', A, B, alpha, beta) + return gemm_wrapper!(C, 'T', 'N', A, B, MulAddMul(alpha, beta)) end end @inline function mul!(C::AbstractMatrix, transA::Transpose{<:Any,<:AbstractVecOrMat}, B::AbstractVecOrMat, @@ -322,7 +322,7 @@ end if A===B return syrk_wrapper!(C, 'N', A, alpha, beta) else - return gemm_wrapper!(C, 'N', 'T', A, B, alpha, beta) + return gemm_wrapper!(C, 'N', 'T', A, B, MulAddMul(alpha, beta)) end end # Complex matrix times transposed real matrix. Reinterpret the first matrix to real for efficiency. @@ -349,7 +349,7 @@ end alpha::Number, beta::Number) where {T<:BlasFloat} A = transA.parent B = transB.parent - return gemm_wrapper!(C, 'T', 'T', A, B, alpha, beta) + return gemm_wrapper!(C, 'T', 'T', A, B, MulAddMul(alpha, beta)) end @inline function mul!(C::AbstractMatrix, transA::Transpose{<:Any,<:AbstractVecOrMat}, transB::Transpose{<:Any,<:AbstractVecOrMat}, alpha::Number, beta::Number) @@ -362,7 +362,7 @@ end alpha::Number, beta::Number) where {T<:BlasFloat} A = transA.parent B = transB.parent - return gemm_wrapper!(C, 'T', 'C', A, B, alpha, beta) + return gemm_wrapper!(C, 'T', 'C', A, B, MulAddMul(alpha, beta)) end @inline function mul!(C::AbstractMatrix, transA::Transpose{<:Any,<:AbstractVecOrMat}, transB::Adjoint{<:Any,<:AbstractVecOrMat}, alpha::Number, beta::Number) @@ -382,7 +382,7 @@ end if A===B return herk_wrapper!(C, 'C', A, alpha, beta) else - return gemm_wrapper!(C, 'C', 'N', A, B, alpha, beta) + return gemm_wrapper!(C, 'C', 'N', A, B, MulAddMul(alpha, beta)) end end @inline function mul!(C::AbstractMatrix, adjA::Adjoint{<:Any,<:AbstractVecOrMat}, B::AbstractVecOrMat, @@ -402,7 +402,7 @@ end if A === B return herk_wrapper!(C, 'N', A, alpha, beta) else - return gemm_wrapper!(C, 'N', 'C', A, B, alpha, beta) + return gemm_wrapper!(C, 'N', 'C', A, B, MulAddMul(alpha, beta)) end end @inline function mul!(C::AbstractMatrix, A::AbstractVecOrMat, adjB::Adjoint{<:Any,<:AbstractVecOrMat}, @@ -415,7 +415,7 @@ end alpha::Number, beta::Number) where {T<:BlasFloat} A = adjA.parent B = adjB.parent - return gemm_wrapper!(C, 'C', 'C', A, B, alpha, beta) + return gemm_wrapper!(C, 'C', 'C', A, B, MulAddMul(alpha, beta)) end @inline function mul!(C::AbstractMatrix, adjA::Adjoint{<:Any,<:AbstractVecOrMat}, adjB::Adjoint{<:Any,<:AbstractVecOrMat}, alpha::Number, beta::Number) @@ -508,7 +508,7 @@ function syrk_wrapper!(C::StridedMatrix{T}, tA::AbstractChar, A::StridedVecOrMat return copytri!(BLAS.syrk!('U', tA, alpha, A, beta, C), 'U') end end - return gemm_wrapper!(C, tA, tAt, A, A, α, β) + return gemm_wrapper!(C, tA, tAt, A, A, MulAddMul(α, β)) end function herk_wrapper!(C::Union{StridedMatrix{T}, StridedMatrix{Complex{T}}}, tA::AbstractChar, A::Union{StridedVecOrMat{T}, StridedVecOrMat{Complex{T}}}, @@ -547,7 +547,7 @@ function herk_wrapper!(C::Union{StridedMatrix{T}, StridedMatrix{Complex{T}}}, tA return copytri!(BLAS.herk!('U', tA, alpha, A, beta, C), 'U', true) end end - return gemm_wrapper!(C, tA, tAt, A, A, α, β) + return gemm_wrapper!(C, tA, tAt, A, A, MulAddMul(α, β)) end function gemm_wrapper(tA::AbstractChar, tB::AbstractChar, @@ -561,7 +561,7 @@ end function gemm_wrapper!(C::StridedVecOrMat{T}, tA::AbstractChar, tB::AbstractChar, A::StridedVecOrMat{T}, B::StridedVecOrMat{T}, - α::Number=true, β::Number=false) where {T<:BlasFloat} + _add = MulAddMul()) where {T<:BlasFloat} mA, nA = lapack_size(tA, A) mB, nB = lapack_size(tB, B) @@ -573,21 +573,21 @@ function gemm_wrapper!(C::StridedVecOrMat{T}, tA::AbstractChar, tB::AbstractChar throw(ArgumentError("output matrix must not be aliased with input matrix")) end - if mA == 0 || nA == 0 || nB == 0 || iszero(α) + if mA == 0 || nA == 0 || nB == 0 || iszero(_add.alpha) if size(C) != (mA, nB) throw(DimensionMismatch("C has dimensions $(size(C)), should have ($mA,$nB)")) end - return _rmul_or_fill!(C, β) + return _rmul_or_fill!(C, _add.beta) end if mA == 2 && nA == 2 && nB == 2 - return matmul2x2!(C, tA, tB, A, B, MulAddMul(α, β)) + return matmul2x2!(C, tA, tB, A, B, _add) end if mA == 3 && nA == 3 && nB == 3 - return matmul3x3!(C, tA, tB, A, B, MulAddMul(α, β)) + return matmul3x3!(C, tA, tB, A, B, _add) end - alpha, beta = promote(α, β, zero(T)) + alpha, beta = promote(_add.alpha, _add.beta, zero(T)) if (alpha isa Union{Bool,T} && beta isa Union{Bool,T} && stride(A, 1) == stride(B, 1) == stride(C, 1) == 1 && @@ -596,7 +596,7 @@ function gemm_wrapper!(C::StridedVecOrMat{T}, tA::AbstractChar, tB::AbstractChar stride(C, 2) >= size(C, 1)) return BLAS.gemm!(tA, tB, alpha, A, B, beta, C) end - generic_matmatmul!(C, tA, tB, A, B, MulAddMul(α, β)) + generic_matmatmul!(C, tA, tB, A, B, _add) end # blas.jl defines matmul for floats; other integer and mixed precision diff --git a/stdlib/Pkg.version b/stdlib/Pkg.version index 6222673205a73..3aa9e0e8baf92 100644 --- a/stdlib/Pkg.version +++ b/stdlib/Pkg.version @@ -1,2 +1,2 @@ PKG_BRANCH = master -PKG_SHA1 = a1eea5d5bd6493eb233b8e7abcdae6fc7e5751e1 +PKG_SHA1 = 9419c70af69153cd5c4276bff90fbb135e0aa3f1 diff --git a/stdlib/Profile/src/Profile.jl b/stdlib/Profile/src/Profile.jl index 057bb4d287a40..3a5deea34f08b 100644 --- a/stdlib/Profile/src/Profile.jl +++ b/stdlib/Profile/src/Profile.jl @@ -536,7 +536,9 @@ function indent(depth::Int) depth < 1 && return "" depth <= length(indent_z) && return indent_s[1:indent_z[depth]] div, rem = divrem(depth, length(indent_z)) - return (indent_s^div) * SubString(indent_s, 1, indent_z[rem]) + indent = indent_s^div + rem != 0 && (indent *= SubString(indent_s, 1, indent_z[rem])) + return indent end function tree_format(frames::Vector{<:StackFrameTree}, level::Int, cols::Int, maxes, filenamemap::Dict{Symbol,String}, showpointer::Bool) diff --git a/stdlib/REPL/src/REPLCompletions.jl b/stdlib/REPL/src/REPLCompletions.jl index edc7468e199cb..0a50345b33e7c 100644 --- a/stdlib/REPL/src/REPLCompletions.jl +++ b/stdlib/REPL/src/REPLCompletions.jl @@ -259,7 +259,7 @@ function complete_path(path::AbstractString, pos; use_envpath=false, shell_escap end end - matchList = Completion[PathCompletion(shell_escape ? replace(s, r"\s" => s"\\\0") : s) for s in matches] + matchList = PathCompletion[PathCompletion(shell_escape ? replace(s, r"\s" => s"\\\0") : s) for s in matches] startpos = pos - lastindex(prefix) + 1 - count(isequal(' '), prefix) # The pos - lastindex(prefix) + 1 is correct due to `lastindex(prefix)-lastindex(prefix)==0`, # hence we need to add one to get the first index. This is also correct when considering @@ -537,7 +537,7 @@ end # This needs to be a separate non-inlined function, see #19441 @noinline function find_dict_matches(identifier, partial_key) - matches = [] + matches = String[] for key in keys(identifier) rkey = repr(key) startswith(rkey,partial_key) && push!(matches,rkey) diff --git a/stdlib/REPL/test/replcompletions.jl b/stdlib/REPL/test/replcompletions.jl index 92fdfb8b747f7..3d11937a31078 100644 --- a/stdlib/REPL/test/replcompletions.jl +++ b/stdlib/REPL/test/replcompletions.jl @@ -768,7 +768,7 @@ end if Sys.iswindows() tmp = tempname() touch(tmp) - path = dirname(tmp) + path = realpath(dirname(tmp)) file = basename(tmp) temp_name = basename(path) cd(path) do diff --git a/stdlib/SuiteSparse/src/cholmod.jl b/stdlib/SuiteSparse/src/cholmod.jl index 7b66ffcdfc32e..699de4398e70c 100644 --- a/stdlib/SuiteSparse/src/cholmod.jl +++ b/stdlib/SuiteSparse/src/cholmod.jl @@ -40,15 +40,15 @@ include("cholmod_h.jl") const CHOLMOD_MIN_VERSION = v"2.1.1" -const common_struct = Vector{UInt8}() +const common_struct = Vector{Vector{UInt8}}() -const common_supernodal = Ref{Ptr{Cint}}() -const common_final_ll = Ref{Ptr{Cint}}() -const common_print = Ref{Ptr{Cint}}() -const common_itype = Ref{Ptr{Cint}}() -const common_dtype = Ref{Ptr{Cint}}() -const common_nmethods = Ref{Ptr{Cint}}() -const common_postorder = Ref{Ptr{Cint}}() +const common_supernodal = Vector{Ptr{Cint}}() +const common_final_ll = Vector{Ptr{Cint}}() +const common_print = Vector{Ptr{Cint}}() +const common_itype = Vector{Ptr{Cint}}() +const common_dtype = Vector{Ptr{Cint}}() +const common_nmethods = Vector{Ptr{Cint}}() +const common_postorder = Vector{Ptr{Cint}}() ### These offsets are defined in SuiteSparse_wrapper.c const common_size = ccall((:jl_cholmod_common_size,:libsuitesparse_wrapper),Int,()) @@ -149,20 +149,30 @@ function __init__() ### Initiate CHOLMOD ### common_struct controls the type of factorization and keeps pointers - ### to temporary memory. - resize!(common_struct, common_size) - fill!(common_struct, 0xff) - - common_supernodal[] = pointer(common_struct, cholmod_com_offsets[4] + 1) - common_final_ll[] = pointer(common_struct, cholmod_com_offsets[7] + 1) - common_print[] = pointer(common_struct, cholmod_com_offsets[13] + 1) - common_itype[] = pointer(common_struct, cholmod_com_offsets[18] + 1) - common_dtype[] = pointer(common_struct, cholmod_com_offsets[19] + 1) - common_nmethods[] = pointer(common_struct, cholmod_com_offsets[15] + 1) - common_postorder[] = pointer(common_struct, cholmod_com_offsets[17] + 1) - - start(common_struct) # initializes CHOLMOD - set_print_level(common_struct, 0) # no printing from CHOLMOD by default + ### to temporary memory. We need to manage a copy for each thread. + nt = Threads.nthreads() + resize!(common_struct , nt) + resize!(common_supernodal, nt) + resize!(common_final_ll , nt) + resize!(common_print , nt) + resize!(common_itype , nt) + resize!(common_dtype , nt) + resize!(common_nmethods , nt) + resize!(common_postorder , nt) + for i in 1:nt + common_struct[i] = fill(0xff, common_size) + + common_supernodal[i] = pointer(common_struct[i], cholmod_com_offsets[4] + 1) + common_final_ll[i] = pointer(common_struct[i], cholmod_com_offsets[7] + 1) + common_print[i] = pointer(common_struct[i], cholmod_com_offsets[13] + 1) + common_itype[i] = pointer(common_struct[i], cholmod_com_offsets[18] + 1) + common_dtype[i] = pointer(common_struct[i], cholmod_com_offsets[19] + 1) + common_nmethods[i] = pointer(common_struct[i], cholmod_com_offsets[15] + 1) + common_postorder[i] = pointer(common_struct[i], cholmod_com_offsets[17] + 1) + + start(common_struct[i]) # initializes CHOLMOD + set_print_level(common_struct[i], 0) # no printing from CHOLMOD by default + end # Register gc tracked allocator if CHOLMOD is new enough if current_version >= v"3.0.0" @@ -179,7 +189,7 @@ function __init__() end function set_print_level(cm::Vector{UInt8}, lev::Integer) - unsafe_store!(common_print[], lev) + unsafe_store!(common_print[Threads.threadid()], lev) end #################### @@ -403,32 +413,32 @@ Factor(FC::FactorComponent) = Factor(FC.F) function allocate_dense(m::Integer, n::Integer, d::Integer, ::Type{Tv}) where {Tv<:VTypes} Dense(ccall((@cholmod_name("allocate_dense"), :libcholmod), Ptr{C_Dense{Tv}}, (Csize_t, Csize_t, Csize_t, Cint, Ptr{Cvoid}), - m, n, d, xtyp(Tv), common_struct)) + m, n, d, xtyp(Tv), common_struct[Threads.threadid()])) end function free!(p::Ptr{C_Dense{Tv}}) where {Tv<:VTypes} @isok ccall((@cholmod_name("free_dense"), :libcholmod), Cint, (Ref{Ptr{C_Dense{Tv}}}, Ptr{Cvoid}), - p, common_struct) + p, common_struct[Threads.threadid()]) end function zeros(m::Integer, n::Integer, ::Type{Tv}) where Tv<:VTypes Dense(ccall((@cholmod_name("zeros"), :libcholmod), Ptr{C_Dense{Tv}}, (Csize_t, Csize_t, Cint, Ptr{UInt8}), - m, n, xtyp(Tv), common_struct)) + m, n, xtyp(Tv), common_struct[Threads.threadid()])) end zeros(m::Integer, n::Integer) = zeros(m, n, Float64) function ones(m::Integer, n::Integer, ::Type{Tv}) where Tv<:VTypes Dense(ccall((@cholmod_name("ones"), :libcholmod), Ptr{C_Dense{Tv}}, (Csize_t, Csize_t, Cint, Ptr{UInt8}), - m, n, xtyp(Tv), common_struct)) + m, n, xtyp(Tv), common_struct[Threads.threadid()])) end ones(m::Integer, n::Integer) = ones(m, n, Float64) function eye(m::Integer, n::Integer, ::Type{Tv}) where Tv<:VTypes Dense(ccall((@cholmod_name("eye"), :libcholmod), Ptr{C_Dense{Tv}}, (Csize_t, Csize_t, Cint, Ptr{UInt8}), - m, n, xtyp(Tv), common_struct)) + m, n, xtyp(Tv), common_struct[Threads.threadid()])) end eye(m::Integer, n::Integer) = eye(m, n, Float64) eye(n::Integer) = eye(n, n, Float64) @@ -436,13 +446,13 @@ eye(n::Integer) = eye(n, n, Float64) function copy(A::Dense{Tv}) where Tv<:VTypes Dense(ccall((@cholmod_name("copy_dense"), :libcholmod), Ptr{C_Dense{Tv}}, (Ptr{C_Dense{Tv}}, Ptr{UInt8}), - A, common_struct)) + A, common_struct[Threads.threadid()])) end function sort!(S::Sparse{Tv}) where Tv<:VTypes @isok ccall((@cholmod_name("sort"), :libcholmod), Cint, (Ptr{C_Sparse{Tv}}, Ptr{UInt8}), - S, common_struct) + S, common_struct[Threads.threadid()]) return S end @@ -458,14 +468,14 @@ function norm_dense(D::Dense{Tv}, p::Integer) where Tv<:VTypes end ccall((@cholmod_name("norm_dense"), :libcholmod), Cdouble, (Ptr{C_Dense{Tv}}, Cint, Ptr{UInt8}), - D, p, common_struct) + D, p, common_struct[Threads.threadid()]) end ### cholmod_check.h ### function check_dense(A::Dense{Tv}) where Tv<:VTypes ccall((@cholmod_name("check_dense"), :libcholmod), Cint, (Ptr{C_Dense{Tv}}, Ptr{UInt8}), - pointer(A), common_struct) != 0 + pointer(A), common_struct[Threads.threadid()]) != 0 end # Non-Dense wrappers @@ -477,40 +487,40 @@ function allocate_sparse(nrow::Integer, ncol::Integer, nzmax::Integer, (Csize_t, Csize_t, Csize_t, Cint, Cint, Cint, Cint, Ptr{Cvoid}), nrow, ncol, nzmax, sorted, - packed, stype, xtyp(Tv), common_struct)) + packed, stype, xtyp(Tv), common_struct[Threads.threadid()])) end function free!(ptr::Ptr{C_Sparse{Tv}}) where Tv<:VTypes @isok ccall((@cholmod_name("free_sparse"), :libcholmod), Cint, (Ref{Ptr{C_Sparse{Tv}}}, Ptr{UInt8}), - ptr, common_struct) + ptr, common_struct[Threads.threadid()]) end function free!(ptr::Ptr{C_Factor{Tv}}) where Tv<:VTypes # Warning! Important that finalizer doesn't modify the global Common struct. @isok ccall((@cholmod_name("free_factor"), :libcholmod), Cint, (Ref{Ptr{C_Factor{Tv}}}, Ptr{Cvoid}), - ptr, common_struct) + ptr, common_struct[Threads.threadid()]) end function aat(A::Sparse{Tv}, fset::Vector{SuiteSparse_long}, mode::Integer) where Tv<:VRealTypes Sparse(ccall((@cholmod_name("aat"), :libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Sparse{Tv}}, Ptr{SuiteSparse_long}, Csize_t, Cint, Ptr{UInt8}), - A, fset, length(fset), mode, common_struct)) + A, fset, length(fset), mode, common_struct[Threads.threadid()])) end function sparse_to_dense(A::Sparse{Tv}) where Tv<:VTypes Dense(ccall((@cholmod_name("sparse_to_dense"),:libcholmod), Ptr{C_Dense{Tv}}, (Ptr{C_Sparse{Tv}}, Ptr{UInt8}), - A, common_struct)) + A, common_struct[Threads.threadid()])) end function dense_to_sparse(D::Dense{Tv}, ::Type{SuiteSparse_long}) where Tv<:VTypes Sparse(ccall((@cholmod_name("dense_to_sparse"),:libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Dense{Tv}}, Cint, Ptr{UInt8}), - D, true, common_struct)) + D, true, common_struct[Threads.threadid()])) end function factor_to_sparse!(F::Factor{Tv}) where Tv<:VTypes @@ -519,88 +529,88 @@ function factor_to_sparse!(F::Factor{Tv}) where Tv<:VTypes Sparse(ccall((@cholmod_name("factor_to_sparse"),:libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Factor{Tv}}, Ptr{UInt8}), - F, common_struct)) + F, common_struct[Threads.threadid()])) end function change_factor!(F::Factor{Tv}, to_ll::Bool, to_super::Bool, to_packed::Bool, to_monotonic::Bool) where Tv<:VTypes @isok ccall((@cholmod_name("change_factor"),:libcholmod), Cint, (Cint, Cint, Cint, Cint, Cint, Ptr{C_Factor{Tv}}, Ptr{UInt8}), - xtyp(Tv), to_ll, to_super, to_packed, to_monotonic, F, common_struct) + xtyp(Tv), to_ll, to_super, to_packed, to_monotonic, F, common_struct[Threads.threadid()]) end function check_sparse(A::Sparse{Tv}) where Tv<:VTypes ccall((@cholmod_name("check_sparse"),:libcholmod), Cint, (Ptr{C_Sparse{Tv}}, Ptr{UInt8}), - A, common_struct) != 0 + A, common_struct[Threads.threadid()]) != 0 end function check_factor(F::Factor{Tv}) where Tv<:VTypes ccall((@cholmod_name("check_factor"),:libcholmod), Cint, (Ptr{C_Factor{Tv}}, Ptr{UInt8}), - F, common_struct) != 0 + F, common_struct[Threads.threadid()]) != 0 end function nnz(A::Sparse{Tv}) where Tv<:VTypes ccall((@cholmod_name("nnz"),:libcholmod), Int, (Ptr{C_Sparse{Tv}}, Ptr{UInt8}), - A, common_struct) + A, common_struct[Threads.threadid()]) end function speye(m::Integer, n::Integer, ::Type{Tv}) where Tv<:VTypes Sparse(ccall((@cholmod_name("speye"), :libcholmod), Ptr{C_Sparse{Tv}}, (Csize_t, Csize_t, Cint, Ptr{UInt8}), - m, n, xtyp(Tv), common_struct)) + m, n, xtyp(Tv), common_struct[Threads.threadid()])) end function spzeros(m::Integer, n::Integer, nzmax::Integer, ::Type{Tv}) where Tv<:VTypes Sparse(ccall((@cholmod_name("spzeros"), :libcholmod), Ptr{C_Sparse{Tv}}, (Csize_t, Csize_t, Csize_t, Cint, Ptr{UInt8}), - m, n, nzmax, xtyp(Tv), common_struct)) + m, n, nzmax, xtyp(Tv), common_struct[Threads.threadid()])) end function transpose_(A::Sparse{Tv}, values::Integer) where Tv<:VTypes Sparse(ccall((@cholmod_name("transpose"),:libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Sparse{Tv}}, Cint, Ptr{UInt8}), - A, values, common_struct)) + A, values, common_struct[Threads.threadid()])) end function copy(F::Factor{Tv}) where Tv<:VTypes Factor(ccall((@cholmod_name("copy_factor"),:libcholmod), Ptr{C_Factor{Tv}}, (Ptr{C_Factor{Tv}}, Ptr{UInt8}), - F, common_struct)) + F, common_struct[Threads.threadid()])) end function copy(A::Sparse{Tv}) where Tv<:VTypes Sparse(ccall((@cholmod_name("copy_sparse"),:libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Sparse{Tv}}, Ptr{UInt8}), - A, common_struct)) + A, common_struct[Threads.threadid()])) end function copy(A::Sparse{Tv}, stype::Integer, mode::Integer) where Tv<:VRealTypes Sparse(ccall((@cholmod_name("copy"),:libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Sparse{Tv}}, Cint, Cint, Ptr{UInt8}), - A, stype, mode, common_struct)) + A, stype, mode, common_struct[Threads.threadid()])) end ### cholmod_check.h ### function print_sparse(A::Sparse{Tv}, name::String) where Tv<:VTypes isascii(name) || error("non-ASCII name: $name") - set_print_level(common_struct, 3) + set_print_level(common_struct[Threads.threadid()], 3) @isok ccall((@cholmod_name("print_sparse"),:libcholmod), Cint, (Ptr{C_Sparse{Tv}}, Ptr{UInt8}, Ptr{UInt8}), - A, name, common_struct) + A, name, common_struct[Threads.threadid()]) nothing end function print_factor(F::Factor{Tv}, name::String) where Tv<:VTypes - set_print_level(common_struct, 3) + set_print_level(common_struct[Threads.threadid()], 3) @isok ccall((@cholmod_name("print_factor"),:libcholmod), Cint, (Ptr{C_Factor{Tv}}, Ptr{UInt8}, Ptr{UInt8}), - F, name, common_struct) + F, name, common_struct[Threads.threadid()]) nothing end @@ -617,7 +627,7 @@ function ssmult(A::Sparse{Tv}, B::Sparse{Tv}, stype::Integer, (Ptr{C_Sparse{Tv}}, Ptr{C_Sparse{Tv}}, Cint, Cint, Cint, Ptr{UInt8}), A, B, stype, values, - sorted, common_struct)) + sorted, common_struct[Threads.threadid()])) end function norm_sparse(A::Sparse{Tv}, norm::Integer) where Tv<:VTypes @@ -626,14 +636,14 @@ function norm_sparse(A::Sparse{Tv}, norm::Integer) where Tv<:VTypes end ccall((@cholmod_name("norm_sparse"), :libcholmod), Cdouble, (Ptr{C_Sparse{Tv}}, Cint, Ptr{UInt8}), - A, norm, common_struct) + A, norm, common_struct[Threads.threadid()]) end function horzcat(A::Sparse{Tv}, B::Sparse{Tv}, values::Bool) where Tv<:VRealTypes Sparse(ccall((@cholmod_name("horzcat"), :libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Sparse{Tv}}, Ptr{C_Sparse{Tv}}, Cint, Ptr{UInt8}), - A, B, values, common_struct)) + A, B, values, common_struct[Threads.threadid()])) end function scale!(S::Dense{Tv}, scale::Integer, A::Sparse{Tv}) where Tv<:VRealTypes @@ -662,7 +672,7 @@ function scale!(S::Dense{Tv}, scale::Integer, A::Sparse{Tv}) where Tv<:VRealType sA = unsafe_load(pointer(A)) @isok ccall((@cholmod_name("scale"),:libcholmod), Cint, (Ptr{C_Dense{Tv}}, Cint, Ptr{C_Sparse{Tv}}, Ptr{UInt8}), - S, scale, A, common_struct) + S, scale, A, common_struct[Threads.threadid()]) A end @@ -678,7 +688,7 @@ function sdmult!(A::Sparse{Tv}, transpose::Bool, (Ptr{C_Sparse{Tv}}, Cint, Ref{ComplexF64}, Ref{ComplexF64}, Ptr{C_Dense{Tv}}, Ptr{C_Dense{Tv}}, Ptr{UInt8}), - A, transpose, α, β, X, Y, common_struct) + A, transpose, α, β, X, Y, common_struct[Threads.threadid()]) Y end @@ -686,7 +696,7 @@ function vertcat(A::Sparse{Tv}, B::Sparse{Tv}, values::Bool) where Tv<:VRealType Sparse(ccall((@cholmod_name("vertcat"), :libcholmod), Ptr{C_Sparse{Tv}}, (Ptr{C_Sparse{Tv}}, Ptr{C_Sparse{Tv}}, Cint, Ptr{UInt8}), - A, B, values, common_struct)) + A, B, values, common_struct[Threads.threadid()])) end function symmetry(A::Sparse{Tv}, option::Integer) where Tv<:VTypes @@ -698,7 +708,7 @@ function symmetry(A::Sparse{Tv}, option::Integer) where Tv<:VTypes (Ptr{C_Sparse{Tv}}, Cint, Ptr{SuiteSparse_long}, Ptr{SuiteSparse_long}, Ptr{SuiteSparse_long}, Ptr{SuiteSparse_long}, Ptr{UInt8}), A, option, xmatched, pmatched, - nzoffdiag, nzdiag, common_struct) + nzoffdiag, nzdiag, common_struct[Threads.threadid()]) rv, xmatched[], pmatched[], nzoffdiag[], nzdiag[] end @@ -751,7 +761,7 @@ function solve(sys::Integer, F::Factor{Tv}, B::Dense{Tv}) where Tv<:VTypes end Dense(ccall((@cholmod_name("solve"),:libcholmod), Ptr{C_Dense{Tv}}, (Cint, Ptr{C_Factor{Tv}}, Ptr{C_Dense{Tv}}, Ptr{UInt8}), - sys, F, B, common_struct)) + sys, F, B, common_struct[Threads.threadid()])) end function spsolve(sys::Integer, F::Factor{Tv}, B::Sparse{Tv}) where Tv<:VTypes @@ -762,7 +772,7 @@ function spsolve(sys::Integer, F::Factor{Tv}, B::Sparse{Tv}) where Tv<:VTypes Sparse(ccall((@cholmod_name("spsolve"),:libcholmod), Ptr{C_Sparse{Tv}}, (Cint, Ptr{C_Factor{Tv}}, Ptr{C_Sparse{Tv}}, Ptr{UInt8}), - sys, F, B, common_struct)) + sys, F, B, common_struct[Threads.threadid()])) end # Autodetects the types @@ -770,7 +780,7 @@ function read_sparse(file::Libc.FILE, ::Type{SuiteSparse_long}) ptr = ccall((@cholmod_name("read_sparse"), :libcholmod), Ptr{C_Sparse{Cvoid}}, (Ptr{Cvoid}, Ptr{UInt8}), - file.ptr, common_struct) + file.ptr, common_struct[Threads.threadid()]) if ptr == C_NULL throw(ArgumentError("sparse matrix construction failed. Check that input file is valid.")) end @@ -1272,14 +1282,14 @@ function fact_(A::Sparse{<:VTypes}, cm::Array{UInt8}; sA.stype == 0 && throw(ArgumentError("sparse matrix is not symmetric/Hermitian")) if !postorder - unsafe_store!(common_postorder[], 0) + unsafe_store!(common_postorder[Threads.threadid()], 0) end if perm === nothing || isempty(perm) # TODO: deprecate empty perm F = analyze(A, cm) else # user permutation provided if userperm_only # use perm even if it is worse than AMD - unsafe_store!(common_nmethods[], 1) + unsafe_store!(common_nmethods[Threads.threadid()], 1) end F = analyze_p(A, SuiteSparse_long[p-1 for p in perm], cm) end @@ -1290,10 +1300,10 @@ end function cholesky!(F::Factor{Tv}, A::Sparse{Tv}; shift::Real=0.0, check::Bool = true) where Tv # Makes it an LLt - unsafe_store!(common_final_ll[], 1) + unsafe_store!(common_final_ll[Threads.threadid()], 1) # Compute the numerical factorization - factorize_p!(A, shift, F, common_struct) + factorize_p!(A, shift, F, common_struct[Threads.threadid()]) check && (issuccess(F) || throw(LinearAlgebra.PosDefException(1))) return F @@ -1326,7 +1336,7 @@ cholesky!(F::Factor, A::Union{SparseMatrixCSC{T}, function cholesky(A::Sparse; shift::Real=0.0, check::Bool = true, perm::Union{Nothing,AbstractVector{SuiteSparse_long}}=nothing) - cm = defaults(common_struct) + cm = defaults(common_struct[Threads.threadid()]) set_print_level(cm, 0) # Compute the symbolic factorization @@ -1450,7 +1460,7 @@ cholesky(A::Union{SparseMatrixCSC{T}, SparseMatrixCSC{Complex{T}}, function ldlt!(F::Factor{Tv}, A::Sparse{Tv}; shift::Real=0.0, check::Bool = true) where Tv - cm = defaults(common_struct) + cm = defaults(common_struct[Threads.threadid()]) set_print_level(cm, 0) # Makes it an LDLt @@ -1490,13 +1500,13 @@ ldlt!(F::Factor, A::Union{SparseMatrixCSC{T}, function ldlt(A::Sparse; shift::Real=0.0, check::Bool = true, perm::Union{Nothing,AbstractVector{SuiteSparse_long}}=nothing) - cm = defaults(common_struct) + cm = defaults(common_struct[Threads.threadid()]) set_print_level(cm, 0) # Makes it an LDLt - unsafe_store!(common_final_ll[], 0) + unsafe_store!(common_final_ll[Threads.threadid()], 0) # Really make sure it's an LDLt by avoiding supernodal factorization - unsafe_store!(common_supernodal[], 0) + unsafe_store!(common_supernodal[Threads.threadid()], 0) # Compute the symbolic factorization F = fact_(A, cm; perm = perm) @@ -1571,7 +1581,7 @@ function lowrankupdowndate!(F::Factor{Tv}, C::Sparse{Tv}, update::Cint) where Tv end @isok ccall((@cholmod_name("updown"), :libcholmod), Cint, (Cint, Ptr{C_Sparse{Tv}}, Ptr{C_Factor{Tv}}, Ptr{Cvoid}), - update, C, F, common_struct) + update, C, F, common_struct[Threads.threadid()]) F end diff --git a/stdlib/SuiteSparse/src/spqr.jl b/stdlib/SuiteSparse/src/spqr.jl index d5bc42562a8c7..983f7ba37e017 100644 --- a/stdlib/SuiteSparse/src/spqr.jl +++ b/stdlib/SuiteSparse/src/spqr.jl @@ -63,7 +63,7 @@ function _qr!(ordering::Integer, tol::Real, econ::Integer, getCTX::Integer, H, # m-by-nh Householder vectors HPinv, # size m row permutation HTau, # 1-by-nh Householder coefficients - CHOLMOD.common_struct) # /* workspace and parameters */ + CHOLMOD.common_struct[Threads.threadid()]) # /* workspace and parameters */ if rnk < 0 error("Sparse QR factorization failed") @@ -82,7 +82,7 @@ function _qr!(ordering::Integer, tol::Real, econ::Integer, getCTX::Integer, # the common struct is updated ccall((:cholmod_l_free, :libcholmod), Cvoid, (Csize_t, Cint, Ptr{CHOLMOD.SuiteSparse_long}, Ptr{Cvoid}), - n, sizeof(CHOLMOD.SuiteSparse_long), e, CHOLMOD.common_struct) + n, sizeof(CHOLMOD.SuiteSparse_long), e, CHOLMOD.common_struct[Threads.threadid()]) end hpinv = HPinv[] if hpinv == C_NULL @@ -97,7 +97,7 @@ function _qr!(ordering::Integer, tol::Real, econ::Integer, getCTX::Integer, # the common struct is updated ccall((:cholmod_l_free, :libcholmod), Cvoid, (Csize_t, Cint, Ptr{CHOLMOD.SuiteSparse_long}, Ptr{Cvoid}), - m, sizeof(CHOLMOD.SuiteSparse_long), hpinv, CHOLMOD.common_struct) + m, sizeof(CHOLMOD.SuiteSparse_long), hpinv, CHOLMOD.common_struct[Threads.threadid()]) end return rnk, _E, _HPinv diff --git a/stdlib/SuiteSparse/test/cholmod.jl b/stdlib/SuiteSparse/test/cholmod.jl index 5c3be022daa1a..c19c3726dd979 100644 --- a/stdlib/SuiteSparse/test/cholmod.jl +++ b/stdlib/SuiteSparse/test/cholmod.jl @@ -234,7 +234,7 @@ end @testset "illegal dtype (for now but should be supported at some point)" begin p = ccall((:cholmod_l_allocate_sparse, :libcholmod), Ptr{CHOLMOD.C_Sparse{Cvoid}}, (Csize_t, Csize_t, Csize_t, Cint, Cint, Cint, Cint, Ptr{Cvoid}), - 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct) + 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct[Threads.threadid()]) puint = convert(Ptr{UInt32}, p) unsafe_store!(puint, CHOLMOD.SINGLE, 3*div(sizeof(Csize_t), 4) + 5*div(sizeof(Ptr{Cvoid}), 4) + 4) @test_throws CHOLMOD.CHOLMODException CHOLMOD.Sparse(p) @@ -243,7 +243,7 @@ end @testset "illegal dtype" begin p = ccall((:cholmod_l_allocate_sparse, :libcholmod), Ptr{CHOLMOD.C_Sparse{Cvoid}}, (Csize_t, Csize_t, Csize_t, Cint, Cint, Cint, Cint, Ptr{Cvoid}), - 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct) + 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct[Threads.threadid()]) puint = convert(Ptr{UInt32}, p) unsafe_store!(puint, 5, 3*div(sizeof(Csize_t), 4) + 5*div(sizeof(Ptr{Cvoid}), 4) + 4) @test_throws CHOLMOD.CHOLMODException CHOLMOD.Sparse(p) @@ -252,7 +252,7 @@ end @testset "illegal xtype" begin p = ccall((:cholmod_l_allocate_sparse, :libcholmod), Ptr{CHOLMOD.C_Sparse{Cvoid}}, (Csize_t, Csize_t, Csize_t, Cint, Cint, Cint, Cint, Ptr{Cvoid}), - 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct) + 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct[Threads.threadid()]) puint = convert(Ptr{UInt32}, p) unsafe_store!(puint, 3, 3*div(sizeof(Csize_t), 4) + 5*div(sizeof(Ptr{Cvoid}), 4) + 3) @test_throws CHOLMOD.CHOLMODException CHOLMOD.Sparse(p) @@ -261,7 +261,7 @@ end @testset "illegal itype I" begin p = ccall((:cholmod_l_allocate_sparse, :libcholmod), Ptr{CHOLMOD.C_Sparse{Cvoid}}, (Csize_t, Csize_t, Csize_t, Cint, Cint, Cint, Cint, Ptr{Cvoid}), - 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct) + 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct[Threads.threadid()]) puint = convert(Ptr{UInt32}, p) unsafe_store!(puint, CHOLMOD.INTLONG, 3*div(sizeof(Csize_t), 4) + 5*div(sizeof(Ptr{Cvoid}), 4) + 2) @test_throws CHOLMOD.CHOLMODException CHOLMOD.Sparse(p) @@ -270,7 +270,7 @@ end @testset "illegal itype II" begin p = ccall((:cholmod_l_allocate_sparse, :libcholmod), Ptr{CHOLMOD.C_Sparse{Cvoid}}, (Csize_t, Csize_t, Csize_t, Cint, Cint, Cint, Cint, Ptr{Cvoid}), - 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct) + 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct[Threads.threadid()]) puint = convert(Ptr{UInt32}, p) unsafe_store!(puint, 5, 3*div(sizeof(Csize_t), 4) + 5*div(sizeof(Ptr{Cvoid}), 4) + 2) @test_throws CHOLMOD.CHOLMODException CHOLMOD.Sparse(p) @@ -321,7 +321,7 @@ end @testset "test free!" begin p = ccall((:cholmod_l_allocate_sparse, :libcholmod), Ptr{CHOLMOD.C_Sparse{Float64}}, (Csize_t, Csize_t, Csize_t, Cint, Cint, Cint, Cint, Ptr{Cvoid}), - 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct) + 1, 1, 1, true, true, 0, CHOLMOD.REAL, CHOLMOD.common_struct[Threads.threadid()]) @test CHOLMOD.free!(p) end diff --git a/stdlib/SuiteSparse/test/runtests.jl b/stdlib/SuiteSparse/test/runtests.jl index d317023c6c84d..cde54e9488818 100644 --- a/stdlib/SuiteSparse/test/runtests.jl +++ b/stdlib/SuiteSparse/test/runtests.jl @@ -4,7 +4,27 @@ using Test, Random using SuiteSparse, LinearAlgebra, SparseArrays if Base.USE_GPL_LIBS - include("umfpack.jl") - include("cholmod.jl") - include("spqr.jl") + include("umfpack.jl") + include("cholmod.jl") + include("spqr.jl") + + # Test multithreaded execution + let p, cmd = `$(Base.julia_cmd()) --depwarn=error --startup-file=no threads.jl` + # test both nthreads==1 and nthreads>1. spawn a process to test whichever + # case we are not running currently. + other_nthreads = Threads.nthreads() == 1 ? 4 : 1 + p = run( + pipeline( + setenv( + cmd, + "JULIA_NUM_THREADS" => other_nthreads, + dir=@__DIR__()), + stdout = stdout, + stderr = stderr), + wait = false) + include("threads.jl") + if !success(p) + error("SuiteSparse threads test failed with nthreads == $other_nthreads") + end + end end diff --git a/stdlib/SuiteSparse/test/threads.jl b/stdlib/SuiteSparse/test/threads.jl new file mode 100644 index 0000000000000..76b4acd540779 --- /dev/null +++ b/stdlib/SuiteSparse/test/threads.jl @@ -0,0 +1,20 @@ +using Test, LinearAlgebra, SparseArrays + +@testset "threaded SuiteSparse tests" begin + A = sprandn(200, 200, 0.2) + b = rand(200) + + function test(n::Integer) + _A = A[1:n, 1:n] + _b = b[1:n] + x = qr(_A) \ _b + return norm(x) + end + + res_threads = zeros(100) + Threads.@threads for i in 1:100 + res_threads[i] = test(i + 100) + end + + @test res_threads ≈ [test(i + 100) for i in 1:100] +end diff --git a/test/cmdlineargs.jl b/test/cmdlineargs.jl index b9769b74bcbf2..8356f36f7a828 100644 --- a/test/cmdlineargs.jl +++ b/test/cmdlineargs.jl @@ -407,6 +407,9 @@ let exename = `$(Base.julia_cmd()) --startup-file=no` # test the program name remains constant mktempdir() do dir + # dir can be case-incorrect sometimes + dir = realpath(dir) + a = joinpath(dir, "a.jl") b = joinpath(dir, "b.jl") c = joinpath(dir, ".julia", "config", "startup.jl") @@ -430,19 +433,19 @@ let exename = `$(Base.julia_cmd()) --startup-file=no` [a, a, b, a] @test readsplit(`$exename -L $b -e 'exit(0)'`) == - [realpath(b), ""] + [b, ""] @test readsplit(`$exename -L $b $a`) == - [realpath(b), a, + [b, a, a, a, b, a] @test readsplit(`$exename --startup-file=yes -e 'exit(0)'`) == [c, ""] @test readsplit(`$exename --startup-file=yes -L $b -e 'exit(0)'`) == [c, "", - realpath(b), ""] + b, ""] @test readsplit(`$exename --startup-file=yes -L $b $a`) == [c, a, - realpath(b), a, + b, a, a, a, b, a] end diff --git a/test/compiler/codegen.jl b/test/compiler/codegen.jl index ab1b262842f46..41e153e93544f 100644 --- a/test/compiler/codegen.jl +++ b/test/compiler/codegen.jl @@ -426,3 +426,10 @@ function f33590(b, x) end @test f33590(true, (3,)) == (3,) @test f33590(false, (3,)) == (4,) + +# issue 29864 +const c29864 = VecElement{Union{Int,Nothing}}(2) +@noinline f29864() = c29864 +@noinline g29864() = VecElement{Union{Int,Nothing}}(3) +@test f29864().value === 2 +@test g29864().value === 3 diff --git a/test/compiler/inference.jl b/test/compiler/inference.jl index b275cdf904757..15e03aefd6a1b 100644 --- a/test/compiler/inference.jl +++ b/test/compiler/inference.jl @@ -2492,3 +2492,14 @@ struct X33954 end f33954(x) = rand(Bool) ? f33954((x,)) : x @test Base.return_types(f33954, Tuple{X33954})[1] >: X33954 + +# issue #34752 +struct a34752{T} end +function a34752(c, d...) + length(d) > 1 || error() +end +function h34752() + g = Tuple[(42, Any[42][1], 42)][1] + a34752(g...) +end +@test h34752() === true diff --git a/test/llvmpasses/gcroots.ll b/test/llvmpasses/gcroots.ll index fbccd3592b77a..76c409c17289f 100644 --- a/test/llvmpasses/gcroots.ll +++ b/test/llvmpasses/gcroots.ll @@ -618,6 +618,67 @@ top: ret i8 %add } +define i8 @vector_arrayptrs() { +; CHECK-LABEL: @vector_arrayptrs +; CHECK: %gcframe = alloca %jl_value_t addrspace(10)*, i32 3 +; CHECK: [[GEP0:%.*]] = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 +; CHECK: store %jl_value_t addrspace(10)* %obj1, %jl_value_t addrspace(10)** [[GEP0]] +; +top: + %ptls = call %jl_value_t*** @julia.ptls_states() + %obj1 = call %jl_value_t addrspace(10) *@alloc() + %decayed = addrspacecast %jl_value_t addrspace(10) *%obj1 to %jl_value_t addrspace(11) * + %arrayptrptr = bitcast %jl_value_t addrspace(11) *%decayed to <2 x i8 addrspace(13)*> addrspace(11)* + %arrayptrs = load <2 x i8 addrspace(13)*>, <2 x i8 addrspace(13)*> addrspace(11)* %arrayptrptr, align 16 + %arrayptr = extractelement <2 x i8 addrspace(13)*> %arrayptrs, i32 0 + call void @jl_safepoint() + %val = load i8, i8 addrspace(13)* %arrayptr + ret i8 %val +} + +declare <2 x i8 addrspace(13)*> @llvm.masked.load.v2p13i8.p11v2p13i8 (<2 x i8 addrspace(13)*> addrspace(11)*, i32, <2 x i1>, <2 x i8 addrspace(13)*>) + +define i8 @masked_arrayptrs() { +; CHECK-LABEL: @masked_arrayptrs +; CHECK: %gcframe = alloca %jl_value_t addrspace(10)*, i32 3 +; CHECK: %arrayptrs = call <2 x i8 addrspace(13)*> @llvm.masked.load.v2p13i8.p11v2p13i8(<2 x i8 addrspace(13)*> addrspace(11)* %arrayptrptr, i32 16, <2 x i1> , <2 x i8 addrspace(13)*> zeroinitializer) +; CHECK: [[GEP0:%.*]] = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 +; CHECK: store %jl_value_t addrspace(10)* %obj1, %jl_value_t addrspace(10)** [[GEP0]] +; +top: + %ptls = call %jl_value_t*** @julia.ptls_states() + %obj1 = call %jl_value_t addrspace(10) *@alloc() + %decayed = addrspacecast %jl_value_t addrspace(10) *%obj1 to %jl_value_t addrspace(11) * + %arrayptrptr = bitcast %jl_value_t addrspace(11) *%decayed to <2 x i8 addrspace(13)*> addrspace(11)* + %arrayptrs = call <2 x i8 addrspace(13)*> @llvm.masked.load.v2p13i8.p11v2p13i8(<2 x i8 addrspace(13)*> addrspace(11)* %arrayptrptr, i32 16, <2 x i1> , <2 x i8 addrspace(13)*> undef) + %arrayptr = extractelement <2 x i8 addrspace(13)*> %arrayptrs, i32 0 + call void @jl_safepoint() + %val = load i8, i8 addrspace(13)* %arrayptr + ret i8 %val +} + +declare <2 x i8 addrspace(13)*> @llvm.masked.gather.v2p13i8.v2p11p13i8 (<2 x i8 addrspace(13)* addrspace(11)*>, i32, <2 x i1>, <2 x i8 addrspace(13)*>) + +define i8 @gather_arrayptrs() { +; CHECK-LABEL: @gather_arrayptrs +; CHECK: %gcframe = alloca %jl_value_t addrspace(10)*, i32 3 +; CHECK: %arrayptrs = call <2 x i8 addrspace(13)*> @llvm.masked.gather.v2p13i8.v2p11p13i8(<2 x i8 addrspace(13)* addrspace(11)*> %arrayptrptrs, i32 16, <2 x i1> , <2 x i8 addrspace(13)*> zeroinitializer) +; CHECK: [[GEP0:%.*]] = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 +; CHECK: store %jl_value_t addrspace(10)* %obj1, %jl_value_t addrspace(10)** [[GEP0]] +; +top: + %ptls = call %jl_value_t*** @julia.ptls_states() + %obj1 = call %jl_value_t addrspace(10) *@alloc() + %decayed = addrspacecast %jl_value_t addrspace(10) *%obj1 to %jl_value_t addrspace(11)* + %arrayptrptr = bitcast %jl_value_t addrspace(11) *%decayed to i8 addrspace(13)* addrspace(11)* + %arrayptrptrs = insertelement <2 x i8 addrspace(13)* addrspace(11)*> zeroinitializer, i8 addrspace(13)* addrspace(11)* %arrayptrptr, i32 0 + %arrayptrs = call <2 x i8 addrspace(13)*> @llvm.masked.gather.v2p13i8.v2p11p13i8(<2 x i8 addrspace(13)* addrspace(11)*> %arrayptrptrs, i32 16, <2 x i1> , <2 x i8 addrspace(13)*> undef) + %arrayptr = extractelement <2 x i8 addrspace(13)*> %arrayptrs, i32 0 + call void @jl_safepoint() + %val = load i8, i8 addrspace(13)* %arrayptr + ret i8 %val +} + !0 = !{!"jtbaa"} !1 = !{!"jtbaa_const", !0, i64 0} !2 = !{!1, !1, i64 0, i64 1} diff --git a/test/logging.jl b/test/logging.jl index 3bb8f083e4436..f8530ff235771 100644 --- a/test/logging.jl +++ b/test/logging.jl @@ -384,4 +384,12 @@ end @test logs[1].id != logs[2].id end +# Issue #34485 +@testset "`_group` must be a `Symbol`" begin + (record,), _ = collect_test_logs() do + @info "test" + end + @test record.group == :logging # name of this file +end + end diff --git a/test/math.jl b/test/math.jl index 4515f8ca7b862..f807de380047e 100644 --- a/test/math.jl +++ b/test/math.jl @@ -1030,10 +1030,15 @@ end end end -isdefined(Main, :Furlongs) || @eval Main include("testhelpers/Furlongs.jl") -using .Main.Furlongs -@test hypot(Furlong(0), Furlong(0)) == Furlong(0.0) -@test hypot(Furlong(3), Furlong(4)) == Furlong(5.0) -@test hypot(Furlong(NaN), Furlong(Inf)) == Furlong(Inf) -@test hypot(Furlong(Inf), Furlong(NaN)) == Furlong(Inf) -@test hypot(Furlong(Inf), Furlong(Inf)) == Furlong(Inf) +@testset "hypot" begin + @test hypot(0, 0) == 0.0 + @test hypot(3, 4) == 5.0 + @test hypot(NaN, Inf) == Inf + @test hypot(Inf, NaN) == Inf + @test hypot(Inf, Inf) == Inf + + isdefined(Main, :Furlongs) || @eval Main include("testhelpers/Furlongs.jl") + using .Main.Furlongs + @test hypot(Furlong(0), Furlong(0)) == Furlong(0.0) + @test hypot(Furlong(3), Furlong(4)) == Furlong(5.0) +end diff --git a/test/offsetarray.jl b/test/offsetarray.jl index bb25424d6855e..e7b4fb9410018 100644 --- a/test/offsetarray.jl +++ b/test/offsetarray.jl @@ -440,6 +440,14 @@ I = findall(!iszero, z) @test std(A_3_3, dims=2) == OffsetArray(reshape([3,3,3], (3,1)), A_3_3.offsets) @test sum(OffsetArray(fill(1,3000), -1000)) == 3000 +# https://github.com/JuliaArrays/OffsetArrays.jl/issues/92 +A92 = OffsetArray(reshape(1:27, 3, 3, 3), -2, -2, -2) +B92 = view(A92, :, :, -1:0) +@test axes(B92) == (-1:1, -1:1, 1:2) +@test sum(B92, dims=(2,3)) == OffsetArray(reshape([51,57,63], Val(3)), -2, -2, 0) +B92 = view(A92, :, :, Base.IdentityUnitRange(-1:0)) +@test sum(B92, dims=(2,3)) == OffsetArray(reshape([51,57,63], Val(3)), -2, -2, -2) + @test norm(v) ≈ norm(parent(v)) @test norm(A) ≈ norm(parent(A)) @test dot(v, v) ≈ dot(v0, v0) diff --git a/test/precompile.jl b/test/precompile.jl index f85704b393aa6..fcedee3098e87 100644 --- a/test/precompile.jl +++ b/test/precompile.jl @@ -797,4 +797,27 @@ let end end +# Issue #25971 +let + load_path = mktempdir() + load_cache_path = mktempdir() + try + pushfirst!(LOAD_PATH, load_path) + pushfirst!(DEPOT_PATH, load_cache_path) + sourcefile = joinpath(load_path, "Foo25971.jl") + write(sourcefile, "module Foo25971 end") + chmod(sourcefile, 0o666) + cachefile = Base.compilecache(Base.PkgId("Foo25971")) + @test filemode(sourcefile) == filemode(cachefile) + chmod(sourcefile, 0o600) + cachefile = Base.compilecache(Base.PkgId("Foo25971")) + @test filemode(sourcefile) == filemode(cachefile) + finally + rm(load_path, recursive=true) + rm(load_cache_path, recursive=true) + filter!((≠)(load_path), LOAD_PATH) + filter!((≠)(load_cache_path), DEPOT_PATH) + end +end + end # !withenv diff --git a/test/show.jl b/test/show.jl index e89f745454398..5a243bd9556a7 100644 --- a/test/show.jl +++ b/test/show.jl @@ -1445,6 +1445,11 @@ end "2-element Array{Any,1}:\n Pair{Integer,Int64}(1, 2)\n Pair{Integer,Int64}(33, 4)" end +@testset "alignment for complex arrays" begin # (#34763) + @test replstr([ 1e-7 + 2.0e-11im, 2.0e-5 + 4e0im]) == "2-element Array{Complex{Float64},1}:\n 1.0e-7 + 2.0e-11im\n 2.0e-5 + 4.0im" + @test replstr([ 1f-7 + 2.0f-11im, 2.0f-5 + 4f0im]) == "2-element Array{Complex{Float32},1}:\n 1.0f-7 + 2.0f-11im\n 2.0f-5 + 4.0f0im" +end + @testset "display arrays non-compactly when size(⋅, 2) == 1" begin # 0-dim @test replstr(zeros(Complex{Int})) == "0-dimensional Array{Complex{$Int},0}:\n0 + 0im" @@ -1992,3 +1997,5 @@ end @weak_test_repr "a[begin, end, let x=1; (x+1;); end]" @test repr(Base.remove_linenums!(:(a[begin, end, let x=1; (x+1;); end]))) == ":(a[begin, end, let x = 1\n begin\n x + 1\n end\n end])" +@test_repr "a[(bla;)]" +@weak_test_repr "a[x -> f(x)]" diff --git a/test/testhelpers/Furlongs.jl b/test/testhelpers/Furlongs.jl index 3c2f7a035e91c..98525d5d67dbc 100644 --- a/test/testhelpers/Furlongs.jl +++ b/test/testhelpers/Furlongs.jl @@ -45,8 +45,8 @@ for f in (:real,:imag,:complex,:+,:-) @eval Base.$f(x::Furlong{p}) where {p} = Furlong{p}($f(x.val)) end -import Base: +, -, ==, !=, <, <=, isless, isequal, *, /, //, div, rem, mod, ^, hypot -for op in (:+, :-, :hypot) +import Base: +, -, ==, !=, <, <=, isless, isequal, *, /, //, div, rem, mod, ^ +for op in (:+, :-) @eval function $op(x::Furlong{p}, y::Furlong{p}) where {p} v = $op(x.val, y.val) Furlong{p}(v) diff --git a/test/threads.jl b/test/threads.jl index 54e11c8df3f19..c555363cf9d62 100644 --- a/test/threads.jl +++ b/test/threads.jl @@ -20,3 +20,120 @@ if Sys.islinux() && Sys.CPU_THREADS > 1 && Sys.which("taskset") !== nothing @test endswith(run_with_affinity("1"), "2") @test endswith(run_with_affinity("0,1"), "3") end + +# issue #34769 +function idle_callback(handle) + idle = @Base.handle_as handle UvTestIdle + if idle.active + idle.count += 1 + if idle.count == 1 + # We want to hit the case where we're allowing + # the thread to go to sleep, which only happens + # after some default amount of time (DEFAULT_THREAD_SLEEP_THRESHOLD) + # so spend that amount of time here. + Libc.systemsleep(0.004) + elseif idle.count >= 10 + lock(idle.cond) + try + notify(idle.cond, true) + finally + unlock(idle.cond) + end + idle.active = false + end + end + nothing +end + +mutable struct UvTestIdle + handle::Ptr{Cvoid} + cond::Base.ThreadSynchronizer + isopen::Bool + active::Bool + count::Int + + function UvTestIdle() + this = new(Libc.malloc(Base._sizeof_uv_idle), Base.ThreadSynchronizer(), true, false, 0) + Base.iolock_begin() + Base.associate_julia_struct(this.handle, this) + err = ccall(:uv_idle_init, Cint, (Ptr{Cvoid}, Ptr{Cvoid}), + Base.eventloop(), this.handle) + if err != 0 + Libc.free(this.handle) + this.handle = C_NULL + throw(_UVError("uv_idle_init", err)) + end + err = ccall(:uv_idle_start, Cint, (Ptr{Cvoid}, Ptr{Cvoid}), + this.handle, @cfunction(idle_callback, Cvoid, (Ptr{Cvoid},))) + if err != 0 + Libc.free(this.handle) + this.handle = C_NULL + throw(_UVError("uv_idle_start", err)) + end + finalizer(Base.uvfinalize, this) + Base.iolock_end() + return this + end +end +Base.unsafe_convert(::Type{Ptr{Cvoid}}, idle::UvTestIdle) = idle.handle + +function Base.uvfinalize(t::UvTestIdle) + Base.iolock_begin() + Base.lock(t.cond) + try + if t.handle != C_NULL + Base.disassociate_julia_struct(t.handle) # not going to call the usual close hooks + if t.isopen + t.isopen = false + ccall(:jl_close_uv, Cvoid, (Ptr{Cvoid},), t) + end + t.handle = C_NULL + notify(t.cond, false) + end + finally + unlock(t.cond) + end + Base.iolock_end() + nothing +end + +function Base.wait(idle::UvTestIdle) + Base.iolock_begin() + Base.preserve_handle(idle) + Base.lock(idle.cond) + try + idle.active = true + wait(idle.cond) + finally + Base.unlock(idle.cond) + Base.unpreserve_handle(idle) + Base.iolock_end() + end +end + +# Spawn another process as a watchdog. If this test fails, it'll unrecoverably +# hang in the event loop. Another process needs to kill it +cmd = """ + @async (Base.wait_readnb(stdin, 1); exit()) + sleep(100) + isopen(stdin) || exit() + println(stderr, "ERROR: Killing threads test due to watchdog expiry") + ccall(:uv_kill, Cint, (Cint, Cint), $(getpid()), Base.SIGTERM) +""" +proc = open(pipeline(`$(Base.julia_cmd()) -e $cmd`; stderr=stderr); write=true) + +let idle=UvTestIdle() + wait(idle) +end + +using Base.Threads +@threads for i = 1:1 + let idle=UvTestIdle() + wait(idle) + end +end + +@test process_running(proc) + +# We don't need the watchdog anymore +close(proc.in) diff --git a/test/vecelement.jl b/test/vecelement.jl index 077f608d59e03..5652ea10d3aa6 100644 --- a/test/vecelement.jl +++ b/test/vecelement.jl @@ -3,7 +3,7 @@ make_value(::Type{T}, i::Integer) where {T<:Integer} = 3*i%T make_value(::Type{T},i::Integer) where {T<:AbstractFloat} = T(3*i) -Vec{N,T} = NTuple{N,Base.VecElement{T}} +const Vec{N,T} = NTuple{N,Base.VecElement{T}} # Crash report for #15244 motivated this test. @generated function thrice_iota(::Type{Vec{N,T}}) where {N,T} @@ -73,6 +73,13 @@ end @test isa(VecElement((1,2)), VecElement{Tuple{Int,Int}}) +# test for alignment agreement (#32414) +@noinline function bar32414(a) + v = ntuple(w -> VecElement(Float64(10w)), Val(8)) + return a, (v, (a, (1e6, 1e9))) +end +@test bar32414(-35.0) === (-35.0, ((VecElement(10.0), VecElement(20.0), VecElement(30.0), VecElement(40.0), VecElement(50.0), VecElement(60.0), VecElement(70.0), VecElement(80.0)), (-35.0, (1.0e6, 1.0e9)))) + # The following test mimic SIMD.jl const _llvmtypes = Dict{DataType, String}( Float64 => "double", @@ -105,14 +112,8 @@ end # Test various SIMD Vectors with known good sizes for T in (Float64, Float32, Int64, Int32) for N in 1:36 - # For some vectortypes Julia emits llvm arrays instead of vectors - if N % 7 == 0 || N % 11 == 0 || N % 13 == 0 || N % 15 == 0 || - N % 19 == 0 || N % 23 == 0 || N % 25 == 0 || N % 27 == 0 || - N % 29 == 0 || N % 31 == 0 - continue - end - a = ntuple(i->VecElement(T(i)), N) - result = ntuple(i-> VecElement(T(i+i)), N) + a = ntuple(i -> VecElement(T(i)), N) + result = ntuple(i -> VecElement(T(i+i)), N) b = vecadd(a, a) @test b == result b = f20961([a], [a])