Skip to content

Commit 0ab6e2f

Browse files
authored
[compiler] Fix effects of supertype abstract interpretation (#48566)
This `abstract_call_known` recursion inserted `EFFECTS_TOTAL` which is incorrect because `<:` and `>:` can throw if the arguments are not types.
1 parent 3fe69f4 commit 0ab6e2f

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

base/compiler/abstractinterpretation.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2034,7 +2034,7 @@ function abstract_call_known(interp::AbstractInterpreter, @nospecialize(f),
20342034
fargs = nothing
20352035
end
20362036
argtypes = Any[typeof(<:), argtypes[3], argtypes[2]]
2037-
return CallMeta(abstract_call_known(interp, <:, ArgInfo(fargs, argtypes), si, sv, max_methods).rt, EFFECTS_TOTAL, NoCallInfo())
2037+
return abstract_call_known(interp, <:, ArgInfo(fargs, argtypes), si, sv, max_methods)
20382038
elseif la == 2 &&
20392039
(a2 = argtypes[2]; isa(a2, Const)) && (svecval = a2.val; isa(svecval, SimpleVector)) &&
20402040
istopfunction(f, :length)

0 commit comments

Comments
 (0)