diff options
author | Björn-Egil Dahlberg <[email protected]> | 2014-03-07 15:10:12 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2014-03-07 15:10:12 +0100 |
commit | 870737ab657433c5e8751255fe3c4d298202d142 (patch) | |
tree | b0dd23b0c900c6b3b47c364cd721ad7bfac1cf2e /lib/compiler | |
parent | 5017c6e4de41a95cd489aa0b3ddda0eb8d821623 (diff) | |
parent | 35f6804946b22ef9a813c27780d4760c157a3c3d (diff) | |
download | otp-870737ab657433c5e8751255fe3c4d298202d142.tar.gz otp-870737ab657433c5e8751255fe3c4d298202d142.tar.bz2 otp-870737ab657433c5e8751255fe3c4d298202d142.zip |
Merge branch 'nox/maps-beam_jump-put_map'
* nox/maps-beam_jump-put_map:
Properly collect labels in put_map instructions in beam_jump
Diffstat (limited to 'lib/compiler')
-rw-r--r-- | lib/compiler/src/beam_jump.erl | 1 | ||||
-rw-r--r-- | lib/compiler/test/map_SUITE.erl | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/compiler/src/beam_jump.erl b/lib/compiler/src/beam_jump.erl index 100acaede3..b952139f2c 100644 --- a/lib/compiler/src/beam_jump.erl +++ b/lib/compiler/src/beam_jump.erl @@ -446,6 +446,7 @@ is_label_used_in_2({set,_,_,Info}, Lbl) -> case Info of {bif,_,{f,F}} -> F =:= Lbl; {alloc,_,{gc_bif,_,{f,F}}} -> F =:= Lbl; + {alloc,_,{put_map,_,{f,F}}} -> F =:= Lbl; {'catch',{f,F}} -> F =:= Lbl; {alloc,_,_} -> false; {put_tuple,_} -> false; diff --git a/lib/compiler/test/map_SUITE.erl b/lib/compiler/test/map_SUITE.erl index 4fc4768802..b7e27afef1 100644 --- a/lib/compiler/test/map_SUITE.erl +++ b/lib/compiler/test/map_SUITE.erl @@ -292,6 +292,7 @@ get_val(#{ val := V }) -> {some_val, V}. t_guard_bifs(Config) when is_list(Config) -> true = map_guard_empty(), + true = map_guard_empty_2(), true = map_guard_head(#{a=>1}), false = map_guard_head([]), true = map_guard_body(#{a=>1}), @@ -304,6 +305,8 @@ t_guard_bifs(Config) when is_list(Config) -> map_guard_empty() when is_map(#{}); false -> true. +map_guard_empty_2() when true; #{} andalso false -> true. + map_guard_head(M) when is_map(M) -> true; map_guard_head(_) -> false. |