diff options
author | John Högberg <john@erlang.org> | 2019-10-21 12:52:57 +0200 |
---|---|---|
committer | John Högberg <john@erlang.org> | 2019-10-23 15:24:48 +0200 |
commit | 6631e5d98771c390dbc8d6816a81cb29dea5a511 (patch) | |
tree | 3908a0487f92d4028edd2588d70d54355f3a7e9a /lib/compiler/src/beam_kernel_to_ssa.erl | |
parent | f9ffc9b7da4954b63a174bb48d985c2844363f17 (diff) | |
download | erlang-6631e5d98771c390dbc8d6816a81cb29dea5a511.tar.gz |
compiler: Explicitly resume known match contexts
This allows us to remove the instruction altogether on 64-bit
platforms, where we know we won't need to update a "base offset"
in the match context.
Diffstat (limited to 'lib/compiler/src/beam_kernel_to_ssa.erl')
-rw-r--r-- | lib/compiler/src/beam_kernel_to_ssa.erl | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/compiler/src/beam_kernel_to_ssa.erl b/lib/compiler/src/beam_kernel_to_ssa.erl index 38f3175690..33479e4cc6 100644 --- a/lib/compiler/src/beam_kernel_to_ssa.erl +++ b/lib/compiler/src/beam_kernel_to_ssa.erl @@ -278,7 +278,8 @@ select_binary(#k_val_clause{val=#k_binary{segs=#k_var{name=Ctx0}},body=B}, {Bis0,St2} = match_cg(B, Vf, St1), {TestIs,St} = make_succeeded(Ctx, {guard, Tf}, St2), Bis1 = [#b_set{op=bs_start_match,dst=Ctx, - args=[ssa_arg(Src, St)]}] ++ TestIs ++ Bis0, + args=[#b_literal{val=new}, + ssa_arg(Src, St)]}] ++ TestIs ++ Bis0, Bis = finish_bs_matching(Bis1), {Bis,St}. |