diff options
author | Björn-Egil Dahlberg <egil@erlang.org> | 2013-09-20 16:28:30 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <egil@erlang.org> | 2014-01-28 15:56:25 +0100 |
commit | 2a943f14a44903eb8e67549978de5dbf7275ad57 (patch) | |
tree | 1cea549e7b8ac08d4e15bd090256d7b7b85311ba /lib | |
parent | fa49c8ecac4996b47b17f9025240e202eb273389 (diff) | |
download | otp-2a943f14a44903eb8e67549978de5dbf7275ad57.tar.gz otp-2a943f14a44903eb8e67549978de5dbf7275ad57.tar.bz2 otp-2a943f14a44903eb8e67549978de5dbf7275ad57.zip |
compiler: Fix no basic blocks for maps
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compiler/src/v3_codegen.erl | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/compiler/src/v3_codegen.erl b/lib/compiler/src/v3_codegen.erl index bd5ced39e5..667f10a7f5 100644 --- a/lib/compiler/src/v3_codegen.erl +++ b/lib/compiler/src/v3_codegen.erl @@ -455,8 +455,11 @@ basic_block([Le|Les], Acc) -> end; no_block -> {reverse(Acc, [Le]),Les} end. + +%% sets that may garbage collect are not allowed in basic blocks. collect_block({set,_,{binary,_}}) -> no_block; +collect_block({set,_,{map,_,_}}) -> no_block; collect_block({set,_,_}) -> include; collect_block({call,{var,_}=Var,As,_Rs}) -> {block_end,As++[Var]}; collect_block({call,Func,As,_Rs}) -> {block_end,As++func_vars(Func)}; |