Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
2006-erl_types-Don-t-mix-with-and-operators.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2006-erl_types-Don-t-mix-with-and-operators.patch of Package erlang
From 6af4bbfd7521014094740599a44db903727f3672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org> Date: Tue, 14 Sep 2021 06:26:47 +0200 Subject: [PATCH 06/20] erl_types: Don't mix =:= with < and > operators The compiler can optimize away redundant tests if the `<` and `>` operators are mixed with the `==` operator. Also fix the typo in `Tag2 =:= Tag2`. --- lib/dialyzer/src/erl_types.erl | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/dialyzer/src/erl_types.erl b/lib/dialyzer/src/erl_types.erl index 98c37e4eb1..fe918027d8 100644 --- a/lib/dialyzer/src/erl_types.erl +++ b/lib/dialyzer/src/erl_types.erl @@ -746,7 +746,7 @@ decorate_tuples_in_sets([?tuple(Elements, Arity, Tag1) = T1|Tuples] = L1, if Tag1 < Tag2 -> decorate_tuples_in_sets(Tuples, L2, Opaques, [T1|Acc]); Tag1 > Tag2 -> decorate_tuples_in_sets(L1, Ts, Opaques, Acc); - Tag1 =:= Tag2 -> + Tag1 == Tag2 -> NewElements = list_decorate(Elements, Es, Opaques), NewAcc = [?tuple(NewElements, Arity, Tag1)|Acc], decorate_tuples_in_sets(Tuples, Ts, Opaques, NewAcc) @@ -2684,9 +2684,9 @@ t_sup(?tuple(?any, ?any, ?any) = T, ?tuple_set(_)) -> T; t_sup(?tuple_set(_), ?tuple(?any, ?any, ?any) = T) -> T; t_sup(?tuple(Elements1, Arity, Tag1) = T1, ?tuple(Elements2, Arity, Tag2) = T2) -> - if Tag1 =:= Tag2 -> t_tuple(t_sup_lists(Elements1, Elements2)); - Tag1 =:= ?any -> t_tuple(t_sup_lists(Elements1, Elements2)); - Tag2 =:= ?any -> t_tuple(t_sup_lists(Elements1, Elements2)); + if Tag1 == Tag2 -> t_tuple(t_sup_lists(Elements1, Elements2)); + Tag1 == ?any -> t_tuple(t_sup_lists(Elements1, Elements2)); + Tag2 == ?any -> t_tuple(t_sup_lists(Elements1, Elements2)); Tag1 < Tag2 -> ?tuple_set([{Arity, [T1, T2]}]); Tag1 > Tag2 -> ?tuple_set([{Arity, [T2, T1]}]) end; @@ -2792,9 +2792,10 @@ sup_tuples_in_set([?tuple(Elements1, Arity, Tag1) = T1|Left1] = L1, if Tag1 < Tag2 -> sup_tuples_in_set(Left1, L2, [T1|Acc]); Tag1 > Tag2 -> sup_tuples_in_set(L1, Left2, [T2|Acc]); - Tag2 =:= Tag2 -> NewElements = t_sup_lists(Elements1, Elements2), - NewAcc = [?tuple(NewElements, Arity, Tag1)|Acc], - sup_tuples_in_set(Left1, Left2, NewAcc) + Tag1 == Tag2 -> + NewElements = t_sup_lists(Elements1, Elements2), + NewAcc = [?tuple(NewElements, Arity, Tag1)|Acc], + sup_tuples_in_set(Left1, Left2, NewAcc) end; sup_tuples_in_set([], L2, Acc) -> lists:reverse(Acc, L2); sup_tuples_in_set(L1, [], Acc) -> lists:reverse(Acc, L1). -- 2.31.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor