From 7e3d8ea102711221fc2e0810e82e87c4ff391c32 Mon Sep 17 00:00:00 2001 From: Gaith Hallak Date: Fri, 17 Mar 2023 18:11:50 +0300 Subject: [PATCH] Revert "Separate the split at CALL_T and loop" This reverts commit 4ea823a7ca798c756b20cee32f928f41092c4959. --- src/aeso_fcode_to_fate.erl | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/aeso_fcode_to_fate.erl b/src/aeso_fcode_to_fate.erl index 3c349bc..768e5ba 100644 --- a/src/aeso_fcode_to_fate.erl +++ b/src/aeso_fcode_to_fate.erl @@ -1892,8 +1892,7 @@ tweak_returns(Code) -> Code. %% -- Split basic blocks at CALL instructions -- %% Calls can only return to a new basic block. Also splits at JUMPIF instructions. -%% Split at CALL_T and JUMP only when DBG_RETURN op is enabled - + split_calls({Ref, Code}) -> split_calls(Ref, Code, [], []). @@ -1906,11 +1905,9 @@ split_calls(Ref, [I | Code], Acc, Blocks) when element(1, I) == 'CALL'; element(1, I) == 'CREATE'; element(1, I) == 'CLONE'; element(1, I) == 'CLONE_G'; - element(1, I) == 'jumpif' -> - split_calls(make_ref(), Code, [], [{Ref, lists:reverse([I | Acc])} | Blocks]); -split_calls(Ref, [I | Code = ['DBG_RETURN' | _]], Acc, Blocks) - when element(1, I) == 'CALL_T'; - I == loop -> + element(1, I) == 'jumpif'; + element(1, I) == 'CALL_T' andalso Code =/= []; + I == loop andalso Code =/= [] -> split_calls(make_ref(), Code, [], [{Ref, lists:reverse([I | Acc])} | Blocks]); split_calls(Ref, [{'ABORT', _} = I | _Code], Acc, Blocks) -> lists:reverse([{Ref, lists:reverse([I | Acc])} | Blocks]);