summaryrefslogtreecommitdiff
path: root/lib/compiler/src/beam_kernel_to_ssa.erl
diff options
context:
space:
mode:
authorJohn Högberg <john@erlang.org>2019-10-21 12:52:57 +0200
committerJohn Högberg <john@erlang.org>2019-10-23 15:24:48 +0200
commit6631e5d98771c390dbc8d6816a81cb29dea5a511 (patch)
tree3908a0487f92d4028edd2588d70d54355f3a7e9a /lib/compiler/src/beam_kernel_to_ssa.erl
parentf9ffc9b7da4954b63a174bb48d985c2844363f17 (diff)
downloaderlang-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.erl3
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}.