diff options
author | Björn Gustavsson <[email protected]> | 2018-02-28 04:42:19 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2018-03-02 13:04:17 +0100 |
commit | 8f057e62df58eac610d9b958118c4a536ca675da (patch) | |
tree | 5cb163001d49d84fcc4b1da2ca16c1ee245913df /lib/compiler/test | |
parent | cebf6f0c68d231af8dcdb6bdf149ae9d870e9e6d (diff) | |
download | otp-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/test')
0 files changed, 0 insertions, 0 deletions