mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 18:03:36 +00:00
It used to be a special option that just set procs_per_c_function
to the special value of zero, but this behavior is inconsistent with
optimization_options taking the max of the old and new values of
integer options. This meant that --procs-per-c-function=5 -O6
would not put all procedures into one C function.
tools/make_optimization_options_db:
tools/make_optimization_options_end:
compiler/optimization_options.m:
As above: make --everything-in-one-c-function a bool option,
named use_just_one_c_func for brevity.
compiler/options.m:
Move the code handling --everything-in-one-c-function next to the
other optimization options.
compiler/mercury_compile_llds_back_end.m:
When deciding which procedures should be put into which C functions,
use the logic: if use_just_one_c_func, then put all procs into the
same C function, otherwise, put them into one or more C functions
with up to procs_per_c_function procedures per function.
This is now the *only* place in the compiler that looks at
procs_per_c_function; everywhere else looks at use_just_one_c_func.
compiler/code_util.m:
Replace a maybe pair type that used to store the value of
procs_per_c_function with a bespoke type storing use_just_one_c_func,
which documents its meaning.
compiler/code_info.m:
Replace a bool type with a bespoke type, again documenting
its meaning.
compiler/call_gen.m:
compiler/closure_gen.m:
compiler/middle_rec.m:
compiler/pragma_c_gen.m:
compiler/proc_gen.m:
compiler/rtti_out.m:
Conform to the changes above.
compiler/llds.m:
Fix blank lines.
125 lines
8.5 KiB
Plaintext
125 lines
8.5 KiB
Plaintext
bool y allow_inlining
|
|
bool n inline_simple
|
|
bool y inline_builtins
|
|
bool n inline_single_use
|
|
int 0 inline_call_cost
|
|
int 0 inline_compound_threshold
|
|
int 5 inline_simple_threshold
|
|
int 100 inline_vars_threshold
|
|
int 5 intermod_inline_simple_threshold
|
|
bool n inline_linear_tail_rec_sccs
|
|
int 0 inline_linear_tail_rec_sccs_max_extra
|
|
int 5 from_ground_term_threshold
|
|
bool y enable_const_struct
|
|
bool n common_struct opt_common_structs
|
|
bool n constraint_propagation prop_constraints
|
|
bool n local_constraint_propagation prop_local_constraints
|
|
bool n optimize_duplicate_calls opt_dup_calls
|
|
bool n constant_propagation prop_constants
|
|
bool n excess_assign elim_excess_assigns
|
|
bool n test_after_switch opt_test_after_switch
|
|
bool y optimize_format_calls opt_format_calls
|
|
bool n loop_invariants opt_loop_invariants
|
|
bool n optimize_saved_vars_const opt_saved_vars_const
|
|
bool n optimize_saved_vars_cell opt_svcell
|
|
bool y optimize_saved_vars_cell_loop opt_svcell_loop
|
|
bool y optimize_saved_vars_cell_full_path opt_svcell_full_path
|
|
bool y optimize_saved_vars_cell_on_stack opt_svcell_on_stack
|
|
bool y optimize_saved_vars_cell_candidate_headvars opt_svcell_candidate_headvars
|
|
int 3 optimize_saved_vars_cell_cv_store_cost opt_svcell_cv_store_cost
|
|
int 1 optimize_saved_vars_cell_cv_load_cost opt_svcell_cv_load_cost
|
|
int 1 optimize_saved_vars_cell_fv_store_cost opt_svcell_fv_store_cost
|
|
int 1 optimize_saved_vars_cell_fv_load_cost opt_svcell_fv_load_cost
|
|
int 100 optimize_saved_vars_cell_op_ratio opt_svcell_op_ratio
|
|
int 100 optimize_saved_vars_cell_node_ratio opt_svcell_node_ratio
|
|
int 100 optimize_saved_vars_cell_all_path_node_ratio opt_svcell_all_path_node_ratio
|
|
bool n optimize_saved_vars_cell_include_all_candidates opt_svcell_all_candidates
|
|
bool n delay_construct delay_constructs
|
|
bool n follow_code opt_follow_code
|
|
bool n optimize_unused_args opt_unused_args
|
|
bool n intermod_unused_args opt_unused_args_intermod
|
|
bool n optimize_higher_order opt_higher_order
|
|
int 20 higher_order_size_limit
|
|
int 10 higher_order_arg_limit
|
|
bool n unneeded_code opt_unneeded_code
|
|
int 10 unneeded_code_copy_limit opt_unneeded_code_copy_limit
|
|
bool n type_specialization spec_types
|
|
bool n user_guided_type_specialization spec_types_user_guided
|
|
bool n introduce_accumulators
|
|
bool n optimize_constructor_last_call_accumulator opt_lcmc_accumulator
|
|
bool n optimize_constructor_last_call_null opt_lcmc_null
|
|
bool n optimize_constructor_last_call opt_lcmc
|
|
bool n optimize_dead_procs opt_dead_procs
|
|
bool n deforestation deforest
|
|
int 4 deforestation_depth_limit
|
|
int 1000 deforestation_cost_factor
|
|
int 200 deforestation_vars_threshold
|
|
int 15 deforestation_size_threshold
|
|
bool n untuple
|
|
bool n tuple
|
|
string - tuple_trace_counts_file
|
|
int 100 tuple_costs_ratio
|
|
int 4 tuple_min_args
|
|
bool n inline_par_builtins
|
|
bool n always_specialize_in_dep_par_conjs spec_in_all_dep_par_conjs
|
|
bool y allow_some_paths_only_waits
|
|
bool n region_analysis analyse_regions
|
|
bool n smart_indexing use_smart_indexing
|
|
bool y smart_atomic_indexing use_smart_indexing_atomic
|
|
bool y smart_string_indexing use_smart_indexing_string
|
|
bool y smart_tag_indexing use_smart_indexing_tag
|
|
bool y smart_float_indexing use_smart_indexing_float
|
|
int 25 dense_switch_req_density
|
|
int 25 lookup_switch_req_density
|
|
int 4 dense_switch_size
|
|
int 4 lookup_switch_size
|
|
int 16 string_trie_switch_size
|
|
int 8 string_hash_switch_size
|
|
int 4 string_binary_switch_size
|
|
int 3 tag_switch_size
|
|
int 3 try_switch_size
|
|
int 4 binary_switch_size
|
|
bool n switch_single_rec_base_first put_base_first_single_rec
|
|
bool y switch_multi_rec_base_first put_base_first_multi_rec
|
|
bool n static_ground_cells use_static_ground_cells
|
|
bool n static_ground_floats use_static_ground_floats
|
|
bool n static_ground_int64s use_static_ground_int64s
|
|
bool n static_code_addresses use_static_code_addresses
|
|
bool n use_atomic_cells
|
|
bool n middle_rec opt_middle_rec
|
|
bool n simple_neg opt_simple_neg
|
|
bool y allow_hijacks
|
|
bool n optimize_tailcalls opt_mlds_tailcalls
|
|
bool n optimize_initializations opt_initializations
|
|
bool y eliminate_unused_mlds_assigns elim_unused_mlds_assigns
|
|
bool n eliminate_local_vars elim_local_vars
|
|
bool y generate_trail_ops_inline gen_trail_ops_inline
|
|
bool n common_data use_common_data
|
|
bool y common_layout_data use_common_layout_data
|
|
bool n optimize
|
|
bool n optimize_peep opt_peep
|
|
bool n optimize_peep_mkword opt_peep_mkword
|
|
bool n optimize_jumps opt_jumps
|
|
bool n optimize_fulljumps opt_fulljumps
|
|
bool n pessimize_tailcalls
|
|
bool n checked_nondet_tailcalls opt_checked_nondet_tailcalls
|
|
bool n use_local_vars
|
|
int 2 local_var_access_threshold
|
|
bool n standardize_labels
|
|
bool n optimize_labels opt_labels
|
|
bool n optimize_dups opt_dups
|
|
bool n optimize_proc_dups opt_proc_dups
|
|
bool n optimize_frames opt_frames
|
|
bool n optimize_delay_slot opt_delay_slot
|
|
bool n optimize_reassign opt_reassign
|
|
int 0 optimize_repeat opt_repeat
|
|
int 4000 layout_compression_limit
|
|
bool n use_macro_for_redo_fail
|
|
bool n emit_c_loops
|
|
int 1 procs_per_c_function
|
|
bool n everything_in_one_c_function use_just_one_c_func
|
|
bool y local_thread_engine_base use_local_thread_engine_base
|
|
bool n erlang_switch_on_strings_as_atoms switch_on_strings_as_atoms
|
|
bool n inline_alloc
|
|
bool n c_optimize opt_c
|