Skip to content

Commit

Permalink
handle unassigned PhiNode values in find_ssavalue_uses
Browse files Browse the repository at this point in the history
  • Loading branch information
aviatesk committed Feb 8, 2024
1 parent 78ee256 commit 50cbe14
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions base/compiler/utilities.jl
Original file line number Diff line number Diff line change
Expand Up @@ -415,15 +415,15 @@ function find_ssavalue_uses(body::Vector{Any}, nvals::Int)
if isa(e, SSAValue)
push!(uses[e.id], line)
elseif isa(e, Expr)
find_ssavalue_uses(e, uses, line)
find_ssavalue_uses!(e, uses, line)
elseif isa(e, PhiNode)
find_ssavalue_uses(e, uses, line)
find_ssavalue_uses!(e, uses, line)
end
end
return uses
end

function find_ssavalue_uses(e::Expr, uses::Vector{BitSet}, line::Int)
function find_ssavalue_uses!(e::Expr, uses::Vector{BitSet}, line::Int)
head = e.head
is_meta_expr_head(head) && return
skiparg = (head === :(=))
Expand All @@ -433,13 +433,16 @@ function find_ssavalue_uses(e::Expr, uses::Vector{BitSet}, line::Int)
elseif isa(a, SSAValue)
push!(uses[a.id], line)
elseif isa(a, Expr)
find_ssavalue_uses(a, uses, line)
find_ssavalue_uses!(a, uses, line)
end
end
end

function find_ssavalue_uses(e::PhiNode, uses::Vector{BitSet}, line::Int)
for val in e.values
function find_ssavalue_uses!(e::PhiNode, uses::Vector{BitSet}, line::Int)
values = e.values
for i = 1:length(values)
isassigned(values) || continue
val = values[i]
if isa(val, SSAValue)
push!(uses[val.id], line)
end
Expand Down

0 comments on commit 50cbe14

Please sign in to comment.