aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/beam_utils.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2018-02-28 04:42:19 +0100
committerBjörn Gustavsson <[email protected]>2018-03-02 13:04:17 +0100
commit8f057e62df58eac610d9b958118c4a536ca675da (patch)
tree5cb163001d49d84fcc4b1da2ca16c1ee245913df /lib/compiler/src/beam_utils.erl
parentcebf6f0c68d231af8dcdb6bdf149ae9d870e9e6d (diff)
downloadotp-8f057e62df58eac610d9b958118c4a536ca675da.tar.gz
otp-8f057e62df58eac610d9b958118c4a536ca675da.tar.bz2
otp-8f057e62df58eac610d9b958118c4a536ca675da.zip
beam_type: Make sure to kill all dependencies when killing a register
Make sure to kill all dependencies when a register is killed. For example, in the following code, when the type information for {x,0} is killed in the last instruction, there will still be type information for {x,1} referring to {x,0}: {get_tuple_element,{x,0},0,{x,1}}. {test,is_eq_exact,{f,5},[{x,1},{atom,tag}]}. {get_tuple_element,{x,0},1,{x,2}}. {get_tuple_element,{x,0},2,{x,0}}. This does not seems to have caused any problems in the past, but it may cause problems in the future with a register allocator that reuses register more aggressively.
Diffstat (limited to 'lib/compiler/src/beam_utils.erl')
0 files changed, 0 insertions, 0 deletions