diff options
author | Björn Gustavsson <[email protected]> | 2016-04-08 20:38:35 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-04-14 12:00:22 +0200 |
commit | f2d068bb92b49360e04c7150a643f1f9026c288d (patch) | |
tree | bc0e25738aad76b4afc619fa130520a156004878 | |
parent | 93c476e258a20899cf6c20fb75e3ebe6f37d5d80 (diff) | |
download | otp-f2d068bb92b49360e04c7150a643f1f9026c288d.tar.gz otp-f2d068bb92b49360e04c7150a643f1f9026c288d.tar.bz2 otp-f2d068bb92b49360e04c7150a643f1f9026c288d.zip |
Use the register map in %live in beam_utils:is_killed_block/2
In 1f0ae04d374, a complete register map was introduced in the %live
instructions thar are added by beam_utils:live_opt/1.
Use the register map to improve beam_utils:is_killed_block/2.
-rw-r--r-- | lib/compiler/src/beam_utils.erl | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/compiler/src/beam_utils.erl b/lib/compiler/src/beam_utils.erl index eed4caf93f..fdd0020261 100644 --- a/lib/compiler/src/beam_utils.erl +++ b/lib/compiler/src/beam_utils.erl @@ -581,9 +581,9 @@ check_killed_block(R, [{set,Ds,Ss,_Op}|Is]) -> false -> check_killed_block(R, Is) end end; -check_killed_block(R, [{'%live',Live,_}|Is]) -> +check_killed_block(R, [{'%live',_,Regs}|Is]) -> case R of - {x,X} when X >= Live -> killed; + {x,X} when (Regs bsr X) band 1 =:= 0 -> killed; _ -> check_killed_block(R, Is) end; check_killed_block(_, []) -> transparent. |