diff options
author | Björn Gustavsson <bjorn@erlang.org> | 2019-09-14 16:39:36 +0200 |
---|---|---|
committer | Björn Gustavsson <bjorn@erlang.org> | 2019-09-20 10:06:39 +0200 |
commit | 39096dc64590ea39d13cc9bcb52bc5c7240a3c69 (patch) | |
tree | adece52919fd33991fd3cdd51be5909498b0bf56 | |
parent | 47082ab42ed8abec6ebcf621afe6a92881dcd1f5 (diff) | |
download | erlang-39096dc64590ea39d13cc9bcb52bc5c7240a3c69.tar.gz |
Eliminate the #k_guard_match{} and #k_guard_break{} records
-rw-r--r-- | lib/compiler/src/beam_kernel_to_ssa.erl | 6 | ||||
-rw-r--r-- | lib/compiler/src/v3_kernel.erl | 16 | ||||
-rw-r--r-- | lib/compiler/src/v3_kernel.hrl | 2 | ||||
-rw-r--r-- | lib/compiler/src/v3_kernel_pp.erl | 15 |
4 files changed, 3 insertions, 36 deletions
diff --git a/lib/compiler/src/beam_kernel_to_ssa.erl b/lib/compiler/src/beam_kernel_to_ssa.erl index cc4a74373a..3753a8925e 100644 --- a/lib/compiler/src/beam_kernel_to_ssa.erl +++ b/lib/compiler/src/beam_kernel_to_ssa.erl @@ -106,8 +106,6 @@ make_failure(Reason, St0) -> cg(#k_match{body=M,ret=Rs}, St) -> do_match_cg(M, Rs, St); -cg(#k_guard_match{body=M,ret=Rs}, St) -> - do_match_cg(M, Rs, St); cg(#k_seq{arg=Arg,body=Body}, St0) -> {ArgIs,St1} = cg(Arg, St0), {BodyIs,St} = cg(Body, St1), @@ -139,9 +137,7 @@ cg(#k_return{args=[Ret0]}, St) -> {[#b_ret{arg=Ret}],St}; cg(#k_break{args=Bs}, #cg{break=Br}=St) -> Args = ssa_args(Bs, St), - {[#cg_break{args=Args,phi=Br}],St}; -cg(#k_guard_break{args=Bs}, St) -> - cg(#k_break{args=Bs}, St). + {[#cg_break{args=Args,phi=Br}],St}. %% match_cg(Matc, [Ret], State) -> {[Ainstr],State}. %% Generate code for a match. diff --git a/lib/compiler/src/v3_kernel.erl b/lib/compiler/src/v3_kernel.erl index 96cc51aee1..42e36c188c 100644 --- a/lib/compiler/src/v3_kernel.erl +++ b/lib/compiler/src/v3_kernel.erl @@ -1869,12 +1869,7 @@ ubody(#ivalues{anno=A,args=As}, return, St) -> {#k_return{anno=A,args=As},Au,St}; ubody(#ivalues{anno=A,args=As}, {break,_Vbs}, St) -> Au = lit_list_vars(As), - case is_in_guard(St) of - true -> - {#k_guard_break{anno=A,args=As},Au,St}; - false -> - {#k_break{anno=A,args=As},Au,St} - end; + {#k_break{anno=A,args=As},Au,St}; ubody(E, return, St0) -> %% Enterable expressions need no trailing return. case is_enter_expr(E) of @@ -1992,14 +1987,7 @@ uexpr(#k_bif{anno=A,op=Op,args=As}=Bif, {break,Rs}, St0) -> uexpr(#k_match{anno=A,vars=Vs,body=B0}, Br, St0) -> Rs = break_rets(Br), {B1,Bu,St1} = umatch(B0, Br, St0), - case is_in_guard(St1) of - true -> - {#k_guard_match{anno=A, - vars=Vs,body=B1,ret=Rs},Bu,St1}; - false -> - {#k_match{anno=A, - vars=Vs,body=B1,ret=Rs},Bu,St1} - end; + {#k_match{anno=A,vars=Vs,body=B1,ret=Rs},Bu,St1}; uexpr(#k_receive{anno=A,var=V,body=B0,timeout=T,action=A0}, Br, St0) -> Rs = break_rets(Br), Tu = lit_vars(T), %Timeout is atomic diff --git a/lib/compiler/src/v3_kernel.hrl b/lib/compiler/src/v3_kernel.hrl index 0a171649be..b68cd61b19 100644 --- a/lib/compiler/src/v3_kernel.hrl +++ b/lib/compiler/src/v3_kernel.hrl @@ -64,7 +64,6 @@ -record(k_protected, {anno=[],arg,ret=[],inner}). -record(k_catch, {anno=[],body,ret=[]}). --record(k_guard_match, {anno=[],vars,body,ret=[]}). -record(k_match, {anno=[],vars,body,ret=[]}). -record(k_alt, {anno=[],first,then}). -record(k_select, {anno=[],var,types}). @@ -74,7 +73,6 @@ -record(k_guard_clause, {anno=[],guard,body}). -record(k_break, {anno=[],args=[]}). --record(k_guard_break, {anno=[],args=[]}). -record(k_return, {anno=[],args=[]}). %%k_get_anno(Thing) -> element(2, Thing). diff --git a/lib/compiler/src/v3_kernel_pp.erl b/lib/compiler/src/v3_kernel_pp.erl index 240d17aae2..d99502f571 100644 --- a/lib/compiler/src/v3_kernel_pp.erl +++ b/lib/compiler/src/v3_kernel_pp.erl @@ -166,16 +166,6 @@ format_1(#k_match{vars=Vs,body=Bs,ret=Rs}, Ctxt) -> "end", format_ret(Rs, Ctxt1) ]; -format_1(#k_guard_match{vars=Vs,body=Bs,ret=Rs}, Ctxt) -> - Ctxt1 = ctxt_bump_indent(Ctxt, Ctxt#ctxt.item_indent), - ["guard_match ", - format_hseq(Vs, ",", ctxt_bump_indent(Ctxt, 6), fun format/2), - nl_indent(Ctxt1), - format(Bs, Ctxt1), - nl_indent(Ctxt), - "end", - format_ret(Rs, Ctxt1) - ]; format_1(#k_alt{first=O,then=T}, Ctxt) -> Ctxt1 = ctxt_bump_indent(Ctxt, Ctxt#ctxt.item_indent), ["alt", @@ -319,11 +309,6 @@ format_1(#k_break{args=As}, Ctxt) -> format_hseq(As, ",", ctxt_bump_indent(Ctxt, 1), fun format/2), ">" ]; -format_1(#k_guard_break{args=As}, Ctxt) -> - [":<", - format_hseq(As, ",", ctxt_bump_indent(Ctxt, 1), fun format/2), - ">:" - ]; format_1(#k_return{args=As}, Ctxt) -> ["<<", format_hseq(As, ",", ctxt_bump_indent(Ctxt, 1), fun format/2), |