Skip to content

Commit 50cbe14

Browse files
committed
handle unassigned PhiNode values in find_ssavalue_uses
1 parent 78ee256 commit 50cbe14

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

base/compiler/utilities.jl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -415,15 +415,15 @@ function find_ssavalue_uses(body::Vector{Any}, nvals::Int)
415415
if isa(e, SSAValue)
416416
push!(uses[e.id], line)
417417
elseif isa(e, Expr)
418-
find_ssavalue_uses(e, uses, line)
418+
find_ssavalue_uses!(e, uses, line)
419419
elseif isa(e, PhiNode)
420-
find_ssavalue_uses(e, uses, line)
420+
find_ssavalue_uses!(e, uses, line)
421421
end
422422
end
423423
return uses
424424
end
425425

426-
function find_ssavalue_uses(e::Expr, uses::Vector{BitSet}, line::Int)
426+
function find_ssavalue_uses!(e::Expr, uses::Vector{BitSet}, line::Int)
427427
head = e.head
428428
is_meta_expr_head(head) && return
429429
skiparg = (head === :(=))
@@ -433,13 +433,16 @@ function find_ssavalue_uses(e::Expr, uses::Vector{BitSet}, line::Int)
433433
elseif isa(a, SSAValue)
434434
push!(uses[a.id], line)
435435
elseif isa(a, Expr)
436-
find_ssavalue_uses(a, uses, line)
436+
find_ssavalue_uses!(a, uses, line)
437437
end
438438
end
439439
end
440440

441-
function find_ssavalue_uses(e::PhiNode, uses::Vector{BitSet}, line::Int)
442-
for val in e.values
441+
function find_ssavalue_uses!(e::PhiNode, uses::Vector{BitSet}, line::Int)
442+
values = e.values
443+
for i = 1:length(values)
444+
isassigned(values) || continue
445+
val = values[i]
443446
if isa(val, SSAValue)
444447
push!(uses[val.id], line)
445448
end

0 commit comments

Comments
 (0)