diff options
author | Björn Gustavsson <[email protected]> | 2016-12-09 12:17:26 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-12-09 14:31:59 +0100 |
commit | ebdf6e688c68b95e0c0b6f9b00b9f9c26f83525e (patch) | |
tree | fa3b38db53732a625ad88e66b9fe990581bd21f1 /lib/compiler/src/beam_utils.erl | |
parent | b29787dbcc53b4ab1b5bfedd1ad45708d0f99dc1 (diff) | |
download | otp-ebdf6e688c68b95e0c0b6f9b00b9f9c26f83525e.tar.gz otp-ebdf6e688c68b95e0c0b6f9b00b9f9c26f83525e.tar.bz2 otp-ebdf6e688c68b95e0c0b6f9b00b9f9c26f83525e.zip |
beam_type: Minimize number of regs in test_heap instructions
The beam_type may pass move and recalculates test_heap instructions.
The number of live registers are not always the lowest. Minimize the
number of registers by running beam_utils:live_opt/1 one more time.
Diffstat (limited to 'lib/compiler/src/beam_utils.erl')
-rw-r--r-- | lib/compiler/src/beam_utils.erl | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/compiler/src/beam_utils.erl b/lib/compiler/src/beam_utils.erl index 74e3d7e38a..ffeff9ea81 100644 --- a/lib/compiler/src/beam_utils.erl +++ b/lib/compiler/src/beam_utils.erl @@ -768,6 +768,8 @@ live_opt_block([{set,Ds,Ss,Op}=I0|Is], Regs0, D, Acc) -> _ -> live_opt_block(Is, Regs, D, [I|Acc]) end; +live_opt_block([{'%live',_,_}|Is], Regs, D, Acc) -> + live_opt_block(Is, Regs, D, Acc); live_opt_block([], Regs, _, Acc) -> {Acc,Regs}. live_join_labels([{f,L}|T], D, Regs0) when L =/= 0 -> |