aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/beam_type.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2013-12-18 10:08:37 +0100
committerBjörn Gustavsson <[email protected]>2013-12-18 10:08:37 +0100
commit39de9391f76ed8f3503869684726d18d0fe723c3 (patch)
tree3475105fc750a023be6a879070ed13705c98bd40 /lib/compiler/src/beam_type.erl
parent165846b143c8275350972caaf4c1013cfe5db043 (diff)
parent20c38f0156b711032274cdea5a5049fc7ce8e81f (diff)
downloadotp-39de9391f76ed8f3503869684726d18d0fe723c3.tar.gz
otp-39de9391f76ed8f3503869684726d18d0fe723c3.tar.bz2
otp-39de9391f76ed8f3503869684726d18d0fe723c3.zip
Merge branch 'nox/asm-reentrant/OTP-11544'
* nox/asm-reentrant/OTP-11544: Test compilation of BEAM assembly with optimisations on Keep exit blocks in order when moving them in beam_jump Add missing recv_set, recv_mark and '%' to BEAM live annotation Collect all optimised allocate instructions in beam_block Properly collect allocate_zero instructions in beam_block Properly let floating-point instructions through in the BEAM compiler
Diffstat (limited to 'lib/compiler/src/beam_type.erl')
-rw-r--r--lib/compiler/src/beam_type.erl6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/compiler/src/beam_type.erl b/lib/compiler/src/beam_type.erl
index 3ec57a67da..58c0f765ae 100644
--- a/lib/compiler/src/beam_type.erl
+++ b/lib/compiler/src/beam_type.erl
@@ -142,6 +142,12 @@ simplify_float(Is0, Ts0) ->
throw:not_possible -> not_possible
end.
+simplify_float_1([{set,[],[],fclearerror}|Is], Ts, Rs, Acc) ->
+ simplify_float_1(Is, Ts, Rs, clearerror(Acc));
+simplify_float_1([{set,[],[],fcheckerror}|Is], Ts, Rs, Acc) ->
+ simplify_float_1(Is, Ts, Rs, checkerror(Acc));
+simplify_float_1([{set,[{fr,_}],_,_}=I|Is], Ts, Rs, Acc) ->
+ simplify_float_1(Is, Ts, Rs, [I|Acc]);
simplify_float_1([{set,[D0],[A0],{alloc,_,{gc_bif,'-',{f,0}}}}=I|Is]=Is0,
Ts0, Rs0, Acc0) ->
case tdb_find(A0, Ts0) of