Skip to content

Commit ec84807

Browse files
authored
Backports for 1.11.0-rc1 (#54611)
Backported PRs: - [x] #54361 <!-- [LBT] Upgrade to v5.9.0 --> - [x] #54474 <!-- Unalias source from dest in copytrito --> - [x] #54548 <!-- Fixes for bitcast bugs with LLVM 17 / opaque pointers --> - [x] #54191 <!-- make `AbstractPipe` public --> - [x] #53402 <!-- Add `jl_getaffinity` and `jl_setaffinity` --> - [x] #53356 <!-- Rename at-scriptdir project argument to at-script and search upwards for Project.toml --> - [x] #54545 <!-- typeintersect: fix incorrect innervar handling under circular env --> - [x] #54586 <!-- Set storage class of julia globals to dllimport on windows to avoid auto-import weirdness. Forward port of #54572 --> - [x] #54587 <!-- Accomodate for rectangular matrices in `copytrito!` --> - [x] #54617 <!-- CLI: Use `GetModuleHandleExW` to locate libjulia.dll --> - [x] #54605 <!-- Allow libquadmath to also fail as it is not available on all systems --> - [x] #54634 <!-- Fix trampoline assembly for build on clang 18 on apple silicon --> - [x] #54635 <!-- Aggressive constprop in trevc! to stabilize triangular eigvec --> - [x] #54645 <!-- ensure we set the right value to gc_first_tid --> - [x] #54554 <!-- make elsize public --> - [x] #54648 <!-- Construct LazyString in error paths for tridiag --> - [x] #54658 <!-- fix missing uuid check on extension when finding the location of an extension --> - [x] #54594 <!-- Switch to Pkg mode prompt immediately and load Pkg in the background --> - [x] #54669 <!-- Improve error message in inplace transpose --> - [x] #54671 <!-- Add boundscheck in bindingkey_eq to avoid OOB access due to data race --> - [x] #54672 <!-- make: Fix `sed` command for LLVM libraries with no symbol versioning --> - [x] #54624 <!-- more precise aliasing checks for SubArray --> - [x] #54679 <!-- 🤖 [master] Bump the Distributed stdlib from 6a07d98 to 6c7cdb5 --> - [x] #54604 <!-- Fix tbaa annotation on union selector bytes inside of structs --> - [x] #54690 <!-- Fix assertion/crash when optimizing function with dead basic block --> - [x] #54704 <!-- LazyString in reinterpretarray error messages --> - [x] #54718 <!-- fix prepend StackOverflow issue --> - [x] #54674 <!-- Reimplement dummy pkg prompt as standard prompt --> - [x] #54737 <!-- LazyString in interpolated error messages involving types --> - [x] #54642 <!-- Document GenericMemory and AtomicMemory --> - [x] #54713 <!-- make: use `readelf` for LLVM symbol version detection --> - [x] #54760 <!-- REPL: improve prompt! async function handler --> - [x] #54606 <!-- fix double-counting and non-deterministic results in `summarysize` --> - [x] #54759 <!-- REPL: Fully populate the dummy Pkg prompt --> - [x] #54702 <!-- lowering: Recognize argument destructuring inside macro hygiene --> - [x] #54678 <!-- Don't let setglobal! implicitly create bindings --> - [x] #54730 <!-- Fix uuidkey of exts in fast path of `require_stdlib` --> - [x] #54765 <!-- Handle no-postdominator case in finalizer pass --> - [x] #54591 <!-- Don't expose guard pages to malloc_stack API consumers --> - [x] #54755 <!-- [TOML] remove Dates hack, replace with explicit usage --> - [x] #54721 <!-- add try/catch around scheduler to reset sleep state --> - [x] #54631 <!-- Avoid concatenating LazyString in setindex! for triangular matrices --> - [x] #54322 <!-- effects: add new `@consistent_overlay` macro --> - [x] #54785 - [x] #54865 - [x] #54815 - [x] #54795 - [x] #54779 - [x] #54837 Contains multiple commits, manual intervention needed: - [ ] #52694 <!-- Reinstate similar for AbstractQ for backward compatibility --> - [ ] #54649 <!-- Less restrictive copyto! signature for triangular matrices --> Non-merged PRs with backport label: - [ ] #54779 <!-- make recommendation clearer on manifest version mismatch --> - [ ] #54739 <!-- finish implementation of upgradable stdlibs --> - [ ] #54738 <!-- serialization: fix relocatability bug --> - [ ] #54574 <!-- Make ScopedValues public --> - [ ] #54457 <!-- Make `String(::Memory)` copy --> - [ ] #53957 <!-- tweak how filtering is done for what packages should be precompiled --> - [ ] #53452 <!-- RFC: allow Tuple{Union{}}, returning Union{} --> - [ ] #53286 <!-- Raise an error when using `include_dependency` with non-existent file or directory --> - [ ] #51479 <!-- prevent code loading from lookin in the versioned environment when building Julia -->
2 parents edb3c92 + c644312 commit ec84807

File tree

132 files changed

+2079
-787
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+2079
-787
lines changed

Make.inc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1393,7 +1393,7 @@ ifeq ($(OS), WINNT)
13931393
HAVE_SSP := 1
13941394
OSLIBS += -Wl,--export-all-symbols -Wl,--version-script=$(BUILDROOT)/src/julia.expmap \
13951395
$(NO_WHOLE_ARCHIVE) -lpsapi -lkernel32 -lws2_32 -liphlpapi -lwinmm -ldbghelp -luserenv -lsecur32 -latomic -lole32
1396-
JLDFLAGS += -Wl,--stack,8388608
1396+
JLDFLAGS += -Wl,--stack,8388608 --disable-auto-import --disable-runtime-pseudo-reloc
13971397
ifeq ($(ARCH),i686)
13981398
JLDFLAGS += -Wl,--large-address-aware
13991399
endif

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ win-extras:
657657
ifeq ($(USE_SYSTEM_LLVM), 1)
658658
LLVM_SIZE := llvm-size$(EXE)
659659
else
660-
LLVM_SIZE := $(build_depsbindir)/llvm-size$(EXE)
660+
LLVM_SIZE := PATH=$(build_bindir):$$PATH; $(build_depsbindir)/llvm-size$(EXE)
661661
endif
662662
build-stats:
663663
ifeq ($(USE_BINARYBUILDER_LLVM),1)

NEWS.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ Command-line option changes
5555
difference between defining a `main` function and executing the code directly at the end of the script ([#50974]).
5656
* The `--compiled-modules` and `--pkgimages` flags can now be set to `existing`, which will
5757
cause Julia to consider loading existing cache files, but not to create new ones ([#50586], [#52573]).
58+
* The `--project` argument now accepts `@script` to give a path to a directory with a Project.toml relative to the passed script file. `--project=@script/foo` for the `foo` subdirectory. If no path is given after (i.e. `--project=@script`) then (like `--project=@.`) the directory and its parents are searched for a Project.toml ([#50864] and [#53352])
5859

5960
Multi-threading changes
6061
-----------------------
6162

6263
* `Threads.@threads` now supports the `:greedy` scheduler, intended for non-uniform workloads ([#52096]).
63-
* A new exported struct `Lockable{T, L<:AbstractLock}` makes it easy to bundle a resource and its lock together ([#52898]).
64+
* A new public (but unexported) struct `Base.Lockable{T, L<:AbstractLock}` makes it easy to bundle a resource and its lock together ([#52898]).
6465

6566
New library functions
6667
---------------------
@@ -87,6 +88,7 @@ New library functions
8788
* `Sys.username()` can be used to return the current user's username ([#51897]).
8889
* `Sys.isreadable(), Sys.iswritable()` can be used to check if the current user has access permissions
8990
that permit reading and writing, respectively. ([#53320]).
91+
* `wrap(Array, m::Union{MemoryRef{T}, Memory{T}}, dims)` is the safe counterpart to `unsafe_wrap` ([#52049]).
9092
* `GC.logging_enabled()` can be used to test whether GC logging has been enabled via `GC.enable_logging` ([#51647]).
9193
* `IdSet` is now exported from Base and considered public ([#53262]).
9294
* `@time` now reports a count of any lock conflicts where a `ReentrantLock` had to wait, plus a new macro

base/Enums.jl

+11-10
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ end
9090
# give Enum types scalar behavior in broadcasting
9191
Base.broadcastable(x::Enum) = Ref(x)
9292

93-
@noinline enum_argument_error(typename, x) = throw(ArgumentError(string("invalid value for Enum $(typename): $x")))
93+
@noinline enum_argument_error(typename, x) = throw(ArgumentError(LazyString("invalid value for Enum ", typename, ": ", x)))
9494

9595
"""
9696
@enum EnumName[::BaseType] value1[=x] value2[=y]
@@ -143,18 +143,19 @@ julia> Symbol(apple)
143143
"""
144144
macro enum(T::Union{Symbol,Expr}, syms...)
145145
if isempty(syms)
146-
throw(ArgumentError("no arguments given for Enum $T"))
146+
throw(ArgumentError(LazyString("no arguments given for Enum ", T)))
147147
end
148148
basetype = Int32
149149
typename = T
150150
if isa(T, Expr) && T.head === :(::) && length(T.args) == 2 && isa(T.args[1], Symbol)
151151
typename = T.args[1]
152152
basetype = Core.eval(__module__, T.args[2])
153153
if !isa(basetype, DataType) || !(basetype <: Integer) || !isbitstype(basetype)
154-
throw(ArgumentError("invalid base type for Enum $typename, $T=::$basetype; base type must be an integer primitive type"))
154+
throw(ArgumentError(
155+
LazyString("invalid base type for Enum ", typename, ", ", T, "=::", basetype, "; base type must be an integer primitive type")))
155156
end
156157
elseif !isa(T, Symbol)
157-
throw(ArgumentError("invalid type expression for enum $T"))
158+
throw(ArgumentError(LazyString("invalid type expression for enum ", T)))
158159
end
159160
values = Vector{basetype}()
160161
seen = Set{Symbol}()
@@ -169,32 +170,32 @@ macro enum(T::Union{Symbol,Expr}, syms...)
169170
s isa LineNumberNode && continue
170171
if isa(s, Symbol)
171172
if i == typemin(basetype) && !isempty(values)
172-
throw(ArgumentError("overflow in value \"$s\" of Enum $typename"))
173+
throw(ArgumentError(LazyString("overflow in value \"", s, "\" of Enum ", typename)))
173174
end
174175
elseif isa(s, Expr) &&
175176
(s.head === :(=) || s.head === :kw) &&
176177
length(s.args) == 2 && isa(s.args[1], Symbol)
177178
i = Core.eval(__module__, s.args[2]) # allow exprs, e.g. uint128"1"
178179
if !isa(i, Integer)
179-
throw(ArgumentError("invalid value for Enum $typename, $s; values must be integers"))
180+
throw(ArgumentError(LazyString("invalid value for Enum ", typename, ", ", s, "; values must be integers")))
180181
end
181182
i = convert(basetype, i)
182183
s = s.args[1]
183184
hasexpr = true
184185
else
185-
throw(ArgumentError(string("invalid argument for Enum ", typename, ": ", s)))
186+
throw(ArgumentError(LazyString("invalid argument for Enum ", typename, ": ", s)))
186187
end
187188
s = s::Symbol
188189
if !Base.isidentifier(s)
189-
throw(ArgumentError("invalid name for Enum $typename; \"$s\" is not a valid identifier"))
190+
throw(ArgumentError(LazyString("invalid name for Enum ", typename, "; \"", s, "\" is not a valid identifier")))
190191
end
191192
if hasexpr && haskey(namemap, i)
192-
throw(ArgumentError("both $s and $(namemap[i]) have value $i in Enum $typename; values must be unique"))
193+
throw(ArgumentError(LazyString("both ", s, " and ", namemap[i], " have value ", i, " in Enum ", typename, "; values must be unique")))
193194
end
194195
namemap[i] = s
195196
push!(values, i)
196197
if s in seen
197-
throw(ArgumentError("name \"$s\" in Enum $typename is not unique"))
198+
throw(ArgumentError(LazyString("name \"", s, "\" in Enum ", typename, " is not unique")))
198199
end
199200
push!(seen, s)
200201
if length(values) == 1

base/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -249,12 +249,12 @@ endif
249249
ifneq (,$(LIBGFORTRAN_VERSION))
250250
$(eval $(call symlink_system_library,CSL,libgfortran,$(LIBGFORTRAN_VERSION)))
251251
endif
252-
$(eval $(call symlink_system_library,CSL,libquadmath,0))
253252
$(eval $(call symlink_system_library,CSL,libstdc++,6))
254-
# We allow libssp, libatomic and libgomp to fail as they are not available on all systems
253+
# We allow libssp, libatomic, libgomp and libquadmath to fail as they are not available on all systems
255254
$(eval $(call symlink_system_library,CSL,libssp,0,ALLOW_FAILURE))
256255
$(eval $(call symlink_system_library,CSL,libatomic,1,ALLOW_FAILURE))
257256
$(eval $(call symlink_system_library,CSL,libgomp,1,ALLOW_FAILURE))
257+
$(eval $(call symlink_system_library,CSL,libquadmath,0,ALLOW_FAILURE))
258258
$(eval $(call symlink_system_library,PCRE,libpcre2-8))
259259
$(eval $(call symlink_system_library,DSFMT,libdSFMT))
260260
$(eval $(call symlink_system_library,LIBBLASTRAMPOLINE,libblastrampoline))

base/abstractarray.jl

+9-7
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ julia> checkindex(Bool, 1:20, 21)
748748
false
749749
```
750750
"""
751-
checkindex(::Type{Bool}, inds, i) = throw(ArgumentError("unable to check bounds for indices of type $(typeof(i))"))
751+
checkindex(::Type{Bool}, inds, i) = throw(ArgumentError(LazyString("unable to check bounds for indices of type ", typeof(i))))
752752
checkindex(::Type{Bool}, inds::AbstractUnitRange, i::Real) = (first(inds) <= i) & (i <= last(inds))
753753
checkindex(::Type{Bool}, inds::IdentityUnitRange, i::Real) = checkindex(Bool, inds.indices, i)
754754
checkindex(::Type{Bool}, inds::OneTo{T}, i::T) where {T<:BitInteger} = unsigned(i - one(i)) < unsigned(last(inds))
@@ -1519,12 +1519,14 @@ much more common case where aliasing does not occur. By default,
15191519
unaliascopy(A::Array) = copy(A)
15201520
unaliascopy(A::AbstractArray)::typeof(A) = (@noinline; _unaliascopy(A, copy(A)))
15211521
_unaliascopy(A::T, C::T) where {T} = C
1522-
_unaliascopy(A, C) = throw(ArgumentError("""
1523-
an array of type `$(typename(typeof(A)).wrapper)` shares memory with another argument
1524-
and must make a preventative copy of itself in order to maintain consistent semantics,
1525-
but `copy(::$(typeof(A)))` returns a new array of type `$(typeof(C))`.
1526-
To fix, implement:
1527-
`Base.unaliascopy(A::$(typename(typeof(A)).wrapper))::typeof(A)`"""))
1522+
function _unaliascopy(A, C)
1523+
Aw = typename(typeof(A)).wrapper
1524+
throw(ArgumentError(LazyString("an array of type `", Aw, "` shares memory with another argument ",
1525+
"and must make a preventative copy of itself in order to maintain consistent semantics, ",
1526+
"but `copy(::", typeof(A), ")` returns a new array of type `", typeof(C), "`.\n",
1527+
"""To fix, implement:
1528+
`Base.unaliascopy(A::""", Aw, ")::typeof(A)`")))
1529+
end
15281530
unaliascopy(A) = A
15291531

15301532
"""

base/array.jl

+55-6
Original file line numberDiff line numberDiff line change
@@ -1312,8 +1312,7 @@ end
13121312

13131313
append!(a::AbstractVector, iter) = _append!(a, IteratorSize(iter), iter)
13141314
push!(a::AbstractVector, iter...) = append!(a, iter)
1315-
1316-
append!(a::AbstractVector, iter...) = foldl(append!, iter, init=a)
1315+
append!(a::AbstractVector, iter...) = (for v in iter; append!(a, v); end; return a)
13171316

13181317
function _append!(a::AbstractVector, ::Union{HasLength,HasShape}, iter)
13191318
n = Int(length(iter))::Int
@@ -1372,10 +1371,9 @@ function prepend!(a::Vector{T}, items::Union{AbstractVector{<:T},Tuple}) where T
13721371
return a
13731372
end
13741373

1375-
prepend!(a::Vector, iter) = _prepend!(a, IteratorSize(iter), iter)
1376-
pushfirst!(a::Vector, iter...) = prepend!(a, iter)
1377-
1378-
prepend!(a::AbstractVector, iter...) = foldr((v, a) -> prepend!(a, v), iter, init=a)
1374+
prepend!(a::AbstractVector, iter) = _prepend!(a, IteratorSize(iter), iter)
1375+
pushfirst!(a::AbstractVector, iter...) = prepend!(a, iter)
1376+
prepend!(a::AbstractVector, iter...) = (for v = reverse(iter); prepend!(a, v); end; return a)
13791377

13801378
function _prepend!(a::Vector, ::Union{HasLength,HasShape}, iter)
13811379
@_terminates_locally_meta
@@ -3062,3 +3060,54 @@ intersect(r::AbstractRange, v::AbstractVector) = intersect(v, r)
30623060
_getindex(v, i)
30633061
end
30643062
end
3063+
3064+
"""
3065+
wrap(Array, m::Union{Memory{T}, MemoryRef{T}}, dims)
3066+
3067+
Create an array of size `dims` using `m` as the underlying memory. This can be thought of as a safe version
3068+
of [`unsafe_wrap`](@ref) utilizing `Memory` or `MemoryRef` instead of raw pointers.
3069+
"""
3070+
function wrap end
3071+
3072+
# validity checking for _wrap calls, separate from allocation of Array so that it can be more likely to inline into the caller
3073+
function _wrap(ref::MemoryRef{T}, dims::NTuple{N, Int}) where {T, N}
3074+
mem = ref.mem
3075+
mem_len = length(mem) + 1 - memoryrefoffset(ref)
3076+
len = Core.checked_dims(dims...)
3077+
@boundscheck mem_len >= len || invalid_wrap_err(mem_len, dims, len)
3078+
if N != 1 && !(ref === GenericMemoryRef(mem) && len === mem_len)
3079+
mem = ccall(:jl_genericmemory_slice, Memory{T}, (Any, Ptr{Cvoid}, Int), mem, ref.ptr_or_offset, len)
3080+
ref = MemoryRef(mem)
3081+
end
3082+
return ref
3083+
end
3084+
3085+
@noinline invalid_wrap_err(len, dims, proddims) = throw(DimensionMismatch(
3086+
"Attempted to wrap a MemoryRef of length $len with an Array of size dims=$dims, which is invalid because prod(dims) = $proddims > $len, so that the array would have more elements than the underlying memory can store."))
3087+
3088+
@eval @propagate_inbounds function wrap(::Type{Array}, m::MemoryRef{T}, dims::NTuple{N, Integer}) where {T, N}
3089+
dims = convert(Dims, dims)
3090+
ref = _wrap(m, dims)
3091+
$(Expr(:new, :(Array{T, N}), :ref, :dims))
3092+
end
3093+
3094+
@eval @propagate_inbounds function wrap(::Type{Array}, m::Memory{T}, dims::NTuple{N, Integer}) where {T, N}
3095+
dims = convert(Dims, dims)
3096+
ref = _wrap(MemoryRef(m), dims)
3097+
$(Expr(:new, :(Array{T, N}), :ref, :dims))
3098+
end
3099+
@eval @propagate_inbounds function wrap(::Type{Array}, m::MemoryRef{T}, l::Integer) where {T}
3100+
dims = (Int(l),)
3101+
ref = _wrap(m, dims)
3102+
$(Expr(:new, :(Array{T, 1}), :ref, :dims))
3103+
end
3104+
@eval @propagate_inbounds function wrap(::Type{Array}, m::Memory{T}, l::Integer) where {T}
3105+
dims = (Int(l),)
3106+
ref = _wrap(MemoryRef(m), (l,))
3107+
$(Expr(:new, :(Array{T, 1}), :ref, :dims))
3108+
end
3109+
@eval @propagate_inbounds function wrap(::Type{Array}, m::Memory{T}) where {T}
3110+
ref = MemoryRef(m)
3111+
dims = (length(m),)
3112+
$(Expr(:new, :(Array{T, 1}), :ref, :dims))
3113+
end

base/boot.jl

+2-1
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,8 @@ macro _foldable_meta()
282282
#=:notaskstate=#true,
283283
#=:inaccessiblememonly=#true,
284284
#=:noub=#true,
285-
#=:noub_if_noinbounds=#false))
285+
#=:noub_if_noinbounds=#false,
286+
#=:consistent_overlay=#false))
286287
end
287288

288289
macro inline() Expr(:meta, :inline) end

base/c.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ function ccall_macro_lower(convention, func, rettype, types, args, nreq)
344344
check = quote
345345
if !isa(func, Ptr{Cvoid})
346346
name = $name
347-
throw(ArgumentError("interpolated function `$name` was not a Ptr{Cvoid}, but $(typeof(func))"))
347+
throw(ArgumentError(LazyString("interpolated function `", name, "` was not a Ptr{Cvoid}, but ", typeof(func))))
348348
end
349349
end
350350
push!(statements, check)

base/compiler/abstractinterpretation.jl

+11-3
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ function add_call_backedges!(interp::AbstractInterpreter, @nospecialize(rettype)
491491
# ignore the `:nonoverlayed` property if `interp` doesn't use overlayed method table
492492
# since it will never be tainted anyway
493493
if !isoverlayed(method_table(interp))
494-
all_effects = Effects(all_effects; nonoverlayed=false)
494+
all_effects = Effects(all_effects; nonoverlayed=ALWAYS_FALSE)
495495
end
496496
all_effects === Effects() && return nothing
497497
end
@@ -889,7 +889,15 @@ function concrete_eval_eligible(interp::AbstractInterpreter,
889889
mi = result.edge
890890
if mi !== nothing && is_foldable(effects)
891891
if f !== nothing && is_all_const_arg(arginfo, #=start=#2)
892-
if is_nonoverlayed(interp) || is_nonoverlayed(effects)
892+
if (is_nonoverlayed(interp) || is_nonoverlayed(effects) ||
893+
# Even if overlay methods are involved, when `:consistent_overlay` is
894+
# explicitly applied, we can still perform concrete evaluation using the
895+
# original methods for executing them.
896+
# While there's a chance that the non-overlayed counterparts may raise
897+
# non-egal exceptions, it will not impact the compilation validity, since:
898+
# - the results of the concrete evaluation will not be inlined
899+
# - the exception types from the concrete evaluation will not be propagated
900+
is_consistent_overlay(effects))
893901
return :concrete_eval
894902
end
895903
# disable concrete-evaluation if this function call is tainted by some overlayed
@@ -2770,7 +2778,7 @@ function override_effects(effects::Effects, override::EffectsOverride)
27702778
notaskstate = override.notaskstate ? true : effects.notaskstate,
27712779
inaccessiblememonly = override.inaccessiblememonly ? ALWAYS_TRUE : effects.inaccessiblememonly,
27722780
noub = override.noub ? ALWAYS_TRUE :
2773-
override.noub_if_noinbounds && effects.noub !== ALWAYS_TRUE ? NOUB_IF_NOINBOUNDS :
2781+
(override.noub_if_noinbounds && effects.noub !== ALWAYS_TRUE) ? NOUB_IF_NOINBOUNDS :
27742782
effects.noub)
27752783
end
27762784

base/compiler/compiler.jl

+7-4
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@ struct EffectsOverride
4747
inaccessiblememonly::Bool
4848
noub::Bool
4949
noub_if_noinbounds::Bool
50+
consistent_overlay::Bool
5051
end
5152
function EffectsOverride(
5253
override::EffectsOverride =
53-
EffectsOverride(false, false, false, false, false, false, false, false, false);
54+
EffectsOverride(false, false, false, false, false, false, false, false, false, false);
5455
consistent::Bool = override.consistent,
5556
effect_free::Bool = override.effect_free,
5657
nothrow::Bool = override.nothrow,
@@ -59,7 +60,8 @@ function EffectsOverride(
5960
notaskstate::Bool = override.notaskstate,
6061
inaccessiblememonly::Bool = override.inaccessiblememonly,
6162
noub::Bool = override.noub,
62-
noub_if_noinbounds::Bool = override.noub_if_noinbounds)
63+
noub_if_noinbounds::Bool = override.noub_if_noinbounds,
64+
consistent_overlay::Bool = override.consistent_overlay)
6365
return EffectsOverride(
6466
consistent,
6567
effect_free,
@@ -69,9 +71,10 @@ function EffectsOverride(
6971
notaskstate,
7072
inaccessiblememonly,
7173
noub,
72-
noub_if_noinbounds)
74+
noub_if_noinbounds,
75+
consistent_overlay)
7376
end
74-
const NUM_EFFECTS_OVERRIDES = 9 # sync with julia.h
77+
const NUM_EFFECTS_OVERRIDES = 10 # sync with julia.h
7578

7679
# essential files and libraries
7780
include("essentials.jl")

0 commit comments

Comments
 (0)