aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_db_util.c
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2015-01-13 05:37:26 +0100
committerBjörn Gustavsson <[email protected]>2015-01-14 14:58:49 +0100
commit971fc7b39934e9d3e0927d95c45bea6ad7e90566 (patch)
tree743d7dcc652aada0ed001c56e12e0848a0eb1218 /erts/emulator/beam/erl_db_util.c
parentbd3ba08000a258818e52410c73fcb195db88356f (diff)
downloadotp-971fc7b39934e9d3e0927d95c45bea6ad7e90566.tar.gz
otp-971fc7b39934e9d3e0927d95c45bea6ad7e90566.tar.bz2
otp-971fc7b39934e9d3e0927d95c45bea6ad7e90566.zip
beam_bool: Correct live calculation for GC BIFs
When optimizing boolean expressions, it is not always possible to find a number of live registers for a GC BIF that both preserves all source registers that will be tested and at the same time does not include registers that are not initialized. As currently implemented, we have incomplete information about the register calculated from the free variables. Some registers are marked as "reserved". Reserved registers means that we don't know anything about them; they may or may not be initialized. As a conservative correction (suitable for a maintenance release), we will abort the optimization if we find any reserved registers when calculating the number of live registers. We will not attempt to improve the information about the registers in this commit. By examining the coverage when running the existing compiler test suite we find that the optimization is aborted 15 times (before adding any new test cases). To put that in perspective, the optimization is successfully applied 4927 times, and aborted for other reasons 547 times. Reported-by: Ulf Norell Reported-by: Anthony Ramine
Diffstat (limited to 'erts/emulator/beam/erl_db_util.c')
0 files changed, 0 insertions, 0 deletions