Estimated hours taken: 30
Branches: main
Add a post-processing pass directly after mode checking that tries to transform
procedures to avoid intermediate partially instantiated data structures. The
Erlang backend in particular cannot handle partially instantiated data
structures.
compiler/delay_partial_inst.m:
New module.
compiler/check_hlds.m:
Import delay_partial_inst.m
compiler/modes.m:
Call the delay partial instantiations pass after mode checking succeeds
if it is enabled.
compiler/options.m:
Add a new internal option `--delay-partial-instantiations', disabled by
default.
compiler/handle_options.m:
Make Erlang target imply --delay-partial-instantiations.
compiler/notes/compiler_design.html:
Mention delay_partial_inst.m
tests/hard_coded/Mercury.options:
tests/hard_coded/Mmakefile:
tests/hard_coded/delay_partial_test.exp:
tests/hard_coded/delay_partial_test.m:
tests/hard_coded/delay_partial_test2.exp:
tests/hard_coded/delay_partial_test2.m:
Add test cases for --delay-partial-instantiations.
compiler/goal_util.m:
Fix a comment.