diff options
author | Björn Gustavsson <[email protected]> | 2018-03-01 06:42:57 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2018-08-17 09:50:59 +0200 |
commit | 3fc40fd57fa01b097b4c363860c4d4762e13db8b (patch) | |
tree | 8988da71d06fb0104b82aaee8b9ca645756e715d /prebuild.delete | |
parent | 6065d9f8540cd4621cbace0cd4d485956a720fd6 (diff) | |
download | otp-3fc40fd57fa01b097b4c363860c4d4762e13db8b.tar.gz otp-3fc40fd57fa01b097b4c363860c4d4762e13db8b.tar.bz2 otp-3fc40fd57fa01b097b4c363860c4d4762e13db8b.zip |
Don't run unsafe compiler passes
As a preparation for replacing v3_codegen with a new code generator,
remove unsafe optimization passes. Especially the older compiler
passes have implicit assumptions about how the code is generated.
Remove the optimizations in beam_block (keep the code that creates
blocks) because they are unsafe. beam_block also calls
beam_utils:live_opt/1, which is unsafe.
Remove beam_type because it calls beam_utils:live_opt/1, and also
because it recalculates the number of heaps words and number of live
registers in allocation instructions, thus potentially hiding bugs in
other passes.
Remove beam_receive because it is unsafe.
Remove beam_record because it is the only remaining user
of beam_utils:anno_defs/1.
Remove beam_reorder because it makes much more sense to run it
as an early SSA-based optimization pass.
Remove the now unused functions in beam_utils:
anno_def/1
delete_annos/1
is_killed_block/2
live_opt/1
usage/3
Note that the following test cases will fail because of the
removed optimizations:
compile_SUITE:optimized_guards/1
compile_SUITE:bc_options/1
receive_SUITE:ref_opt/1
Diffstat (limited to 'prebuild.delete')
0 files changed, 0 insertions, 0 deletions