Skip to content

Commit 2ed12c5

Browse files
committed
wip
1 parent 2a5f1eb commit 2ed12c5

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/EscapeAnalysis.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,14 @@ function inter_ainfo(AInfo::AInfo, estate::EscapeState)
645645
if isa(x, LocalUse)
646646
UseEscapeBits |= encode_escape_bits(estate[SSAValue(x.idx)])
647647
elseif isa(x, InterUse)
648-
UseEscapeBits |= x.EscapeBits
648+
EscapeBits = x.EscapeBits
649+
for v in x.aliases
650+
info = estate[v]
651+
if info !== nothing
652+
EscapeBits |= encode_escape_bits(info)
653+
end
654+
end
655+
UseEscapeBits |= EscapeBits
649656
else
650657
x = x::Definition
651658
v = x.val
@@ -1117,6 +1124,8 @@ end
11171124
struct InterUse
11181125
idx::Int
11191126
EscapeBits::UInt8
1127+
aliases::IdSet{Any}
1128+
InterUse(idx::Int, EscapeBits::UInt8) = new(idx, EscapeBits, IdSet{Any}())
11201129
end
11211130

11221131
function add_alias_escapes!(astate::AnalysisState, @nospecialize(v), AInfo::AInfo)
@@ -1142,6 +1151,7 @@ function add_alias_escapes!(astate::AnalysisState, @nospecialize(v), AInfo::AInf
11421151
end
11431152
add_escape_change!(astate, v, interinfo)
11441153
end
1154+
push!(x.aliases, v)
11451155
else
11461156
@assert isa(x, Definition)
11471157
continue # ignore def

0 commit comments

Comments
 (0)