From d3f5d7f5c5afd771fb1941b54f48749b318955dc Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Mon, 18 Nov 2019 12:09:10 +0100 Subject: [PATCH] Fix lost dependency when inlining switch target --- src/aeso_fcode_to_fate.erl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/aeso_fcode_to_fate.erl b/src/aeso_fcode_to_fate.erl index 6eb0de9..ec16353 100644 --- a/src/aeso_fcode_to_fate.erl +++ b/src/aeso_fcode_to_fate.erl @@ -1168,7 +1168,13 @@ pick_branch(_Type, _V, _Alts) -> false. %% STORE R A, SWITCH R --> SWITCH A -r_inline_switch_target(Store = {i, _, {'STORE', R, A}}, [{switch, R, Type, Alts, Def} | Code]) -> +r_inline_switch_target({i, Ann, {'STORE', R, A}}, [{switch, R, Type, Alts, Def} | Code]) -> + Ann1 = + case is_reg(A) of + true -> Ann#{ live_out := ordsets:add_element(A, maps:get(live_out, Ann)) }; + false -> Ann + end, + Store = {i, Ann1, {'STORE', R, A}}, Switch = {switch, A, Type, Alts, Def}, case R of A -> false;