diff options
author | John Högberg <[email protected]> | 2019-01-24 08:52:21 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-01-24 08:52:21 +0100 |
commit | a0104bc16c8c6f57c2725d07b811bf3bcb0a2455 (patch) | |
tree | 02ea5e7585b66c04c3d775b42f8ccfa9a68a6d8b /lib/compiler/test/receive_SUITE.erl | |
parent | 5a9adb7b9b600fc2a406e677a673047045a494d8 (diff) | |
parent | 294d66a295f6c2101fe3c2da630979ad4e736c08 (diff) | |
download | otp-a0104bc16c8c6f57c2725d07b811bf3bcb0a2455.tar.gz otp-a0104bc16c8c6f57c2725d07b811bf3bcb0a2455.tar.bz2 otp-a0104bc16c8c6f57c2725d07b811bf3bcb0a2455.zip |
Merge pull request #2100 from jhogberg/john/compiler/module-type-optimization
Apply type optimizations across local function calls
Diffstat (limited to 'lib/compiler/test/receive_SUITE.erl')
-rw-r--r-- | lib/compiler/test/receive_SUITE.erl | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/lib/compiler/test/receive_SUITE.erl b/lib/compiler/test/receive_SUITE.erl index 4219768d6f..12108445f0 100644 --- a/lib/compiler/test/receive_SUITE.erl +++ b/lib/compiler/test/receive_SUITE.erl @@ -25,7 +25,7 @@ init_per_group/2,end_per_group/2, init_per_testcase/2,end_per_testcase/2, export/1,recv/1,coverage/1,otp_7980/1,ref_opt/1, - wait/1,recv_in_try/1,double_recv/1]). + wait/1,recv_in_try/1,double_recv/1,receive_var_zero/1]). -include_lib("common_test/include/ct.hrl"). @@ -45,7 +45,7 @@ all() -> groups() -> [{p,test_lib:parallel(), [recv,coverage,otp_7980,ref_opt,export,wait, - recv_in_try,double_recv]}]. + recv_in_try,double_recv,receive_var_zero]}]. init_per_suite(Config) -> @@ -378,4 +378,27 @@ do_double_recv(_, Msg) -> error end. +%% Test 'after Z', when Z =:= 0 been propagated as an immediate by the type +%% optimization pass. +receive_var_zero(Config) when is_list(Config) -> + self() ! x, + self() ! y, + Z = zero(), + timeout = receive + z -> ok + after Z -> timeout + end, + timeout = receive + after Z -> timeout + end, + self() ! w, + receive + x -> ok; + Other -> + ct:fail({bad_message,Other}) + end. + +zero() -> 0. + + id(I) -> I. |