aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2018-01-08 07:48:04 +0100
committerGitHub <[email protected]>2018-01-08 07:48:04 +0100
commit654e7105fff75af903bf5bec5ac0808e328bb23f (patch)
tree48be65d7207d2cb20371472d9878e8afefdf0405 /lib
parentfbdb318f51038545c776464a2413b59045c2140f (diff)
parentcada4236a5c952cfcccf6dafe6f9ac25d171529e (diff)
downloadotp-654e7105fff75af903bf5bec5ac0808e328bb23f.tar.gz
otp-654e7105fff75af903bf5bec5ac0808e328bb23f.tar.bz2
otp-654e7105fff75af903bf5bec5ac0808e328bb23f.zip
Merge pull request #1662 from bjorng/bjorn/compiler/beam_utils
Reduce register shuffling in receive clauses
Diffstat (limited to 'lib')
-rw-r--r--lib/compiler/src/beam_utils.erl4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/compiler/src/beam_utils.erl b/lib/compiler/src/beam_utils.erl
index e61d6a43b4..60221578bd 100644
--- a/lib/compiler/src/beam_utils.erl
+++ b/lib/compiler/src/beam_utils.erl
@@ -593,6 +593,10 @@ check_liveness(R, [{allocate_zero,N,Live}|Is], St) ->
check_liveness(R, [{get_list,S,D1,D2}|Is], St) ->
I = {block,[{set,[D1,D2],[S],get_list}]},
check_liveness(R, [I|Is], St);
+check_liveness(R, [remove_message|Is], St) ->
+ check_liveness(R, Is, St);
+check_liveness({x,X}, [build_stacktrace|_], St) when X > 0 ->
+ {killed,St};
check_liveness(_R, Is, St) when is_list(Is) ->
%% Not implemented. Conservatively assume that the register is used.
{used,St}.