diff options
author | John Högberg <[email protected]> | 2019-08-08 09:41:22 +0200 |
---|---|---|
committer | John Högberg <[email protected]> | 2019-08-08 09:41:22 +0200 |
commit | 1e01e521d89cdf3fb7a52be0d24fd36b0fe30f4a (patch) | |
tree | 335f9dd074df2cc1e4aabd4ad476446a0f77f382 /lib | |
parent | ac56a30fd3dfca2b9334ed338c162fbec3d38afd (diff) | |
parent | fd6904ffd83ae32a06f99547d3b3b7c77feac87b (diff) | |
download | otp-1e01e521d89cdf3fb7a52be0d24fd36b0fe30f4a.tar.gz otp-1e01e521d89cdf3fb7a52be0d24fd36b0fe30f4a.tar.bz2 otp-1e01e521d89cdf3fb7a52be0d24fd36b0fe30f4a.zip |
Merge branch 'john/compiler/remove-dead-code-beam_ssa_type'
* john/compiler/remove-dead-code-beam_ssa_type:
beam_ssa_type: Remove unreachable code
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compiler/src/beam_ssa_type.erl | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/lib/compiler/src/beam_ssa_type.erl b/lib/compiler/src/beam_ssa_type.erl index 364a87f67e..d93191c689 100644 --- a/lib/compiler/src/beam_ssa_type.erl +++ b/lib/compiler/src/beam_ssa_type.erl @@ -481,17 +481,12 @@ simplify(#b_set{op={bif,Op},args=Args}=I, Ts) -> eval_bif(beam_ssa:add_anno(float_op, AnnoArgs, I), Ts) end; simplify(#b_set{op=get_tuple_element,args=[Tuple,#b_literal{val=N}]}=I, Ts) -> - case normalized_type(Tuple, Ts) of - #t_tuple{size=Size,elements=Es} when Size > N -> - ElemType = beam_types:get_element_type(N + 1, Es), - case beam_types:get_singleton_value(ElemType) of - {ok, Val} -> #b_literal{val=Val}; - error -> I - end; - none -> - %% Will never be executed because of type conflict. - %% #b_literal{val=ignored}; - I + #t_tuple{size=Size,elements=Es} = normalized_type(Tuple, Ts), + true = Size > N, %Assertion. + ElemType = beam_types:get_element_type(N + 1, Es), + case beam_types:get_singleton_value(ElemType) of + {ok, Val} -> #b_literal{val=Val}; + error -> I end; simplify(#b_set{op=is_nonempty_list,args=[Src]}=I, Ts) -> case normalized_type(Src, Ts) of |