Skip to content

Commit 9d0176d

Browse files
committed
prewalk in cse_block
1 parent ae5c69a commit 9d0176d

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/code.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,10 @@ function cse_block!(assignments, counter, names, name, state, x)
669669
counter[] += 1
670670
return sym
671671
end
672+
elseif istree(x)
673+
args = map(a->cse_block!(assignments, counter, names, name, state,a), unsorted_arguments(x))
674+
return similarterm(x, operation(x), args, symtype(x),
675+
metadata=metadata(x))
672676
else
673677
return x
674678
end
@@ -678,10 +682,7 @@ function cse_block(state, t, name=Symbol("var-", hash(t)))
678682
assignments = Assignment[]
679683
counter = Ref{Int}(1)
680684
names = Dict{Any, Sym}()
681-
t′ = Rewriters.Postwalk(x->cse_block!(assignments, counter, names, name, state, x),
682-
similarterm = (t, f, args) -> similarterm(t, f, args, symtype(t),
683-
metadata=metadata(t)))(t)
684-
Let(assignments, t′)
685+
Let(assignments, cse_block!(assignments, counter, names, name, state, t))
685686
end
686687

687688
end

0 commit comments

Comments
 (0)