Files
mercury/tests/hard_coded/pretty_printer_stress_test.data
Zoltan Somogyi fa14feedf0 Speed up pretty_printing a *lot*.
library/pretty_printer.m:
    Replace the indent_stack data structure with one that

    - can represent deep indentation in a compact data structure,
      as long as that indentation consists only of standard indents, and

    - can tell you how many code points the current indent stack consists of
      *without* counting the code points in all the individual indent pieces
      every time.

    This yields a big speedup, because the code used to spend a very large
    fraction of its time (between 40 and 50%) just counting the code points
    in indentation. This was on stress test data which had very deep
    indentation, but the cost would have been substantial even on moderately
    indented docs.

    Now that the indent_stack can represent more than one level of indentation
    in one data structure, print up to 30 levels of standard indentation
    with just one call to stream.put. By amortizing the overheads of stream.put
    over a must larger part of the output, this also yields a significant
    speedup.

    Move the indent_stack type and its (significantly expanded) set of
    operations to after the code that outputs docs, since it is just an
    implementation detail (though as explained above, an important detail).

tests/hard_coded/pretty_printer_stress_test.{m,data,exp}:
    A stress test for the pretty_printer whose profiling lead to the
    identification of the performance problems fixed above.

tests/hard_coded/Mmakefile:
    Enable the new test case, now that it is not too expensive to run
    on every bootcheck.
2022-08-30 13:35:54 +10:00

3662 lines
169 KiB
Plaintext

data(
module libs.options,
interface,
import_module libs.optimization_options,
import_module char,
import_module cord,
import_module getopt,
import_module io,
import_module list,
import_module set,
pred option_defaults(option::out, option_data::out) is nondet,
pred short_option(char::in, option::out) is semidet,
pred long_option(string::in, option::out) is semidet,
pred special_handler(option::in, special_data::in,
option_table::in, maybe_option_table::out,
cord(optimization_option)::in, cord(optimization_option)::out) is semidet,
func style_warning_options = list(option),
func non_style_warning_options = list(option),
pred inconsequential_options(set(option)::out) is det,
pred option_table_add_mercury_library_directory(string::in,
option_table::in, option_table::out) is det,
pred option_table_add_search_library_files_directory(string::in,
option_table::in, option_table::out) is det,
pred set_all_options_to(list(option)::in, option_data::in,
option_table::in, option_table::out) is det,
pred options_help(io.text_output_stream::in, io::di, io::uo) is det,
type option
---> inhibit_warnings
; inhibit_style_warnings
; warn_accumulator_swaps
; halt_at_warn
; halt_at_warn_make_int
; halt_at_warn_make_opt
; halt_at_syntax_errors
; halt_at_auto_parallel_failure
; halt_at_invalid_interface
; warn_singleton_vars
; warn_overlapping_scopes
; warn_det_decls_too_lax
; warn_inferred_erroneous
; warn_nothing_exported
; warn_unused_args
; warn_interface_imports
; warn_interface_imports_in_parents
; warn_missing_opt_files
; warn_missing_trans_opt_files
; warn_missing_trans_opt_deps
; warn_inconsistent_pred_order_clauses
; warn_inconsistent_pred_order_foreign_procs
; warn_non_contiguous_decls
; warn_non_contiguous_clauses
; warn_non_contiguous_foreign_procs
; warn_non_stratification
; warn_unification_cannot_succeed
; warn_simple_code
; warn_duplicate_calls
; warn_implicit_stream_calls
; warn_missing_module_name
; warn_wrong_module_name
; warn_smart_recompilation
; warn_undefined_options_variables
; warn_suspicious_recursion
; warn_non_tail_recursion_self
; warn_non_tail_recursion_mutual
; warn_non_tail_recursion
; warn_obvious_non_tail_recursion
; warn_target_code
; warn_up_to_date
; warn_stubs
; warn_dead_procs
; warn_dead_preds
; warn_table_with_inline
; warn_non_term_special_preds
; warn_known_bad_format_calls
; warn_only_one_format_string_error
; warn_unknown_format_calls
; warn_obsolete
; warn_insts_without_matching_type
; warn_insts_with_functors_without_type
; warn_unused_imports
; warn_unused_interface_imports
; inform_ite_instead_of_switch
; inform_incomplete_switch
; inform_incomplete_switch_threshold
; warn_unresolved_polymorphism
; warn_suspicious_foreign_procs
; warn_suspicious_foreign_code
; warn_state_var_shadowing
; warn_unneeded_mode_specific_clause
; warn_suspected_occurs_check_failure
; warn_potentially_ambiguous_pragma
; warn_ambiguous_pragma
; warn_stdlib_shadowing
; inform_inferred
; inform_inferred_types
; inform_inferred_modes
; inform_suboptimal_packing
; print_error_spec_id
; inform_ignored_pragma_errors
; verbose
; very_verbose
; verbose_errors
; verbose_recompilation
; find_all_recompilation_reasons
; verbose_make
; verbose_commands
; output_compile_error_lines
; report_cmd_line_args
; report_cmd_line_args_in_doterr
; statistics
; detailed_statistics
; proc_size_statistics
; limit_error_contexts
; debug_types
; debug_types_pred_name
; debug_modes
; debug_modes_statistics
; debug_modes_minimal
; debug_modes_verbose
; debug_modes_pred_id
; debug_dep_par_conj
; debug_det
; debug_code_gen_pred_id
; debug_dead_proc_elim
; debug_higher_order_specialization
; debug_opt
; debug_term
; debug_opt_pred_id
; debug_opt_pred_name
; debug_pd
; debug_liveness
; debug_stack_opt
; debug_make
; debug_closure
; debug_trail_usage
; debug_mode_constraints
; debug_intermodule_analysis
; debug_mm_tabling_analysis
; debug_indirect_reuse
; debug_type_rep
; only_opmode_make_short_interface
; only_opmode_make_interface
; only_opmode_make_private_interface
; only_opmode_make_optimization_interface
; only_opmode_make_transitive_opt_interface
; only_opmode_make_analysis_registry
; only_opmode_make_xml_documentation
; only_opmode_generate_source_file_mapping
; only_opmode_generate_dependency_file
; only_opmode_generate_dependencies
; generate_module_order
; generate_standalone_interface
; only_opmode_convert_to_mercury
; only_opmode_typecheck_only
; only_opmode_errorcheck_only
; only_opmode_target_code_only
; only_opmode_compile_only
; compile_to_shared_lib
; only_opmode_output_grade_string
; only_opmode_output_link_command
; only_opmode_output_shared_lib_link_command
; only_opmode_output_stdlib_grades
; only_opmode_output_libgrades
; only_opmode_output_cc
; only_opmode_output_c_compiler_type
; only_opmode_output_csharp_compiler
; only_opmode_output_csharp_compiler_type
; only_opmode_output_cflags
; only_opmode_output_library_link_flags
; only_opmode_output_grade_defines
; only_opmode_output_c_include_directory_flags
; only_opmode_output_target_arch
; only_opmode_output_java_class_dir
; only_opmode_output_stdlib_modules
; error_output_suffix
; progress_output_suffix
; inference_output_suffix
; debug_output_suffix
; recompile_output_suffix
; smart_recompilation
; generate_item_version_numbers
; generate_mmc_make_module_dependencies
; trace_level
; trace_optimized
; trace_prof
; trace_table_io
; trace_table_io_only_retry
; trace_table_io_states
; trace_table_io_require
; trace_table_io_all
; trace_goal_flags
; prof_optimized
; exec_trace_tail_rec
; suppress_trace
; force_disable_tracing
; delay_death
; delay_death_max_vars
; stack_trace_higher_order
; force_disable_ssdebug
; generate_bytecode
; line_numbers
; line_numbers_around_foreign_code
; line_numbers_for_c_headers
; type_repns_for_humans
; auto_comments
; frameopt_comments
; max_error_line_width
; show_definitions
; show_definition_line_counts
; show_definition_extents
; show_local_type_repns
; show_all_type_repns
; show_developer_type_repns
; show_dependency_graph
; imports_graph
; dump_trace_counts
; dump_hlds
; dump_hlds_pred_id
; dump_hlds_pred_name
; dump_hlds_pred_name_order
; dump_hlds_spec_preds
; dump_hlds_spec_preds_for
; dump_hlds_alias
; dump_hlds_options
; dump_hlds_inst_limit
; dump_hlds_file_suffix
; dump_same_hlds
; dump_mlds
; dump_mlds_pred_name
; verbose_dump_mlds
; dump_options_file
; mode_constraints
; simple_mode_constraints
; prop_mode_constraints
; compute_goal_modes
; benchmark_modes
; benchmark_modes_repeat
; unneeded_code_debug
; unneeded_code_debug_pred_name
; common_struct_preds
; reorder_conj
; reorder_disj
; fully_strict
; strict_sequential
; allow_stubs
; infer_types
; infer_modes
; infer_det
; infer_all
; type_inference_iteration_limit
; mode_inference_iteration_limit
; event_set_file_name
; grade
; target
; compile_to_c
; java
; java_only
; csharp
; csharp_only
; exec_trace
; decl_debug
; profiling
; time_profiling
; memory_profiling
; deep_profiling
; profile_calls
; profile_time
; profile_memory
; profile_deep
; use_activation_counts
; pre_prof_transforms_simplify
; pre_implicit_parallelism_simplify
; coverage_profiling
; coverage_profiling_via_calls
; coverage_profiling_static
; profile_deep_coverage_after_goal
; profile_deep_coverage_branch_ite
; profile_deep_coverage_branch_switch
; profile_deep_coverage_branch_disj
; profile_deep_coverage_use_portcounts
; profile_deep_coverage_use_trivial
; profile_for_feedback
; use_zeroing_for_ho_cycles
; use_lots_of_ho_specialization
; deep_profile_tail_recursion
; record_term_sizes_as_words
; record_term_sizes_as_cells
; experimental_complexity
; gc
; parallel
; threadscope
; use_trail
; use_minimal_model_stack_copy
; use_minimal_model_own_stacks
; minimal_model_debug
; pregenerated_dist
; single_prec_float
; type_layout
; maybe_thread_safe_opt
; extend_stacks_when_needed
; stack_segments
; use_regions
; use_alloc_regions
; use_regions_debug
; use_regions_profiling
; source_to_source_debug
; ssdb_trace_level
; link_ssdb_libs
; num_ptag_bits
; bits_per_word
; bytes_per_word
; conf_low_ptag_bits
; unboxed_float
; unboxed_int64s
; unboxed_no_tag_types
; arg_pack_bits
; pack_everything
; allow_direct_args
; allow_double_word_fields
; allow_double_word_ints
; allow_packing_dummies
; allow_packing_ints
; allow_packing_chars
; allow_packing_local_sectags
; allow_packing_remote_sectags
; allow_packing_mini_types
; allow_packed_unify_compare
; sync_term_size
; gcc_non_local_gotos
; gcc_global_registers
; asm_labels
; use_float_registers
; highlevel_code
; det_copy_out
; nondet_copy_out
; put_commit_in_own_func
; put_nondet_env_on_heap
; backend_foreign_languages
; stack_trace
; basic_stack_layout
; agc_stack_layout
; procid_stack_layout
; trace_stack_layout
; body_typeinfo_liveness
; can_compare_constants_as_ints
; pretest_equality_cast_pointers
; delay_partial_instantiations
; allow_defn_of_builtins
; type_ctor_info
; type_ctor_layout
; type_ctor_functors
; new_type_class_rtti
; rtti_line_numbers
; disable_minimal_model_stack_copy_pneg
; disable_minimal_model_stack_copy_cut
; use_minimal_model_stack_copy_pneg
; use_minimal_model_stack_copy_cut
; disable_trail_ops
; size_region_ite_fixed
; size_region_disj_fixed
; size_region_commit_fixed
; size_region_ite_protect
; size_region_ite_snapshot
; size_region_semi_disj_protect
; size_region_disj_snapshot
; size_region_commit_entry
; allow_multi_arm_switches
; type_check_constraints
; low_level_debug
; table_debug
; trad_passes
; parallel_liveness
; parallel_code_gen
; reclaim_heap_on_failure
; reclaim_heap_on_semidet_failure
; reclaim_heap_on_nondet_failure
; have_delay_slot
; num_real_r_regs
; num_real_f_regs
; num_real_r_temps
; num_real_f_temps
; max_jump_table_size
; max_specialized_do_call_closure
; max_specialized_do_call_class_method
; compare_specialization
; should_pretest_equality
; fact_table_max_array_size
; fact_table_hash_percent_full
; prefer_switch
; prefer_while_loop_over_jump_self
; prefer_while_loop_over_jump_mutual
; opt_no_return_calls
; debug_class_init
; optopt_allow_inlining
; inlining
; optopt_inline_simple
; optopt_inline_builtins
; optopt_inline_single_use
; optopt_inline_call_cost
; optopt_inline_compound_threshold
; optopt_inline_simple_threshold
; optopt_inline_vars_threshold
; optopt_intermod_inline_simple_threshold
; optopt_inline_linear_tail_rec_sccs
; optopt_inline_linear_tail_rec_sccs_max_extra
; optopt_from_ground_term_threshold
; optopt_enable_const_struct_poly
; optopt_enable_const_struct_user
; optopt_common_struct
; optopt_constraint_propagation
; optopt_local_constraint_propagation
; optopt_optimize_unused_args
; optopt_intermod_unused_args
; optopt_optimize_higher_order
; optopt_higher_order_size_limit
; optopt_higher_order_arg_limit
; optopt_unneeded_code
; optopt_unneeded_code_copy_limit
; optopt_type_specialization
; optopt_user_guided_type_specialization
; optopt_introduce_accumulators
; optopt_optimize_constructor_last_call_accumulator
; optopt_optimize_constructor_last_call_null
; optopt_optimize_constructor_last_call
; optopt_optimize_duplicate_calls
; optopt_constant_propagation
; optopt_excess_assign
; optopt_test_after_switch
; optopt_optimize_format_calls
; optopt_optimize_saved_vars_const
; optopt_optimize_saved_vars_cell
; optopt_optimize_saved_vars_cell_loop
; optopt_optimize_saved_vars_cell_full_path
; optopt_optimize_saved_vars_cell_on_stack
; optopt_optimize_saved_vars_cell_candidate_headvars
; optopt_optimize_saved_vars_cell_cv_store_cost
; optopt_optimize_saved_vars_cell_cv_load_cost
; optopt_optimize_saved_vars_cell_fv_store_cost
; optopt_optimize_saved_vars_cell_fv_load_cost
; optopt_optimize_saved_vars_cell_op_ratio
; optopt_optimize_saved_vars_cell_node_ratio
; optopt_optimize_saved_vars_cell_all_path_node_ratio
; optopt_optimize_saved_vars_cell_include_all_candidates
; optimize_saved_vars
; optopt_loop_invariants
; optopt_delay_construct
; optopt_follow_code
; optopt_optimize_dead_procs
; optopt_deforestation
; optopt_deforestation_depth_limit
; optopt_deforestation_cost_factor
; optopt_deforestation_vars_threshold
; optopt_deforestation_size_threshold
; optopt_untuple
; optopt_tuple
; optopt_tuple_trace_counts_file
; optopt_tuple_costs_ratio
; optopt_tuple_min_args
; optopt_inline_par_builtins
; optopt_always_specialize_in_dep_par_conjs
; optopt_allow_some_paths_only_waits
; optopt_region_analysis
; optopt_smart_indexing
; optopt_dense_switch_req_density
; optopt_lookup_switch_req_density
; optopt_dense_switch_size
; optopt_lookup_switch_size
; optopt_string_trie_switch_size
; optopt_string_hash_switch_size
; optopt_string_binary_switch_size
; optopt_tag_switch_size
; optopt_try_switch_size
; optopt_binary_switch_size
; optopt_switch_single_rec_base_first
; optopt_switch_multi_rec_base_first
; optopt_smart_atomic_indexing
; optopt_smart_string_indexing
; optopt_smart_tag_indexing
; optopt_smart_float_indexing
; optopt_static_ground_cells
; optopt_static_ground_floats
; optopt_static_ground_int64s
; optopt_static_code_addresses
; optopt_use_atomic_cells
; optopt_middle_rec
; optopt_simple_neg
; optopt_allow_hijacks
; optopt_optimize_mlds_tailcalls
; optopt_optimize_initializations
; optopt_eliminate_unused_mlds_assigns
; optopt_eliminate_local_vars
; optopt_generate_trail_ops_inline
; optopt_common_data
; optopt_common_layout_data
; optopt_optimize
; optopt_optimize_peep
; optopt_optimize_peep_mkword
; optopt_optimize_jumps
; optopt_optimize_fulljumps
; optopt_pessimize_tailcalls
; optopt_checked_nondet_tailcalls
; optopt_use_local_vars
; optopt_local_var_access_threshold
; optopt_standardize_labels
; optopt_optimize_labels
; optopt_optimize_dups
; optopt_optimize_proc_dups
; optopt_optimize_frames
; optopt_optimize_delay_slot
; optopt_optimize_reassign
; optopt_optimize_repeat
; optopt_layout_compression_limit
; optopt_use_macro_for_redo_fail
; optopt_emit_c_loops
; optopt_procs_per_c_function
; everything_in_one_c_function
; optopt_local_thread_engine_base
; optopt_inline_alloc
; optopt_c_optimize
; default_opt_level
; opt_level
; opt_space
; intermodule_optimization
; read_opt_files_transitively
; use_opt_files
; use_trans_opt_files
; transitive_optimization
; intermodule_analysis
; analysis_repeat
; analysis_file_cache
; analyse_trail_usage
; optimize_trail_usage
; optimize_region_ops
; analyse_mm_tabling
; structure_sharing_analysis
; structure_sharing_widening
; structure_reuse_analysis
; structure_reuse_constraint
; structure_reuse_constraint_arg
; structure_reuse_max_conditions
; structure_reuse_repeat
; structure_reuse_free_cells
; termination
; termination_check
; termination_check_verbose
; termination_single_args
; termination_norm
; termination_error_limit
; termination_path_limit
; termination2
; termination2_check
; termination2_check_verbose
; termination2_norm
; widening_limit
; arg_size_analysis_only
; propagate_failure_constrs
; term2_maximum_matrix_size
; analyse_exceptions
; analyse_closures
; target_debug
; cc
; cflags
; quoted_cflag
; c_include_directory
; ansi_c
; gcc_flags
; quoted_gcc_flag
; clang_flags
; quoted_clang_flag
; msvc_flags
; quoted_msvc_flag
; cflags_for_warnings
; cflags_for_optimization
; cflags_for_ansi
; cflags_for_regs
; cflags_for_gotos
; cflags_for_threads
; cflags_for_debug
; cflags_for_sanitizers
; cflags_for_pic
; cflags_for_lto
; c_flag_to_name_object_file
; object_file_extension
; pic_object_file_extension
; c_compiler_type
; csharp_compiler_type
; java_compiler
; java_interpreter
; java_compiler_flags
; quoted_java_compiler_flag
; java_classpath
; java_object_file_extension
; java_runtime_flags
; quoted_java_runtime_flag
; csharp_compiler
; csharp_flags
; quoted_csharp_flag
; cli_interpreter
; output_file_name
; ld_flags
; quoted_ld_flag
; ld_libflags
; quoted_ld_libflag
; link_library_directories
; runtime_link_library_directories
; default_runtime_library_directory
; link_libraries
; link_objects
; mercury_library_directories
; mercury_library_directory_special
; search_library_files_directories
; search_library_files_directory_special
; mercury_libraries
; mercury_library_special
; mercury_standard_library_directory
; mercury_standard_library_directory_special
; init_file_directories
; init_files
; trace_init_files
; linkage
; linkage_special
; mercury_linkage
; mercury_linkage_special
; strip
; demangle
; main
; allow_undefined
; use_readline
; runtime_flags
; extra_initialization_functions
; frameworks
; framework_directories
; sign_assembly
; cstack_reserve_size
; shared_library_extension
; library_extension
; executable_file_extension
; link_executable_command
; link_shared_lib_command
; create_archive_command
; create_archive_command_output_flag
; create_archive_command_flags
; ranlib_command
; ranlib_flags
; mkinit_command
; mkinit_erl_command
; demangle_command
; filtercc_command
; filterjavac_command
; trace_libs
; thread_libs
; hwloc_libs
; hwloc_static_libs
; shared_libs
; math_lib
; readline_libs
; linker_opt_separator
; linker_thread_flags
; shlib_linker_thread_flags
; linker_lto_flags
; linker_static_flags
; linker_strip_flag
; linker_link_lib_flag
; linker_link_lib_suffix
; shlib_linker_link_lib_flag
; shlib_linker_link_lib_suffix
; linker_debug_flags
; shlib_linker_debug_flags
; linker_sanitizer_flags
; linker_trace_flags
; shlib_linker_trace_flags
; linker_path_flag
; linker_rpath_flag
; linker_rpath_separator
; shlib_linker_rpath_flag
; shlib_linker_rpath_separator
; linker_allow_undefined_flag
; linker_error_undefined_flag
; shlib_linker_use_install_name
; shlib_linker_install_name_flag
; shlib_linker_install_name_path
; strip_executable_command
; strip_executable_shared_flags
; strip_executable_static_flags
; java_archive_command
; only_opmode_make
; rebuild
; keep_going
; jobs
; track_flags
; invoked_by_mmc_make
; extra_init_command
; pre_link_command
; install_prefix
; use_symlinks
; mercury_configuration_directory
; mercury_configuration_directory_special
; install_command
; install_command_dir_option
; detect_libgrades
; libgrades
; libgrades_include_components
; libgrades_exclude_components
; lib_linkages
; flags_file
; options_files
; config_file
; options_search_directories
; use_subdirs
; use_grade_subdirs
; search_directories
; intermod_directories
; use_search_directories_for_intermod
; libgrade_install_check
; order_make_by_timestamp
; show_make_times
; extra_library_header
; restricted_command_line
; env_type
; host_env_type
; system_env_type
; target_env_type
; filenames_from_stdin
; typecheck_ambiguity_warn_limit
; typecheck_ambiguity_error_limit
; help
; version
; target_arch
; cross_compiling
; local_module_id
; analysis_file_cache_dir
; compiler_sufficiently_recent
; experiment
; experiment1
; experiment2
; experiment3
; experiment4
; experiment5
; ignore_par_conjunctions
; control_granularity
; distance_granularity
; implicit_parallelism
; feedback_file
; par_loop_control
; par_loop_control_preserve_tail_recursion,
type option_table == option_table(option),
type maybe_option_table == maybe_option_table(option),
implementation,
import_module libs.compute_grade,
import_module libs.shell_util,
import_module assoc_list,
import_module bool,
import_module dir,
import_module map,
import_module maybe,
import_module pair,
import_module solutions,
import_module string,
pragma no_determinism_warning(pred(option_defaults/2)),
option_defaults(opt, data) :-
optdef(category, opt, data),
type option_category
---> oc_warn
; oc_verbosity
; oc_opmode
; oc_aux_output
; oc_semantics
; oc_grade
; oc_internal
; oc_codegen
; oc_spec_opt
; oc_opt
; oc_target_comp
; oc_link
; oc_buildsys
; oc_misc,
pred option_defaults_2(option_category, assoc_list(option, option_data)),
mode option_defaults_2(in, out) is det,
option_defaults_2(category, optsdatas) :-
( pred((opt - data)::out) is nondet :-
optdef(cat, opt, data),
cat = category
),
solutions(pred, optsdatas),
pred optdef(option_category, option, option_data),
mode optdef(out, in, out) is det,
mode optdef(out, out, out) is multi,
optdef(oc_warn, inhibit_warnings, bool_special),
optdef(oc_warn, inhibit_style_warnings, bool_special),
optdef(oc_warn, warn_accumulator_swaps, bool(yes)),
optdef(oc_warn, halt_at_warn, bool(no)),
optdef(oc_warn, halt_at_warn_make_int, bool(no)),
optdef(oc_warn, halt_at_warn_make_opt, bool(no)),
optdef(oc_warn, halt_at_syntax_errors, bool(no)),
optdef(oc_warn, halt_at_auto_parallel_failure, bool(no)),
optdef(oc_warn, halt_at_invalid_interface, bool(yes)),
optdef(oc_warn, warn_singleton_vars, bool(yes)),
optdef(oc_warn, warn_overlapping_scopes, bool(yes)),
optdef(oc_warn, warn_det_decls_too_lax, bool(yes)),
optdef(oc_warn, warn_inferred_erroneous, bool(yes)),
optdef(oc_warn, warn_nothing_exported, bool(yes)),
optdef(oc_warn, warn_unused_args, bool(no)),
optdef(oc_warn, warn_interface_imports, bool(yes)),
optdef(oc_warn, warn_interface_imports_in_parents, bool(no)),
optdef(oc_warn, warn_inconsistent_pred_order_clauses, bool(no)),
optdef(oc_warn, warn_inconsistent_pred_order_foreign_procs, bool(no)),
optdef(oc_warn, warn_non_contiguous_decls, bool(yes)),
optdef(oc_warn, warn_non_contiguous_clauses, bool(no)),
optdef(oc_warn, warn_non_contiguous_foreign_procs, bool(no)),
optdef(oc_warn, warn_non_stratification, bool(no)),
optdef(oc_warn, warn_missing_opt_files, bool(yes)),
optdef(oc_warn, warn_missing_trans_opt_files, bool(no)),
optdef(oc_warn, warn_missing_trans_opt_deps, bool(yes)),
optdef(oc_warn, warn_unification_cannot_succeed, bool(yes)),
optdef(oc_warn, warn_simple_code, bool(yes)),
optdef(oc_warn, warn_duplicate_calls, bool(no)),
optdef(oc_warn, warn_implicit_stream_calls, bool(no)),
optdef(oc_warn, warn_missing_module_name, bool(yes)),
optdef(oc_warn, warn_wrong_module_name, bool(yes)),
optdef(oc_warn, error_output_suffix, string("")),
optdef(oc_warn, progress_output_suffix, string("")),
optdef(oc_warn, inference_output_suffix, string("")),
optdef(oc_warn, debug_output_suffix, string("")),
optdef(oc_warn, recompile_output_suffix, string("")),
optdef(oc_warn, warn_smart_recompilation, bool(yes)),
optdef(oc_warn, warn_undefined_options_variables, bool(yes)),
optdef(oc_warn, warn_suspicious_recursion, bool(no)),
optdef(oc_warn, warn_non_tail_recursion_self, bool(no)),
optdef(oc_warn, warn_non_tail_recursion_mutual, bool(no)),
optdef(oc_warn, warn_non_tail_recursion, maybe_string_special),
optdef(oc_warn, warn_obvious_non_tail_recursion, bool(no)),
optdef(oc_warn, warn_target_code, bool(yes)),
optdef(oc_warn, warn_up_to_date, bool(yes)),
optdef(oc_warn, warn_stubs, bool(yes)),
optdef(oc_warn, warn_dead_procs, bool(no)),
optdef(oc_warn, warn_dead_preds, bool(no)),
optdef(oc_warn, warn_table_with_inline, bool(yes)),
optdef(oc_warn, warn_non_term_special_preds, bool(yes)),
optdef(oc_warn, warn_known_bad_format_calls, bool(yes)),
optdef(oc_warn, warn_only_one_format_string_error, bool(yes)),
optdef(oc_warn, warn_unknown_format_calls, bool(no)),
optdef(oc_warn, warn_obsolete, bool(yes)),
optdef(oc_warn, warn_insts_without_matching_type, bool(yes)),
optdef(oc_warn, warn_insts_with_functors_without_type, bool(no)),
optdef(oc_warn, warn_unused_imports, bool(no)),
optdef(oc_warn, warn_unused_interface_imports, bool(yes)),
optdef(oc_warn, inform_ite_instead_of_switch, bool(no)),
optdef(oc_warn, inform_incomplete_switch, bool(no)),
optdef(oc_warn, inform_incomplete_switch_threshold, int(0)),
optdef(oc_warn, warn_unresolved_polymorphism, bool(yes)),
optdef(oc_warn, warn_suspicious_foreign_procs, bool(no)),
optdef(oc_warn, warn_suspicious_foreign_code, bool(no)),
optdef(oc_warn, warn_state_var_shadowing, bool(yes)),
optdef(oc_warn, warn_unneeded_mode_specific_clause, bool(yes)),
optdef(oc_warn, warn_suspected_occurs_check_failure, bool(yes)),
optdef(oc_warn, warn_potentially_ambiguous_pragma, bool(no)),
optdef(oc_warn, warn_ambiguous_pragma, bool(yes)),
optdef(oc_warn, warn_stdlib_shadowing, bool(yes)),
optdef(oc_warn, inform_inferred, bool_special),
optdef(oc_warn, inform_inferred_types, bool(yes)),
optdef(oc_warn, inform_inferred_modes, bool(yes)),
optdef(oc_warn, inform_suboptimal_packing, bool(no)),
optdef(oc_warn, print_error_spec_id, bool(no)),
optdef(oc_warn, inform_ignored_pragma_errors, bool(no)),
optdef(oc_verbosity, verbose, bool(no)),
optdef(oc_verbosity, very_verbose, bool(no)),
optdef(oc_verbosity, verbose_errors, bool(no)),
optdef(oc_verbosity, verbose_recompilation, bool(no)),
optdef(oc_verbosity, find_all_recompilation_reasons, bool(no)),
optdef(oc_verbosity, verbose_make, bool(yes)),
optdef(oc_verbosity, verbose_commands, bool(no)),
optdef(oc_verbosity, output_compile_error_lines, int(15)),
optdef(oc_verbosity, report_cmd_line_args, bool(no)),
optdef(oc_verbosity, report_cmd_line_args_in_doterr, bool(no)),
optdef(oc_verbosity, statistics, bool(no)),
optdef(oc_verbosity, detailed_statistics, bool(no)),
optdef(oc_verbosity, proc_size_statistics, string("")),
optdef(oc_verbosity, limit_error_contexts, accumulating([])),
optdef(oc_verbosity, debug_types, bool(no)),
optdef(oc_verbosity, debug_types_pred_name, accumulating([])),
optdef(oc_verbosity, debug_modes, bool(no)),
optdef(oc_verbosity, debug_modes_statistics, bool(no)),
optdef(oc_verbosity, debug_modes_minimal, bool(no)),
optdef(oc_verbosity, debug_modes_verbose, bool(no)),
optdef(oc_verbosity, debug_modes_pred_id, int(-1)),
optdef(oc_verbosity, debug_dep_par_conj, accumulating([])),
optdef(oc_verbosity, debug_det, bool(no)),
optdef(oc_verbosity, debug_code_gen_pred_id, int(-1)),
optdef(oc_verbosity, debug_term, bool(no)),
optdef(oc_verbosity, debug_dead_proc_elim, bool(no)),
optdef(oc_verbosity, debug_higher_order_specialization, bool(no)),
optdef(oc_verbosity, debug_opt, bool(no)),
optdef(oc_verbosity, debug_opt_pred_id, accumulating([])),
optdef(oc_verbosity, debug_opt_pred_name, accumulating([])),
optdef(oc_verbosity, debug_pd, bool(no)),
optdef(oc_verbosity, debug_liveness, int(-1)),
optdef(oc_verbosity, debug_stack_opt, int(-1)),
optdef(oc_verbosity, debug_make, bool(no)),
optdef(oc_verbosity, debug_closure, bool(no)),
optdef(oc_verbosity, debug_trail_usage, bool(no)),
optdef(oc_verbosity, debug_mode_constraints, bool(no)),
optdef(oc_verbosity, debug_intermodule_analysis, bool(no)),
optdef(oc_verbosity, debug_mm_tabling_analysis, bool(no)),
optdef(oc_verbosity, debug_indirect_reuse, bool(no)),
optdef(oc_verbosity, debug_type_rep, bool(no)),
optdef(oc_opmode, only_opmode_generate_source_file_mapping, bool(no)),
optdef(oc_opmode, only_opmode_generate_dependency_file, bool(no)),
optdef(oc_opmode, only_opmode_generate_dependencies, bool(no)),
optdef(oc_opmode, generate_module_order, bool(no)),
optdef(oc_opmode, generate_standalone_interface, maybe_string(no)),
optdef(oc_opmode, only_opmode_make_short_interface, bool(no)),
optdef(oc_opmode, only_opmode_make_interface, bool(no)),
optdef(oc_opmode, only_opmode_make_private_interface, bool(no)),
optdef(oc_opmode, only_opmode_make_optimization_interface, bool(no)),
optdef(oc_opmode, only_opmode_make_transitive_opt_interface, bool(no)),
optdef(oc_opmode, only_opmode_make_analysis_registry, bool(no)),
optdef(oc_opmode, only_opmode_make_xml_documentation, bool(no)),
optdef(oc_opmode, only_opmode_convert_to_mercury, bool(no)),
optdef(oc_opmode, only_opmode_typecheck_only, bool(no)),
optdef(oc_opmode, only_opmode_errorcheck_only, bool(no)),
optdef(oc_opmode, only_opmode_target_code_only, bool(no)),
optdef(oc_opmode, only_opmode_compile_only, bool(no)),
optdef(oc_opmode, compile_to_shared_lib, bool(no)),
optdef(oc_opmode, only_opmode_output_grade_string, bool(no)),
optdef(oc_opmode, only_opmode_output_link_command, bool(no)),
optdef(oc_opmode, only_opmode_output_shared_lib_link_command, bool(no)),
optdef(oc_opmode, only_opmode_output_stdlib_grades, bool(no)),
optdef(oc_opmode, only_opmode_output_libgrades, bool(no)),
optdef(oc_opmode, only_opmode_output_cc, bool(no)),
optdef(oc_opmode, only_opmode_output_c_compiler_type, bool(no)),
optdef(oc_opmode, only_opmode_output_csharp_compiler, bool(no)),
optdef(oc_opmode, only_opmode_output_csharp_compiler_type, bool(no)),
optdef(oc_opmode, only_opmode_output_cflags, bool(no)),
optdef(oc_opmode, only_opmode_output_library_link_flags, bool(no)),
optdef(oc_opmode, only_opmode_output_grade_defines, bool(no)),
optdef(oc_opmode, only_opmode_output_c_include_directory_flags, bool(no)),
optdef(oc_opmode, only_opmode_output_target_arch, bool(no)),
optdef(oc_opmode, only_opmode_output_java_class_dir, bool(no)),
optdef(oc_opmode, only_opmode_output_stdlib_modules, bool(no)),
optdef(oc_aux_output, smart_recompilation, bool(no)),
optdef(oc_aux_output, generate_item_version_numbers, bool(no)),
optdef(oc_aux_output, generate_mmc_make_module_dependencies, bool(no)),
optdef(oc_aux_output, trace_level, string("default")),
optdef(oc_aux_output, trace_optimized, bool(no)),
optdef(oc_aux_output, trace_prof, bool(no)),
optdef(oc_aux_output, trace_table_io, bool(no)),
optdef(oc_aux_output, trace_table_io_only_retry, bool(no)),
optdef(oc_aux_output, trace_table_io_states, bool(no)),
optdef(oc_aux_output, trace_table_io_require, bool(no)),
optdef(oc_aux_output, trace_table_io_all, bool(no)),
optdef(oc_aux_output, trace_goal_flags, accumulating([])),
optdef(oc_aux_output, prof_optimized, bool(no)),
optdef(oc_aux_output, exec_trace_tail_rec, bool(no)),
optdef(oc_aux_output, suppress_trace, string("")),
optdef(oc_aux_output, force_disable_tracing, bool(no)),
optdef(oc_aux_output, delay_death, bool(yes)),
optdef(oc_aux_output, delay_death_max_vars, int(1000)),
optdef(oc_aux_output, stack_trace_higher_order, bool(no)),
optdef(oc_aux_output, force_disable_ssdebug, bool(no)),
optdef(oc_aux_output, generate_bytecode, bool(no)),
optdef(oc_aux_output, line_numbers, bool(no)),
optdef(oc_aux_output, line_numbers_around_foreign_code, bool(yes)),
optdef(oc_aux_output, line_numbers_for_c_headers, bool(no)),
optdef(oc_aux_output, type_repns_for_humans, bool(no)),
optdef(oc_aux_output, auto_comments, bool(no)),
optdef(oc_aux_output, frameopt_comments, bool(no)),
optdef(oc_aux_output, max_error_line_width, maybe_int(yes(79))),
optdef(oc_aux_output, show_definitions, bool(no)),
optdef(oc_aux_output, show_definition_line_counts, bool(no)),
optdef(oc_aux_output, show_definition_extents, bool(no)),
optdef(oc_aux_output, show_local_type_repns, bool(no)),
optdef(oc_aux_output, show_all_type_repns, bool(no)),
optdef(oc_aux_output, show_developer_type_repns, bool(no)),
optdef(oc_aux_output, show_dependency_graph, bool(no)),
optdef(oc_aux_output, imports_graph, bool(no)),
optdef(oc_aux_output, dump_trace_counts, accumulating([])),
optdef(oc_aux_output, dump_hlds, accumulating([])),
optdef(oc_aux_output, dump_hlds_pred_id, accumulating([])),
optdef(oc_aux_output, dump_hlds_pred_name, accumulating([])),
optdef(oc_aux_output, dump_hlds_pred_name_order, bool(no)),
optdef(oc_aux_output, dump_hlds_spec_preds, bool(no)),
optdef(oc_aux_output, dump_hlds_spec_preds_for, accumulating([])),
optdef(oc_aux_output, dump_hlds_alias, string("")),
optdef(oc_aux_output, dump_hlds_options, string("")),
optdef(oc_aux_output, dump_hlds_inst_limit, int(100)),
optdef(oc_aux_output, dump_hlds_file_suffix, string("")),
optdef(oc_aux_output, dump_same_hlds, bool(no)),
optdef(oc_aux_output, dump_mlds, accumulating([])),
optdef(oc_aux_output, dump_mlds_pred_name, accumulating([])),
optdef(oc_aux_output, verbose_dump_mlds, accumulating([])),
optdef(oc_aux_output, dump_options_file, string("")),
optdef(oc_aux_output, mode_constraints, bool(no)),
optdef(oc_aux_output, simple_mode_constraints, bool(no)),
optdef(oc_aux_output, prop_mode_constraints, bool(no)),
optdef(oc_aux_output, compute_goal_modes, bool(no)),
optdef(oc_aux_output, benchmark_modes, bool(no)),
optdef(oc_aux_output, benchmark_modes_repeat, int(1)),
optdef(oc_aux_output, unneeded_code_debug, bool(no)),
optdef(oc_aux_output, unneeded_code_debug_pred_name, accumulating([])),
optdef(oc_aux_output, common_struct_preds, string("")),
optdef(oc_semantics, strict_sequential, special),
optdef(oc_semantics, reorder_conj, bool(yes)),
optdef(oc_semantics, reorder_disj, bool(yes)),
optdef(oc_semantics, fully_strict, bool(yes)),
optdef(oc_semantics, allow_stubs, bool(no)),
optdef(oc_semantics, infer_types, bool(no)),
optdef(oc_semantics, infer_modes, bool(no)),
optdef(oc_semantics, infer_det, bool(yes)),
optdef(oc_semantics, infer_all, bool_special),
optdef(oc_semantics, type_inference_iteration_limit, int(60)),
optdef(oc_semantics, mode_inference_iteration_limit, int(30)),
optdef(oc_semantics, event_set_file_name, string("")),
optdef(oc_grade, grade, string_special),
optdef(oc_grade, target, string("c")),
optdef(oc_grade, compile_to_c, special),
optdef(oc_grade, csharp, special),
optdef(oc_grade, csharp_only, special),
optdef(oc_grade, java, special),
optdef(oc_grade, java_only, special),
optdef(oc_grade, exec_trace, bool(no)),
optdef(oc_grade, decl_debug, bool(no)),
optdef(oc_grade, profiling, bool_special),
optdef(oc_grade, time_profiling, special),
optdef(oc_grade, memory_profiling, special),
optdef(oc_grade, deep_profiling, special),
optdef(oc_grade, profile_calls, bool(no)),
optdef(oc_grade, profile_time, bool(no)),
optdef(oc_grade, profile_memory, bool(no)),
optdef(oc_grade, profile_deep, bool(no)),
optdef(oc_grade, use_activation_counts, bool(no)),
optdef(oc_grade, pre_prof_transforms_simplify, bool(no)),
optdef(oc_grade, pre_implicit_parallelism_simplify, bool(no)),
optdef(oc_grade, coverage_profiling, bool(yes)),
optdef(oc_grade, coverage_profiling_via_calls, bool(no)),
optdef(oc_grade, coverage_profiling_static, bool(no)),
optdef(oc_grade, profile_deep_coverage_after_goal, bool(yes)),
optdef(oc_grade, profile_deep_coverage_branch_ite, bool(yes)),
optdef(oc_grade, profile_deep_coverage_branch_switch, bool(yes)),
optdef(oc_grade, profile_deep_coverage_branch_disj, bool(yes)),
optdef(oc_grade, profile_deep_coverage_use_portcounts, bool(no)),
optdef(oc_grade, profile_deep_coverage_use_trivial, bool(no)),
optdef(oc_grade, profile_for_feedback, bool(no)),
optdef(oc_grade, use_zeroing_for_ho_cycles, bool(yes)),
optdef(oc_grade, use_lots_of_ho_specialization, bool(no)),
optdef(oc_grade, deep_profile_tail_recursion, bool(no)),
optdef(oc_grade, record_term_sizes_as_words, bool(no)),
optdef(oc_grade, record_term_sizes_as_cells, bool(no)),
optdef(oc_grade, experimental_complexity, string("")),
optdef(oc_grade, gc, string("boehm")),
optdef(oc_grade, parallel, bool(no)),
optdef(oc_grade, threadscope, bool(no)),
optdef(oc_grade, use_trail, bool(no)),
optdef(oc_grade, maybe_thread_safe_opt, string("no")),
optdef(oc_grade, extend_stacks_when_needed, bool(no)),
optdef(oc_grade, stack_segments, bool(no)),
optdef(oc_grade, use_regions, bool(no)),
optdef(oc_grade, use_alloc_regions, bool(yes)),
optdef(oc_grade, use_regions_debug, bool(no)),
optdef(oc_grade, use_regions_profiling, bool(no)),
optdef(oc_grade, use_minimal_model_stack_copy, bool(no)),
optdef(oc_grade, use_minimal_model_own_stacks, bool(no)),
optdef(oc_grade, minimal_model_debug, bool(no)),
optdef(oc_grade, pregenerated_dist, bool(no)),
optdef(oc_grade, single_prec_float, bool(no)),
optdef(oc_grade, type_layout, bool(yes)),
optdef(oc_grade, source_to_source_debug, bool(no)),
optdef(oc_grade, ssdb_trace_level, string("default")),
optdef(oc_grade, link_ssdb_libs, bool(no)),
optdef(oc_grade, num_ptag_bits, int(-1)),
optdef(oc_grade, bits_per_word, int(32)),
optdef(oc_grade, bytes_per_word, int(4)),
optdef(oc_grade, conf_low_ptag_bits, int(2)),
optdef(oc_grade, unboxed_float, bool(no)),
optdef(oc_grade, unboxed_int64s, bool(no)),
optdef(oc_grade, unboxed_no_tag_types, bool(yes)),
optdef(oc_grade, arg_pack_bits, int(-1)),
optdef(oc_grade, pack_everything, bool(no)),
optdef(oc_grade, allow_direct_args, bool(yes)),
optdef(oc_grade, allow_double_word_fields, bool(yes)),
optdef(oc_grade, allow_double_word_ints, bool(no)),
optdef(oc_grade, allow_packing_dummies, bool(no)),
optdef(oc_grade, allow_packing_ints, bool(no)),
optdef(oc_grade, allow_packing_chars, bool(no)),
optdef(oc_grade, allow_packing_local_sectags, bool(no)),
optdef(oc_grade, allow_packing_remote_sectags, bool(no)),
optdef(oc_grade, allow_packing_mini_types, bool(no)),
optdef(oc_grade, allow_packed_unify_compare, bool(no)),
optdef(oc_grade, sync_term_size, int(8)),
optdef(oc_grade, gcc_non_local_gotos, bool(yes)),
optdef(oc_grade, gcc_global_registers, bool(yes)),
optdef(oc_grade, asm_labels, bool(yes)),
optdef(oc_grade, use_float_registers, bool(yes)),
optdef(oc_grade, highlevel_code, bool(no)),
optdef(oc_grade, det_copy_out, bool(no)),
optdef(oc_grade, nondet_copy_out, bool(no)),
optdef(oc_grade, put_commit_in_own_func, bool(no)),
optdef(oc_grade, put_nondet_env_on_heap, bool(no)),
optdef(oc_internal, backend_foreign_languages, accumulating([])),
optdef(oc_internal, stack_trace, bool(no)),
optdef(oc_internal, basic_stack_layout, bool(no)),
optdef(oc_internal, agc_stack_layout, bool(no)),
optdef(oc_internal, procid_stack_layout, bool(no)),
optdef(oc_internal, trace_stack_layout, bool(no)),
optdef(oc_internal, body_typeinfo_liveness, bool(no)),
optdef(oc_internal, can_compare_constants_as_ints, bool(no)),
optdef(oc_internal, pretest_equality_cast_pointers, bool(no)),
optdef(oc_internal, delay_partial_instantiations, bool(no)),
optdef(oc_internal, allow_defn_of_builtins, bool(no)),
optdef(oc_internal, type_ctor_info, bool(yes)),
optdef(oc_internal, type_ctor_layout, bool(yes)),
optdef(oc_internal, type_ctor_functors, bool(yes)),
optdef(oc_internal, rtti_line_numbers, bool(yes)),
optdef(oc_internal, new_type_class_rtti, bool(no)),
optdef(oc_internal, disable_minimal_model_stack_copy_pneg, bool(no)),
optdef(oc_internal, disable_minimal_model_stack_copy_cut, bool(no)),
optdef(oc_internal, use_minimal_model_stack_copy_pneg, bool(no)),
optdef(oc_internal, use_minimal_model_stack_copy_cut, bool(no)),
optdef(oc_internal, disable_trail_ops, bool(no)),
optdef(oc_internal, size_region_ite_fixed, int(4)),
optdef(oc_internal, size_region_disj_fixed, int(4)),
optdef(oc_internal, size_region_commit_fixed, int(5)),
optdef(oc_internal, size_region_ite_protect, int(1)),
optdef(oc_internal, size_region_ite_snapshot, int(3)),
optdef(oc_internal, size_region_semi_disj_protect, int(1)),
optdef(oc_internal, size_region_disj_snapshot, int(3)),
optdef(oc_internal, size_region_commit_entry, int(1)),
optdef(oc_internal, allow_multi_arm_switches, bool(yes)),
optdef(oc_internal, type_check_constraints, bool(no)),
optdef(oc_codegen, low_level_debug, bool(no)),
optdef(oc_codegen, table_debug, bool(no)),
optdef(oc_codegen, trad_passes, bool(yes)),
optdef(oc_codegen, parallel_liveness, bool(no)),
optdef(oc_codegen, parallel_code_gen, bool(no)),
optdef(oc_codegen, reclaim_heap_on_failure, bool_special),
optdef(oc_codegen, reclaim_heap_on_semidet_failure, bool(yes)),
optdef(oc_codegen, reclaim_heap_on_nondet_failure, bool(yes)),
optdef(oc_codegen, have_delay_slot, bool(no)),
optdef(oc_codegen, num_real_r_regs, int(5)),
optdef(oc_codegen, num_real_f_regs, int(0)),
optdef(oc_codegen, num_real_r_temps, int(5)),
optdef(oc_codegen, num_real_f_temps, int(0)),
optdef(oc_codegen, max_jump_table_size, int(0)),
optdef(oc_codegen, max_specialized_do_call_closure, int(5)),
optdef(oc_codegen, max_specialized_do_call_class_method, int(6)),
optdef(oc_codegen, compare_specialization, int(-1)),
optdef(oc_codegen, should_pretest_equality, bool(yes)),
optdef(oc_codegen, fact_table_max_array_size, int(1024)),
optdef(oc_codegen, fact_table_hash_percent_full, int(90)),
optdef(oc_codegen, prefer_switch, bool(yes)),
optdef(oc_codegen, prefer_while_loop_over_jump_self, bool(yes)),
optdef(oc_codegen, prefer_while_loop_over_jump_mutual, bool(no)),
optdef(oc_codegen, opt_no_return_calls, bool(yes)),
optdef(oc_codegen, debug_class_init, bool(no)),
optdef(oc_spec_opt, default_opt_level, string("-o2")),
optdef(oc_spec_opt, opt_level, int_special),
optdef(oc_spec_opt, opt_space, special),
optdef(oc_spec_opt, intermodule_optimization, bool(no)),
optdef(oc_spec_opt, read_opt_files_transitively, bool(yes)),
optdef(oc_spec_opt, use_opt_files, bool(no)),
optdef(oc_spec_opt, use_trans_opt_files, bool(no)),
optdef(oc_spec_opt, transitive_optimization, bool(no)),
optdef(oc_spec_opt, intermodule_analysis, bool(no)),
optdef(oc_spec_opt, analysis_repeat, int(0)),
optdef(oc_spec_opt, analysis_file_cache, bool(no)),
optdef(oc_spec_opt, termination_check, bool(no)),
optdef(oc_spec_opt, termination_check_verbose, bool(no)),
optdef(oc_spec_opt, structure_sharing_analysis, bool(no)),
optdef(oc_spec_opt, structure_sharing_widening, int(0)),
optdef(oc_spec_opt, structure_reuse_analysis, bool(no)),
optdef(oc_spec_opt, structure_reuse_constraint,
string("within_n_cells_difference")),
optdef(oc_spec_opt, structure_reuse_constraint_arg, int(0)),
optdef(oc_spec_opt, structure_reuse_max_conditions, int(10)),
optdef(oc_spec_opt, structure_reuse_repeat, int(0)),
optdef(oc_spec_opt, structure_reuse_free_cells, bool(no)),
optdef(oc_spec_opt, termination, bool(no)),
optdef(oc_spec_opt, termination_single_args, int(0)),
optdef(oc_spec_opt, termination_norm, string("total")),
optdef(oc_spec_opt, termination_error_limit, int(3)),
optdef(oc_spec_opt, termination_path_limit, int(256)),
optdef(oc_spec_opt, termination2, bool(no)),
optdef(oc_spec_opt, termination2_norm, string("total")),
optdef(oc_spec_opt, termination2_check, bool(no)),
optdef(oc_spec_opt, termination2_check_verbose, bool(no)),
optdef(oc_spec_opt, widening_limit, int(4)),
optdef(oc_spec_opt, arg_size_analysis_only, bool(no)),
optdef(oc_spec_opt, propagate_failure_constrs, bool(yes)),
optdef(oc_spec_opt, term2_maximum_matrix_size, int(70)),
optdef(oc_spec_opt, analyse_exceptions, bool(no)),
optdef(oc_spec_opt, analyse_closures, bool(no)),
optdef(oc_spec_opt, analyse_trail_usage, bool(no)),
optdef(oc_spec_opt, optimize_trail_usage, bool(no)),
optdef(oc_spec_opt, optimize_region_ops, bool(no)),
optdef(oc_spec_opt, analyse_mm_tabling, bool(no)),
optdef(oc_opt, optopt_allow_inlining, bool_special),
optdef(oc_opt, inlining, bool_special),
optdef(oc_opt, optopt_inline_simple, bool_special),
optdef(oc_opt, optopt_inline_builtins, bool_special),
optdef(oc_opt, optopt_inline_single_use, bool_special),
optdef(oc_opt, optopt_inline_call_cost, int_special),
optdef(oc_opt, optopt_inline_compound_threshold, int_special),
optdef(oc_opt, optopt_inline_simple_threshold, int_special),
optdef(oc_opt, optopt_inline_vars_threshold, int_special),
optdef(oc_opt, optopt_intermod_inline_simple_threshold, int_special),
optdef(oc_opt, optopt_inline_linear_tail_rec_sccs, bool_special),
optdef(oc_opt, optopt_inline_linear_tail_rec_sccs_max_extra, int_special),
optdef(oc_opt, optopt_from_ground_term_threshold, int_special),
optdef(oc_opt, optopt_enable_const_struct_poly, bool_special),
optdef(oc_opt, optopt_enable_const_struct_user, bool_special),
optdef(oc_opt, optopt_common_struct, bool_special),
optdef(oc_opt, optopt_constraint_propagation, bool_special),
optdef(oc_opt, optopt_local_constraint_propagation, bool_special),
optdef(oc_opt, optopt_optimize_duplicate_calls, bool_special),
optdef(oc_opt, optopt_constant_propagation, bool_special),
optdef(oc_opt, optopt_excess_assign, bool_special),
optdef(oc_opt, optopt_test_after_switch, bool_special),
optdef(oc_opt, optopt_optimize_format_calls, bool_special),
optdef(oc_opt, optopt_loop_invariants, bool_special),
optdef(oc_opt, optopt_optimize_saved_vars_const, bool_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell, bool_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_loop, bool_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_full_path, bool_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_on_stack, bool_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_candidate_headvars, bool_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_cv_store_cost, int_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_cv_load_cost, int_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_fv_store_cost, int_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_fv_load_cost, int_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_op_ratio, int_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_node_ratio, int_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_all_path_node_ratio, int_special),
optdef(oc_opt, optopt_optimize_saved_vars_cell_include_all_candidates, bool_special),
optdef(oc_opt, optimize_saved_vars, bool_special),
optdef(oc_opt, optopt_delay_construct, bool_special),
optdef(oc_opt, optopt_follow_code, bool_special),
optdef(oc_opt, optopt_optimize_unused_args, bool_special),
optdef(oc_opt, optopt_intermod_unused_args, bool_special),
optdef(oc_opt, optopt_optimize_higher_order, bool_special),
optdef(oc_opt, optopt_higher_order_size_limit, int_special),
optdef(oc_opt, optopt_higher_order_arg_limit, int_special),
optdef(oc_opt, optopt_unneeded_code, bool_special),
optdef(oc_opt, optopt_unneeded_code_copy_limit, int_special),
optdef(oc_opt, optopt_type_specialization, bool_special),
optdef(oc_opt, optopt_user_guided_type_specialization, bool_special),
optdef(oc_opt, optopt_introduce_accumulators, bool_special),
optdef(oc_opt, optopt_optimize_constructor_last_call_accumulator, bool_special),
optdef(oc_opt, optopt_optimize_constructor_last_call_null, bool_special),
optdef(oc_opt, optopt_optimize_constructor_last_call, bool_special),
optdef(oc_opt, optopt_optimize_dead_procs, bool_special),
optdef(oc_opt, optopt_deforestation, bool_special),
optdef(oc_opt, optopt_deforestation_depth_limit, int_special),
optdef(oc_opt, optopt_deforestation_cost_factor, int_special),
optdef(oc_opt, optopt_deforestation_vars_threshold, int_special),
optdef(oc_opt, optopt_deforestation_size_threshold, int_special),
optdef(oc_opt, optopt_untuple, bool_special),
optdef(oc_opt, optopt_tuple, bool_special),
optdef(oc_opt, optopt_tuple_trace_counts_file, string_special),
optdef(oc_opt, optopt_tuple_costs_ratio, int_special),
optdef(oc_opt, optopt_tuple_min_args, int_special),
optdef(oc_opt, optopt_inline_par_builtins, bool_special),
optdef(oc_opt, optopt_always_specialize_in_dep_par_conjs, bool_special),
optdef(oc_opt, optopt_allow_some_paths_only_waits, bool_special),
optdef(oc_opt, optopt_region_analysis, bool_special),
optdef(oc_opt, optopt_smart_indexing, bool_special),
optdef(oc_opt, optopt_smart_atomic_indexing, bool_special),
optdef(oc_opt, optopt_smart_string_indexing, bool_special),
optdef(oc_opt, optopt_smart_tag_indexing, bool_special),
optdef(oc_opt, optopt_smart_float_indexing, bool_special),
optdef(oc_opt, optopt_dense_switch_req_density, int_special),
optdef(oc_opt, optopt_lookup_switch_req_density, int_special),
optdef(oc_opt, optopt_dense_switch_size, int_special),
optdef(oc_opt, optopt_lookup_switch_size, int_special),
optdef(oc_opt, optopt_string_trie_switch_size, int_special),
optdef(oc_opt, optopt_string_hash_switch_size, int_special),
optdef(oc_opt, optopt_string_binary_switch_size, int_special),
optdef(oc_opt, optopt_tag_switch_size, int_special),
optdef(oc_opt, optopt_try_switch_size, int_special),
optdef(oc_opt, optopt_binary_switch_size, int_special),
optdef(oc_opt, optopt_switch_single_rec_base_first, bool_special),
optdef(oc_opt, optopt_switch_multi_rec_base_first, bool_special),
optdef(oc_opt, optopt_static_ground_cells, bool_special),
optdef(oc_opt, optopt_static_ground_floats, bool_special),
optdef(oc_opt, optopt_static_ground_int64s, bool_special),
optdef(oc_opt, optopt_static_code_addresses, bool_special),
optdef(oc_opt, optopt_use_atomic_cells, bool_special),
optdef(oc_opt, optopt_middle_rec, bool_special),
optdef(oc_opt, optopt_simple_neg, bool_special),
optdef(oc_opt, optopt_allow_hijacks, bool_special),
optdef(oc_opt, optopt_optimize_mlds_tailcalls, bool_special),
optdef(oc_opt, optopt_optimize_initializations, bool_special),
optdef(oc_opt, optopt_eliminate_unused_mlds_assigns, bool_special),
optdef(oc_opt, optopt_eliminate_local_vars, bool_special),
optdef(oc_opt, optopt_generate_trail_ops_inline, bool_special),
optdef(oc_opt, optopt_common_data, bool_special),
optdef(oc_opt, optopt_common_layout_data, bool_special),
optdef(oc_opt, optopt_optimize, bool_special),
optdef(oc_opt, optopt_optimize_peep, bool_special),
optdef(oc_opt, optopt_optimize_peep_mkword, bool_special),
optdef(oc_opt, optopt_optimize_jumps, bool_special),
optdef(oc_opt, optopt_optimize_fulljumps, bool_special),
optdef(oc_opt, optopt_pessimize_tailcalls, bool_special),
optdef(oc_opt, optopt_checked_nondet_tailcalls, bool_special),
optdef(oc_opt, optopt_use_local_vars, bool_special),
optdef(oc_opt, optopt_local_var_access_threshold, int_special),
optdef(oc_opt, optopt_standardize_labels, bool_special),
optdef(oc_opt, optopt_optimize_labels, bool_special),
optdef(oc_opt, optopt_optimize_dups, bool_special),
optdef(oc_opt, optopt_optimize_proc_dups, bool_special),
optdef(oc_opt, optopt_optimize_frames, bool_special),
optdef(oc_opt, optopt_optimize_delay_slot, bool_special),
optdef(oc_opt, optopt_optimize_reassign, bool_special),
optdef(oc_opt, optopt_optimize_repeat, int_special),
optdef(oc_opt, optopt_layout_compression_limit, int_special),
optdef(oc_opt, optopt_use_macro_for_redo_fail, bool_special),
optdef(oc_opt, optopt_emit_c_loops, bool_special),
optdef(oc_opt, optopt_procs_per_c_function, int_special),
optdef(oc_opt, everything_in_one_c_function, special),
optdef(oc_opt, optopt_local_thread_engine_base, bool_special),
optdef(oc_opt, optopt_inline_alloc, bool_special),
optdef(oc_opt, optopt_c_optimize, bool_special),
optdef(oc_target_comp, target_debug, bool(no)),
optdef(oc_target_comp, cc, string("gcc")),
optdef(oc_target_comp, c_include_directory, accumulating([])),
optdef(oc_target_comp, ansi_c, bool(yes)),
optdef(oc_target_comp, cflags, accumulating([])),
optdef(oc_target_comp, quoted_cflag, string_special),
optdef(oc_target_comp, gcc_flags, accumulating([])),
optdef(oc_target_comp, quoted_gcc_flag, string_special),
optdef(oc_target_comp, clang_flags, accumulating([])),
optdef(oc_target_comp, quoted_clang_flag, string_special),
optdef(oc_target_comp, msvc_flags, accumulating([])),
optdef(oc_target_comp, quoted_msvc_flag, string_special),
optdef(oc_target_comp, cflags_for_warnings, string("")),
optdef(oc_target_comp, cflags_for_sanitizers, string("")),
optdef(oc_target_comp, cflags_for_optimization, string("-o")),
optdef(oc_target_comp, cflags_for_ansi, string("")),
optdef(oc_target_comp, cflags_for_regs, string("")),
optdef(oc_target_comp, cflags_for_gotos, string("")),
optdef(oc_target_comp, cflags_for_threads, string("")),
optdef(oc_target_comp, cflags_for_debug, string("-g")),
optdef(oc_target_comp, cflags_for_pic, string("")),
optdef(oc_target_comp, cflags_for_lto, string("")),
optdef(oc_target_comp, c_flag_to_name_object_file, string("-o ")),
optdef(oc_target_comp, object_file_extension, string(".o")),
optdef(oc_target_comp, pic_object_file_extension, string(".o")),
optdef(oc_target_comp, c_compiler_type, string("gcc")),
optdef(oc_target_comp, csharp_compiler_type, string("mono")),
optdef(oc_target_comp, java_compiler, string("javac")),
optdef(oc_target_comp, java_interpreter, string("java")),
optdef(oc_target_comp, java_compiler_flags, accumulating([])),
optdef(oc_target_comp, quoted_java_compiler_flag, string_special),
optdef(oc_target_comp, java_classpath, accumulating([])),
optdef(oc_target_comp, java_object_file_extension, string(".class")),
optdef(oc_target_comp, java_runtime_flags, accumulating([])),
optdef(oc_target_comp, quoted_java_runtime_flag, string_special),
optdef(oc_target_comp, csharp_compiler, string("csc")),
optdef(oc_target_comp, csharp_flags, accumulating([])),
optdef(oc_target_comp, quoted_csharp_flag, string_special),
optdef(oc_target_comp, cli_interpreter, string("")),
optdef(oc_link, output_file_name, string("")),
optdef(oc_link, ld_flags, accumulating([])),
optdef(oc_link, quoted_ld_flag, string_special),
optdef(oc_link, ld_libflags, accumulating([])),
optdef(oc_link, quoted_ld_libflag, string_special),
optdef(oc_link, link_library_directories, accumulating([])),
optdef(oc_link, runtime_link_library_directories, accumulating([])),
optdef(oc_link, default_runtime_library_directory, bool(yes)),
optdef(oc_link, link_libraries, accumulating([])),
optdef(oc_link, link_objects, accumulating([])),
optdef(oc_link, mercury_library_directory_special, string_special),
optdef(oc_link, mercury_library_directories, accumulating([])),
optdef(oc_link, search_library_files_directory_special, string_special),
optdef(oc_link, search_library_files_directories, accumulating([])),
optdef(oc_link, mercury_library_special, string_special),
optdef(oc_link, mercury_libraries, accumulating([])),
optdef(oc_link, mercury_standard_library_directory, maybe_string(no)),
optdef(oc_link, mercury_standard_library_directory_special, maybe_string_special),
optdef(oc_link, init_file_directories, accumulating([])),
optdef(oc_link, init_files, accumulating([])),
optdef(oc_link, trace_init_files, accumulating([])),
optdef(oc_link, linkage, string("shared")),
optdef(oc_link, linkage_special, string_special),
optdef(oc_link, mercury_linkage, string("shared")),
optdef(oc_link, mercury_linkage_special, string_special),
optdef(oc_link, demangle, bool(yes)),
optdef(oc_link, strip, bool(yes)),
optdef(oc_link, main, bool(yes)),
optdef(oc_link, allow_undefined, bool(yes)),
optdef(oc_link, use_readline, bool(yes)),
optdef(oc_link, runtime_flags, accumulating([])),
optdef(oc_link, extra_initialization_functions, bool(no)),
optdef(oc_link, frameworks, accumulating([])),
optdef(oc_link, framework_directories, accumulating([])),
optdef(oc_link, sign_assembly, string("")),
optdef(oc_link, cstack_reserve_size, int(-1)),
optdef(oc_link, shared_library_extension, string(".so")),
optdef(oc_link, library_extension, string(".a")),
optdef(oc_link, executable_file_extension, string("")),
optdef(oc_link, link_executable_command, string("gcc")),
optdef(oc_link, link_shared_lib_command, string("gcc -shared")),
optdef(oc_link, create_archive_command, string("ar")),
optdef(oc_link, create_archive_command_output_flag, string("")),
optdef(oc_link, create_archive_command_flags, accumulating([])),
optdef(oc_link, ranlib_command, string("")),
optdef(oc_link, ranlib_flags, string("")),
optdef(oc_link, mkinit_command, string("mkinit")),
optdef(oc_link, mkinit_erl_command, string("mkinit_erl")),
optdef(oc_link, demangle_command, string("mdemangle")),
optdef(oc_link, filtercc_command, string("mfiltercc")),
optdef(oc_link, filterjavac_command, string("mfilterjavac")),
optdef(oc_link, trace_libs, string("")),
optdef(oc_link, thread_libs, string("")),
optdef(oc_link, hwloc_libs, string("")),
optdef(oc_link, hwloc_static_libs, string("")),
optdef(oc_link, shared_libs, string("")),
optdef(oc_link, math_lib, string("")),
optdef(oc_link, readline_libs, string("")),
optdef(oc_link, linker_opt_separator, string("")),
optdef(oc_link, linker_debug_flags, string("-g")),
optdef(oc_link, shlib_linker_debug_flags, string("-g")),
optdef(oc_link, linker_sanitizer_flags, string("")),
optdef(oc_link, linker_trace_flags, string("")),
optdef(oc_link, shlib_linker_trace_flags, string("")),
optdef(oc_link, linker_thread_flags, string("")),
optdef(oc_link, shlib_linker_thread_flags, string("")),
optdef(oc_link, linker_lto_flags, string("")),
optdef(oc_link, linker_static_flags, string("-static")),
optdef(oc_link, linker_strip_flag, string("-s")),
optdef(oc_link, linker_link_lib_flag, string("-l")),
optdef(oc_link, linker_link_lib_suffix, string("")),
optdef(oc_link, shlib_linker_link_lib_flag, string("-l")),
optdef(oc_link, shlib_linker_link_lib_suffix, string("")),
optdef(oc_link, linker_path_flag, string("-l")),
optdef(oc_link, linker_rpath_flag, string("-wl,-rpath")),
optdef(oc_link, linker_rpath_separator, string(" -wl,-rpath")),
optdef(oc_link, shlib_linker_rpath_flag, string("-wl,-rpath")),
optdef(oc_link, shlib_linker_rpath_separator, string(" -wl,-rpath")),
optdef(oc_link, linker_allow_undefined_flag, string("")),
optdef(oc_link, linker_error_undefined_flag, string("-wl,-no-undefined")),
optdef(oc_link, shlib_linker_use_install_name, bool(no)),
optdef(oc_link, shlib_linker_install_name_flag, string("-install_name ")),
optdef(oc_link, shlib_linker_install_name_path, string("")),
optdef(oc_link, strip_executable_command, string("")),
optdef(oc_link, strip_executable_shared_flags, string("")),
optdef(oc_link, strip_executable_static_flags, string("")),
optdef(oc_link, java_archive_command, string("jar")),
optdef(oc_buildsys, only_opmode_make, bool(no)),
optdef(oc_buildsys, rebuild, bool(no)),
optdef(oc_buildsys, keep_going, bool(no)),
optdef(oc_buildsys, jobs, int(1)),
optdef(oc_buildsys, track_flags, bool(no)),
optdef(oc_buildsys, invoked_by_mmc_make, bool(no)),
optdef(oc_buildsys, pre_link_command, maybe_string(no)),
optdef(oc_buildsys, extra_init_command, maybe_string(no)),
optdef(oc_buildsys, install_prefix, string("/usr/local/")),
optdef(oc_buildsys, use_symlinks, bool(yes)),
optdef(oc_buildsys, mercury_configuration_directory_special, string_special),
optdef(oc_buildsys, mercury_configuration_directory, maybe_string(no)),
optdef(oc_buildsys, install_command, string("cp")),
optdef(oc_buildsys, install_command_dir_option, string("-r")),
optdef(oc_buildsys, detect_libgrades, bool(yes)),
optdef(oc_buildsys, libgrades, accumulating([])),
optdef(oc_buildsys, libgrades_include_components, accumulating([])),
optdef(oc_buildsys, libgrades_exclude_components, accumulating([])),
optdef(oc_buildsys, lib_linkages, accumulating([])),
optdef(oc_buildsys, flags_file, file_special),
optdef(oc_buildsys, options_files, accumulating(["mercury.options"])),
optdef(oc_buildsys, config_file, maybe_string(yes(""))),
optdef(oc_buildsys, options_search_directories, accumulating(["."])),
optdef(oc_buildsys, use_subdirs, bool(no)),
optdef(oc_buildsys, use_grade_subdirs, bool(no)),
optdef(oc_buildsys, search_directories, accumulating(["."])),
optdef(oc_buildsys, intermod_directories, accumulating([])),
optdef(oc_buildsys, use_search_directories_for_intermod, bool(yes)),
optdef(oc_buildsys, libgrade_install_check, bool(yes)),
optdef(oc_buildsys, order_make_by_timestamp, bool(no)),
optdef(oc_buildsys, show_make_times, bool(no)),
optdef(oc_buildsys, extra_library_header, accumulating([])),
optdef(oc_buildsys, restricted_command_line, bool(no)),
optdef(oc_buildsys, env_type, string_special),
optdef(oc_buildsys, host_env_type, string("posix")),
optdef(oc_buildsys, system_env_type, string("")),
optdef(oc_buildsys, target_env_type, string("posix")),
optdef(oc_misc, filenames_from_stdin, bool(no)),
optdef(oc_misc, typecheck_ambiguity_warn_limit, int(50)),
optdef(oc_misc, typecheck_ambiguity_error_limit, int(3000)),
optdef(oc_misc, help, bool(no)),
optdef(oc_misc, version, bool(no)),
optdef(oc_misc, target_arch, string("")),
optdef(oc_misc, cross_compiling, bool(no)),
optdef(oc_misc, local_module_id, accumulating([])),
optdef(oc_misc, analysis_file_cache_dir, string("")),
optdef(oc_misc, compiler_sufficiently_recent, bool(no)),
optdef(oc_misc, experiment, string("")),
optdef(oc_misc, experiment1, bool(no)),
optdef(oc_misc, experiment2, bool(no)),
optdef(oc_misc, experiment3, bool(no)),
optdef(oc_misc, experiment4, bool(no)),
optdef(oc_misc, experiment5, bool(no)),
optdef(oc_misc, ignore_par_conjunctions, bool(no)),
optdef(oc_misc, control_granularity, bool(no)),
optdef(oc_misc, distance_granularity, int(0)),
optdef(oc_misc, implicit_parallelism, bool(no)),
optdef(oc_misc, feedback_file, string("")),
optdef(oc_misc, par_loop_control, bool(no)),
optdef(oc_misc, par_loop_control_preserve_tail_recursion, bool(no)),
short_option('c', only_opmode_compile_only),
short_option('c', only_opmode_target_code_only),
short_option('d', dump_hlds),
short_option('d', dump_hlds_alias),
short_option('e', only_opmode_errorcheck_only),
short_option('e', verbose_errors),
short_option('f', only_opmode_generate_source_file_mapping),
short_option('f', framework_directories),
short_option('h', help),
short_option('h', highlevel_code),
short_option('i', only_opmode_make_interface),
short_option('j', jobs),
short_option('i', search_directories),
short_option('k', keep_going),
short_option('l', link_libraries),
short_option('l', link_library_directories),
short_option('m', only_opmode_make),
short_option('m', only_opmode_generate_dependencies),
short_option('n', line_numbers),
short_option('n', debug_modes),
short_option('o', output_file_name),
short_option('o', opt_level),
short_option('p', profiling),
short_option('p', only_opmode_convert_to_mercury),
short_option('r', rebuild),
short_option('r', runtime_link_library_directories),
short_option('s', grade),
short_option('s', statistics),
short_option('t', debug_types),
short_option('t', only_opmode_typecheck_only),
short_option('v', verbose),
short_option('v', very_verbose),
short_option('w', inhibit_warnings),
short_option('x', only_opmode_make_xml_documentation),
short_option('?', help),
long_option("inhibit-warnings", inhibit_warnings),
long_option("inhibit-style-warnings", inhibit_style_warnings),
long_option("warn-accumulator-swaps", warn_accumulator_swaps),
long_option("halt-at-warn", halt_at_warn),
long_option("halt-at-warn-make-int", halt_at_warn_make_int),
long_option("halt-at-warn-make-interface", halt_at_warn_make_int),
long_option("halt-at-warn-make-opt", halt_at_warn_make_opt),
long_option("halt-at-syntax-errors", halt_at_syntax_errors),
long_option("halt-at-auto-parallel-failure", halt_at_auto_parallel_failure),
long_option("halt-at-invalid-interface", halt_at_invalid_interface),
long_option("warn-singleton-variables", warn_singleton_vars),
long_option("warn-singleton-vars", warn_singleton_vars),
long_option("warn-overlapping-scopes", warn_overlapping_scopes),
long_option("warn-det-decls-too-lax", warn_det_decls_too_lax),
long_option("warn-inferred-erroneous", warn_inferred_erroneous),
long_option("warn-nothing-exported", warn_nothing_exported),
long_option("warn-unused-args", warn_unused_args),
long_option("warn-interface-imports", warn_interface_imports),
long_option("warn-interface-imports-in-parents",
warn_interface_imports_in_parents),
long_option("warn-inconsistent-pred-order",
warn_inconsistent_pred_order_clauses),
long_option("warn-inconsistent-pred-order-clauses",
warn_inconsistent_pred_order_clauses),
long_option("warn-inconsistent-pred-order-foreign-procs",
warn_inconsistent_pred_order_foreign_procs),
long_option("warn-non-contiguous-decls", warn_non_contiguous_decls),
long_option("warn-non-contiguous-clauses", warn_non_contiguous_clauses),
long_option("warn-non-contiguous-foreign-procs",
warn_non_contiguous_foreign_procs),
long_option("warn-non-stratification", warn_non_stratification),
long_option("warn-missing-opt-files", warn_missing_opt_files),
long_option("warn-missing-trans-opt-files", warn_missing_trans_opt_files),
long_option("warn-missing-trans-opt-deps", warn_missing_trans_opt_deps),
long_option("warn-unification-cannot-succeed",
warn_unification_cannot_succeed),
long_option("warn-simple-code", warn_simple_code),
long_option("warn-duplicate-calls", warn_duplicate_calls),
long_option("warn-implicit-stream-calls", warn_implicit_stream_calls),
long_option("warn-missing-module-name", warn_missing_module_name),
long_option("warn-wrong-module-name", warn_wrong_module_name),
long_option("warn-smart-recompilation", warn_smart_recompilation),
long_option("warn-undefined-options-variables",
warn_undefined_options_variables),
long_option("warn-undefined-options-vars",
warn_undefined_options_variables),
long_option("warn-suspicious-recursion", warn_suspicious_recursion),
long_option("warn-non-tail-recursion-self",
warn_non_tail_recursion_self),
long_option("warn-non-tail-recursion-mutual",
warn_non_tail_recursion_mutual),
long_option("warn-non-tail-recursion", warn_non_tail_recursion),
long_option("warn-obvious-non-tail-recursion",
warn_obvious_non_tail_recursion),
long_option("warn-target-code", warn_target_code),
long_option("warn-up-to-date", warn_up_to_date),
long_option("warn-stubs", warn_stubs),
long_option("warn-dead-procs", warn_dead_procs),
long_option("warn-dead-procedures", warn_dead_procs),
long_option("warn-dead-preds", warn_dead_preds),
long_option("warn-dead-predicates", warn_dead_preds),
long_option("warn-table-with-inline", warn_table_with_inline),
long_option("warn-non-term-special-preds", warn_non_term_special_preds),
long_option("warn-known-bad-format-calls", warn_known_bad_format_calls),
long_option("warn-only-one-format-string-error",
warn_only_one_format_string_error),
long_option("warn-unknown-format-calls", warn_unknown_format_calls),
long_option("warn-obsolete", warn_obsolete),
long_option("warn-insts-without-matching-type",
warn_insts_without_matching_type),
long_option("warn-insts-with-functors-without-type",
warn_insts_with_functors_without_type),
long_option("warn-unused-imports", warn_unused_imports),
long_option("warn-unused-interface-imports", warn_unused_interface_imports),
long_option("inform-ite-instead-of-switch", inform_ite_instead_of_switch),
long_option("inform-incomplete-switch", inform_incomplete_switch),
long_option("inform-incomplete-switch-threshold",
inform_incomplete_switch_threshold),
long_option("warn-unresolved-polymorphism", warn_unresolved_polymorphism),
long_option("warn-suspicious-foreign-procs", warn_suspicious_foreign_procs),
long_option("warn-suspicious-foreign-code", warn_suspicious_foreign_code),
long_option("warn-state-var-shadowing", warn_state_var_shadowing),
long_option("warn-unneeded-mode-specific-clause",
warn_unneeded_mode_specific_clause),
long_option("warn-suspected-occurs-failure",
warn_suspected_occurs_check_failure),
long_option("warn-suspected-occurs-check-failure",
warn_suspected_occurs_check_failure),
long_option("warn-potentially-ambiguous-pragma",
warn_potentially_ambiguous_pragma),
long_option("warn-potentially-ambiguous-pragmas",
warn_potentially_ambiguous_pragma),
long_option("warn-ambiguous-pragma", warn_ambiguous_pragma),
long_option("warn-ambiguous-pragmas", warn_ambiguous_pragma),
long_option("warn-stdlib-shadowing", warn_stdlib_shadowing),
long_option("inform-inferred", inform_inferred),
long_option("inform-inferred-types", inform_inferred_types),
long_option("inform-inferred-modes", inform_inferred_modes),
long_option("inform-suboptimal-packing", inform_suboptimal_packing),
long_option("print-error-spec-id", print_error_spec_id),
long_option("inform-ignored-pragma-errors", inform_ignored_pragma_errors),
long_option("verbose", verbose),
long_option("very-verbose", very_verbose),
long_option("verbose-error-messages", verbose_errors),
long_option("verbose-recompilation", verbose_recompilation),
long_option("find-all-recompilation-reasons",
find_all_recompilation_reasons),
long_option("verbose-make", verbose_make),
long_option("verbose-commands", verbose_commands),
long_option("output-compile-error-lines", output_compile_error_lines),
long_option("report-cmd-line-args", report_cmd_line_args),
long_option("report-cmd-line-args-in-doterr",
report_cmd_line_args_in_doterr),
long_option("statistics", statistics),
long_option("detailed-statistics", detailed_statistics),
long_option("proc-size-statistics", proc_size_statistics),
long_option("limit-error-contexts", limit_error_contexts),
long_option("debug-types", debug_types),
long_option("debug-types-pred-name", debug_types_pred_name),
long_option("debug-modes", debug_modes),
long_option("debug-modes-statistics", debug_modes_statistics),
long_option("debug-modes-minimal", debug_modes_minimal),
long_option("debug-modes-verbose", debug_modes_verbose),
long_option("debug-modes-pred-id", debug_modes_pred_id),
long_option("debug-dep-par-conj", debug_dep_par_conj),
long_option("debug-determinism", debug_det),
long_option("debug-det", debug_det),
long_option("debug-code-gen-pred-id", debug_code_gen_pred_id),
long_option("debug-termination", debug_term),
long_option("debug-term", debug_term),
long_option("debug-dead-proc-elim", debug_dead_proc_elim),
long_option("debug-higher-order-specialization",
debug_higher_order_specialization),
long_option("debug-opt", debug_opt),
long_option("debug-opt-pred-id", debug_opt_pred_id),
long_option("debug-opt-pred-name", debug_opt_pred_name),
long_option("debug-pd", debug_pd),
long_option("debug-liveness", debug_liveness),
long_option("debug-stack-opt", debug_stack_opt),
long_option("debug-make", debug_make),
long_option("debug-closure", debug_closure),
long_option("debug-trail-usage", debug_trail_usage),
long_option("debug-mode-constraints", debug_mode_constraints),
long_option("debug-intermodule-analysis", debug_intermodule_analysis),
long_option("debug-mm-tabling-analysis", debug_mm_tabling_analysis),
long_option("debug-indirect-reuse", debug_indirect_reuse),
long_option("debug-type-rep", debug_type_rep),
long_option("generate-source-file-mapping",
only_opmode_generate_source_file_mapping),
long_option("generate-dependency-file", only_opmode_generate_dependency_file),
long_option("generate-dependencies", only_opmode_generate_dependencies),
long_option("generate-module-order", generate_module_order),
long_option("generate-standalone-interface", generate_standalone_interface),
long_option("make-short-interface", only_opmode_make_short_interface),
long_option("make-short-int", only_opmode_make_short_interface),
long_option("make-interface", only_opmode_make_interface),
long_option("make-int", only_opmode_make_interface),
long_option("make-private-interface", only_opmode_make_private_interface),
long_option("make-priv-int", only_opmode_make_private_interface),
long_option("make-optimization-interface",
only_opmode_make_optimization_interface),
long_option("make-optimisation-interface",
only_opmode_make_optimization_interface),
long_option("make-opt-int",
only_opmode_make_optimization_interface),
long_option("make-transitive-optimization-interface",
only_opmode_make_transitive_opt_interface),
long_option("make-transitive-optimisation-interface",
only_opmode_make_transitive_opt_interface),
long_option("make-trans-opt",
only_opmode_make_transitive_opt_interface),
long_option("make-analysis-registry", only_opmode_make_analysis_registry),
long_option("make-xml-doc", only_opmode_make_xml_documentation),
long_option("make-xml-documentation", only_opmode_make_xml_documentation),
long_option("convert-to-mercury", only_opmode_convert_to_mercury),
long_option("convert-to-mercury", only_opmode_convert_to_mercury),
long_option("pretty-print", only_opmode_convert_to_mercury),
long_option("typecheck-only", only_opmode_typecheck_only),
long_option("errorcheck-only", only_opmode_errorcheck_only),
long_option("target-code-only", only_opmode_target_code_only),
long_option("compile-only", only_opmode_compile_only),
long_option("compile-to-shared-lib", compile_to_shared_lib),
long_option("output-grade-string", only_opmode_output_grade_string),
long_option("output-link-command", only_opmode_output_link_command),
long_option("output-shared-lib-link-command",
only_opmode_output_shared_lib_link_command),
long_option("output-stdlib-grades", only_opmode_output_stdlib_grades),
long_option("output-libgrades", only_opmode_output_libgrades),
long_option("output-cc", only_opmode_output_cc),
long_option("output-cc-type", only_opmode_output_c_compiler_type),
long_option("output-c-compiler-type", only_opmode_output_c_compiler_type),
long_option("output-csharp-compiler", only_opmode_output_csharp_compiler),
long_option("output-csharp-compiler-type",
only_opmode_output_csharp_compiler_type),
long_option("output-cflags", only_opmode_output_cflags),
long_option("output-library-link-flags",
only_opmode_output_library_link_flags),
long_option("output-grade-defines", only_opmode_output_grade_defines),
long_option("output-c-include-directory-flags",
only_opmode_output_c_include_directory_flags),
long_option("output-c-include-dir-flags",
only_opmode_output_c_include_directory_flags),
long_option("output-target-arch", only_opmode_output_target_arch),
long_option("output-class-directory", only_opmode_output_java_class_dir),
long_option("output-class-dir", only_opmode_output_java_class_dir),
long_option("output-java-class-directory", only_opmode_output_java_class_dir),
long_option("output-java-class-dir", only_opmode_output_java_class_dir),
long_option("output-stdlib-modules", only_opmode_output_stdlib_modules),
long_option("smart-recompilation", smart_recompilation),
long_option("generate-mmc-make-module-dependencies",
generate_mmc_make_module_dependencies),
long_option("generate-mmc-deps", generate_mmc_make_module_dependencies),
long_option("ssdb-trace", ssdb_trace_level),
long_option("link-ssdb-libs", link_ssdb_libs),
long_option("link-ssdebug-libs", link_ssdb_libs),
long_option("trace", trace_level),
long_option("trace-optimised", trace_optimized),
long_option("trace-optimized", trace_optimized),
long_option("trace-prof", trace_prof),
long_option("trace-table-io", trace_table_io),
long_option("trace-table-io-only-retry", trace_table_io_only_retry),
long_option("trace-table-io-states", trace_table_io_states),
long_option("trace-table-io-require", trace_table_io_require),
long_option("trace-table-io-all", trace_table_io_all),
long_option("trace-flag", trace_goal_flags),
long_option("profile-optimised", prof_optimized),
long_option("profile-optimized", prof_optimized),
long_option("exec-trace-tail-rec", exec_trace_tail_rec),
long_option("suppress-trace", suppress_trace),
long_option("force-disable-tracing", force_disable_tracing),
long_option("delay-death", delay_death),
long_option("delay-death-max-vars", delay_death_max_vars),
long_option("stack-trace-higher-order", stack_trace_higher_order),
long_option("force-disable-ssdebug", force_disable_ssdebug),
long_option("generate-bytecode", generate_bytecode),
long_option("line-numbers", line_numbers),
long_option("line-numbers-around-foreign-code",
line_numbers_around_foreign_code),
long_option("line-numbers-for-c-headers", line_numbers_for_c_headers),
long_option("type-repns-for-humans", type_repns_for_humans),
long_option("auto-comments", auto_comments),
long_option("frameopt-comments", frameopt_comments),
long_option("max-error-line-width", max_error_line_width),
long_option("show-definitions", show_definitions),
long_option("show-definition-line-counts", show_definition_line_counts),
long_option("show-definition-extents", show_definition_extents),
long_option("show-all-type-repns", show_all_type_repns),
long_option("show-all-type-representations", show_all_type_repns),
long_option("show-local-type-repns", show_local_type_repns),
long_option("show-local-type-representations", show_local_type_repns),
long_option("show-developer-type-repns", show_developer_type_repns),
long_option("show-developer-type-representations", show_developer_type_repns),
long_option("show-dependency-graph", show_dependency_graph),
long_option("imports-graph", imports_graph),
long_option("dump-trace-counts", dump_trace_counts),
long_option("dump-hlds", dump_hlds),
long_option("hlds-dump", dump_hlds),
long_option("dump-hlds-pred-id", dump_hlds_pred_id),
long_option("dump-hlds-pred-name", dump_hlds_pred_name),
long_option("dump-hlds-pred-name-order", dump_hlds_pred_name_order),
long_option("dump-hlds-alias", dump_hlds_alias),
long_option("dump-hlds-spec-preds", dump_hlds_spec_preds),
long_option("dump-hlds-spec-preds-for", dump_hlds_spec_preds_for),
long_option("dump-hlds-options", dump_hlds_options),
long_option("dump-hlds-inst-limit", dump_hlds_inst_limit),
long_option("dump-hlds-file-suffix", dump_hlds_file_suffix),
long_option("dump-same-hlds", dump_same_hlds),
long_option("dump-mlds", dump_mlds),
long_option("dump-mlds-pred-name", dump_mlds_pred_name),
long_option("mlds-dump", dump_mlds),
long_option("verbose-dump-mlds", verbose_dump_mlds),
long_option("verbose-mlds-dump", verbose_dump_mlds),
long_option("dump-options-file", dump_options_file),
long_option("mode-constraints", mode_constraints),
long_option("simple-mode-constraints", simple_mode_constraints),
long_option("prop-mode-constraints", prop_mode_constraints),
long_option("compute-goal-modes", compute_goal_modes),
long_option("propagate-mode-constraints", prop_mode_constraints),
long_option("benchmark-modes", benchmark_modes),
long_option("benchmark-modes-repeat", benchmark_modes_repeat),
long_option("unneeded-code-debug", unneeded_code_debug),
long_option("unneeded-code-debug-pred-name", unneeded_code_debug_pred_name),
long_option("common-struct-preds", common_struct_preds),
long_option("reorder-conj", reorder_conj),
long_option("reorder-disj", reorder_disj),
long_option("fully-strict", fully_strict),
long_option("strict-sequential", strict_sequential),
long_option("allow-stubs", allow_stubs),
long_option("infer-all", infer_all),
long_option("infer-types", infer_types),
long_option("infer-modes", infer_modes),
long_option("infer-determinism", infer_det),
long_option("infer-det", infer_det),
long_option("type-inference-iteration-limit", type_inference_iteration_limit),
long_option("mode-inference-iteration-limit", mode_inference_iteration_limit),
long_option("event-set-file-name", event_set_file_name),
long_option("grade", grade),
long_option("target", target),
long_option("compile-to-c", compile_to_c),
long_option("compile-to-c", compile_to_c),
long_option("java", java),
long_option("java", java),
long_option("java-only", java_only),
long_option("java-only", java_only),
long_option("csharp", csharp),
long_option("c#", csharp),
long_option("csharp-only", csharp_only),
long_option("c#-only", csharp_only),
long_option("debug", exec_trace),
long_option("decl-debug", decl_debug),
long_option("ssdb", source_to_source_debug),
long_option("ss-debug", source_to_source_debug),
long_option("source-to-source-debug", source_to_source_debug),
long_option("profiling", profiling),
long_option("time-profiling", time_profiling),
long_option("memory-profiling", memory_profiling),
long_option("deep-profiling", deep_profiling),
long_option("profile-calls", profile_calls),
long_option("profile-time", profile_time),
long_option("profile-memory", profile_memory),
long_option("profile-deep", profile_deep),
long_option("use-activation-counts", use_activation_counts),
long_option("pre-prof-transforms-simplify", pre_prof_transforms_simplify),
long_option("pre-implicit-parallelism-simplify",
pre_implicit_parallelism_simplify),
long_option("coverage-profiling", coverage_profiling),
long_option("coverage-profiling-via-calls",
coverage_profiling_via_calls),
long_option("coverage-profiling-static",
coverage_profiling_static),
long_option("profile-deep-coverage-after-goal",
profile_deep_coverage_after_goal),
long_option("profile-deep-coverage-branch-ite",
profile_deep_coverage_branch_ite),
long_option("profile-deep-coverage-branch-switch",
profile_deep_coverage_branch_switch),
long_option("profile-deep-coverage-branch-disj",
profile_deep_coverage_branch_disj),
long_option("profile-deep-coverage-use-portcounts",
profile_deep_coverage_use_portcounts),
long_option("profile-deep-coverage-use-trivial",
profile_deep_coverage_use_trivial),
long_option("profile-for-implicit-parallelism",
profile_for_feedback),
long_option("profile-for-feedback",
profile_for_feedback),
long_option("use-zeroing-for-ho-cycles",
use_zeroing_for_ho_cycles),
long_option("use-lots-of-ho-specialization",
use_lots_of_ho_specialization),
long_option("deep-profile-tail-recursion",
deep_profile_tail_recursion),
long_option("record-term-sizes-as-words", record_term_sizes_as_words),
long_option("record-term-sizes-as-cells", record_term_sizes_as_cells),
long_option("experimental-complexity", experimental_complexity),
long_option("gc", gc),
long_option("garbage-collection", gc),
long_option("parallel", parallel),
long_option("use-trail", use_trail),
long_option("type-layout", type_layout),
long_option("maybe-thread-safe", maybe_thread_safe_opt),
long_option("extend-stacks-when-needed", extend_stacks_when_needed),
long_option("stack-segments", stack_segments),
long_option("use-regions", use_regions),
long_option("use-alloc-regions", use_alloc_regions),
long_option("use-regions-debug", use_regions_debug),
long_option("use-regions-profiling",use_regions_profiling),
long_option("use-minimal-model-stack-copy", use_minimal_model_stack_copy),
long_option("use-minimal-model-own-stacks", use_minimal_model_own_stacks),
long_option("minimal-model-debug", minimal_model_debug),
long_option("pregenerated-dist", pregenerated_dist),
long_option("single-prec-float", single_prec_float),
long_option("single-precision-float", single_prec_float),
long_option("num-tag-bits", num_ptag_bits),
long_option("num-ptag-bits", num_ptag_bits),
long_option("bits-per-word", bits_per_word),
long_option("bytes-per-word", bytes_per_word),
long_option("conf-low-tag-bits", conf_low_ptag_bits),
long_option("conf-low-ptag-bits", conf_low_ptag_bits),
long_option("unboxed-float", unboxed_float),
long_option("unboxed-int64s", unboxed_int64s),
long_option("unboxed-no-tag-types", unboxed_no_tag_types),
long_option("arg-pack-bits", arg_pack_bits),
long_option("pack-everything", pack_everything),
long_option("allow-direct-args", allow_direct_args),
long_option("allow-double-word-fields", allow_double_word_fields),
long_option("allow-double-word-ints", allow_double_word_ints),
long_option("allow-packing-dummies", allow_packing_dummies),
long_option("allow-packing-ints", allow_packing_ints),
long_option("allow-packing-chars", allow_packing_chars),
long_option("allow-packing-local-sectags", allow_packing_local_sectags),
long_option("allow-packing-remote-sectags", allow_packing_remote_sectags),
long_option("allow-packing-mini-types", allow_packing_mini_types),
long_option("allow-packed-unify-compare", allow_packed_unify_compare),
long_option("sync-term-size", sync_term_size),
long_option("gcc-non-local-gotos", gcc_non_local_gotos),
long_option("gcc-global-registers", gcc_global_registers),
long_option("asm-labels", asm_labels),
long_option("use-float-registers", use_float_registers),
long_option("highlevel-code", highlevel_code),
long_option("high-level-code", highlevel_code),
long_option("highlevel-c", highlevel_code),
long_option("highlevel-c", highlevel_code),
long_option("high-level-c", highlevel_code),
long_option("high-level-c", highlevel_code),
long_option("det-copy-out", det_copy_out),
long_option("nondet-copy-out", nondet_copy_out),
long_option("put-commit-in-own-func", put_commit_in_own_func),
long_option("put-nondet-env-on-heap", put_nondet_env_on_heap),
long_option("backend-foreign-languages", backend_foreign_languages),
long_option("agc-stack-layout", agc_stack_layout),
long_option("basic-stack-layout", basic_stack_layout),
long_option("procid-stack-layout", procid_stack_layout),
long_option("trace-stack-layout", trace_stack_layout),
long_option("body-typeinfo-liveness", body_typeinfo_liveness),
long_option("can-compare-constants-as-ints", can_compare_constants_as_ints),
long_option("pretest-equality-cast-pointers", pretest_equality_cast_pointers),
long_option("delay-partial-instantiations", delay_partial_instantiations),
long_option("allow-defn-of-builtins", allow_defn_of_builtins),
long_option("type-ctor-info", type_ctor_info),
long_option("type-ctor-layout", type_ctor_layout),
long_option("type-ctor-functors", type_ctor_functors),
long_option("new-type-class-rtti", new_type_class_rtti),
long_option("rtti-line-numbers", rtti_line_numbers),
long_option("disable-mm-pneg", disable_minimal_model_stack_copy_pneg),
long_option("disable-mm-cut", disable_minimal_model_stack_copy_cut),
long_option("disable-trail-ops", disable_trail_ops),
long_option("size-region-ite-fixed", size_region_ite_fixed),
long_option("size-region-disj-fixed", size_region_disj_fixed),
long_option("size-region-commit-fixed", size_region_commit_fixed),
long_option("size-region-ite-protect", size_region_ite_protect),
long_option("size-region-ite-snapshot", size_region_ite_snapshot),
long_option("size-region-semi-disj-protect", size_region_semi_disj_protect),
long_option("size-region-disj-snapshot", size_region_disj_snapshot),
long_option("size-region-commit-entry", size_region_commit_entry),
long_option("allow-multi-arm-switches", allow_multi_arm_switches),
long_option("type-check-constraints", type_check_constraints),
long_option("low-level-debug", low_level_debug),
long_option("table-debug", table_debug),
long_option("trad-passes", trad_passes),
long_option("parallel-liveness", parallel_liveness),
long_option("parallel-code-gen", parallel_code_gen),
long_option("reclaim-heap-on-failure", reclaim_heap_on_failure),
long_option("reclaim-heap-on-semidet-failure",
reclaim_heap_on_semidet_failure),
long_option("reclaim-heap-on-nondet-failure",
reclaim_heap_on_nondet_failure),
long_option("branch-delay-slot", have_delay_slot),
long_option("have-delay-slot", have_delay_slot),
long_option("num-real-r-regs", num_real_r_regs),
long_option("num-real-f-regs", num_real_f_regs),
long_option("num-real-r-temps", num_real_r_temps),
long_option("num-real-f-temps", num_real_f_temps),
long_option("num-real-temps", num_real_r_temps),
long_option("max-jump-table-size", max_jump_table_size),
long_option("compare-specialization", compare_specialization),
long_option("should-pretest-equality", should_pretest_equality),
long_option("fact-table-max-array-size",fact_table_max_array_size),
long_option("fact-table-hash-percent-full",
fact_table_hash_percent_full),
long_option("prefer-switch", prefer_switch),
long_option("prefer-while-loop-over-jump-self",
prefer_while_loop_over_jump_self),
long_option("prefer-while-loop-over-jump-mutual",
prefer_while_loop_over_jump_mutual),
long_option("opt-no-return-calls", opt_no_return_calls),
long_option("debug-class-init", debug_class_init),
long_option("default-opt-level", default_opt_level),
long_option("opt-level", opt_level),
long_option("optimization-level", opt_level),
long_option("optimisation-level", opt_level),
long_option("opt-space", opt_space),
long_option("optimize-space", opt_space),
long_option("optimise-space", opt_space),
long_option("intermod-opt", intermodule_optimization),
long_option("intermodule-optimization", intermodule_optimization),
long_option("intermodule-optimisation", intermodule_optimization),
long_option("read-opt-files-transitively", read_opt_files_transitively),
long_option("use-opt-files", use_opt_files),
long_option("use-trans-opt-files", use_trans_opt_files),
long_option("transitive-intermodule-optimization",
transitive_optimization),
long_option("transitive-intermodule-optimisation",
transitive_optimization),
long_option("trans-intermod-opt", transitive_optimization),
long_option("intermodule-analysis", intermodule_analysis),
long_option("analysis-repeat", analysis_repeat),
long_option("analysis-file-cache", analysis_file_cache),
long_option("inlining", inlining),
long_option("inline-simple", optopt_inline_simple),
long_option("inline-builtins", optopt_inline_builtins),
long_option("inline-single-use", optopt_inline_single_use),
long_option("inline-call-cost", optopt_inline_call_cost),
long_option("inline-compound-threshold", optopt_inline_compound_threshold),
long_option("inline-simple-threshold", optopt_inline_simple_threshold),
long_option("intermod-inline-simple-threshold",
optopt_intermod_inline_simple_threshold),
long_option("inline-linear-tail-rec-sccs", optopt_inline_linear_tail_rec_sccs),
long_option("inline-linear-tail-rec-sccs-max-extra",
optopt_inline_linear_tail_rec_sccs_max_extra),
long_option("from-ground-term-threshold",
optopt_from_ground_term_threshold),
long_option("inline-vars-threshold", optopt_inline_vars_threshold),
long_option("const-struct", optopt_enable_const_struct_user),
long_option("common-struct", optopt_common_struct),
long_option("excess-assign", optopt_excess_assign),
long_option("test-after-switch", optopt_test_after_switch),
long_option("optimize-format-calls", optopt_optimize_format_calls),
long_option("optimize-duplicate-calls", optopt_optimize_duplicate_calls),
long_option("optimise-duplicate-calls", optopt_optimize_duplicate_calls),
long_option("optimise-constant-propagation", optopt_constant_propagation),
long_option("optimize-constant-propagation", optopt_constant_propagation),
long_option("optimize-saved-vars", optimize_saved_vars),
long_option("optimise-saved-vars", optimize_saved_vars),
long_option("loop-invariants", optopt_loop_invariants),
long_option("optimize-saved-vars-const", optopt_optimize_saved_vars_const),
long_option("optimise-saved-vars-const", optopt_optimize_saved_vars_const),
long_option("optimize-saved-vars-cell", optopt_optimize_saved_vars_cell),
long_option("optimise-saved-vars-cell", optopt_optimize_saved_vars_cell),
long_option("osv-loop", optopt_optimize_saved_vars_cell_loop),
long_option("osv-full-path", optopt_optimize_saved_vars_cell_full_path),
long_option("osv-on-stack", optopt_optimize_saved_vars_cell_on_stack),
long_option("osv-cand-head",
optopt_optimize_saved_vars_cell_candidate_headvars),
long_option("osv-cvstore-cost",
optopt_optimize_saved_vars_cell_cv_store_cost),
long_option("osv-cvload-cost",
optopt_optimize_saved_vars_cell_cv_load_cost),
long_option("osv-fvstore-cost",
optopt_optimize_saved_vars_cell_fv_store_cost),
long_option("osv-fvload-cost",
optopt_optimize_saved_vars_cell_fv_load_cost),
long_option("osv-op-ratio",
optopt_optimize_saved_vars_cell_op_ratio),
long_option("osv-node-ratio",
optopt_optimize_saved_vars_cell_node_ratio),
long_option("osv-allpath-node-ratio",
optopt_optimize_saved_vars_cell_all_path_node_ratio),
long_option("osv-all-cand",
optopt_optimize_saved_vars_cell_include_all_candidates),
long_option("delay-construct", optopt_delay_construct),
long_option("delay-constructs", optopt_delay_construct),
long_option("follow-code", optopt_follow_code),
long_option("constraint-propagation", optopt_constraint_propagation),
long_option("local-constraint-propagation",
optopt_local_constraint_propagation),
long_option("optimize-unused-args", optopt_optimize_unused_args),
long_option("optimise-unused-args", optopt_optimize_unused_args),
long_option("intermod-unused-args", optopt_intermod_unused_args),
long_option("optimize-higher-order", optopt_optimize_higher_order),
long_option("optimise-higher-order", optopt_optimize_higher_order),
long_option("higher-order-size-limit", optopt_higher_order_size_limit),
long_option("higher-order-arg-limit", optopt_higher_order_arg_limit),
long_option("unneeded-code", optopt_unneeded_code),
long_option("unneeded-code-copy-limit", optopt_unneeded_code_copy_limit),
long_option("type-specialization", optopt_type_specialization),
long_option("type-specialisation", optopt_type_specialization),
long_option("user-guided-type-specialization",
optopt_user_guided_type_specialization),
long_option("user-guided-type-specialisation",
optopt_user_guided_type_specialization),
long_option("fixed-user-guided-type-specialization",
optopt_user_guided_type_specialization),
long_option("introduce-accumulators", optopt_introduce_accumulators),
long_option("optimise-constructor-last-call-accumulator",
optopt_optimize_constructor_last_call_accumulator),
long_option("optimize-constructor-last-call-accumulator",
optopt_optimize_constructor_last_call_accumulator),
long_option("optimise-constructor-last-call-null",
optopt_optimize_constructor_last_call_null),
long_option("optimize-constructor-last-call-null",
optopt_optimize_constructor_last_call_null),
long_option("optimise-constructor-last-call",
optopt_optimize_constructor_last_call),
long_option("optimize-constructor-last-call",
optopt_optimize_constructor_last_call),
long_option("optimize-dead-procs", optopt_optimize_dead_procs),
long_option("optimise-dead-procs", optopt_optimize_dead_procs),
long_option("deforestation", optopt_deforestation),
long_option("deforestation-depth-limit", optopt_deforestation_depth_limit),
long_option("deforestation-cost-factor", optopt_deforestation_cost_factor),
long_option("deforestation-vars-threshold",
optopt_deforestation_vars_threshold),
long_option("deforestation-size-threshold",
optopt_deforestation_size_threshold),
long_option("untuple", optopt_untuple),
long_option("tuple", optopt_tuple),
long_option("tuple-trace-counts-file", optopt_tuple_trace_counts_file),
long_option("tuple-costs-ratio", optopt_tuple_costs_ratio),
long_option("tuple-min-args", optopt_tuple_min_args),
long_option("inline-par-builtins", optopt_inline_par_builtins),
long_option("always-specialize-in-dep-par-conjs",
optopt_always_specialize_in_dep_par_conjs),
long_option("allow-some-paths-only-waits",
optopt_allow_some_paths_only_waits),
long_option("region-analysis", optopt_region_analysis),
long_option("smart-indexing", optopt_smart_indexing),
long_option("smart-atomic-indexing", optopt_smart_atomic_indexing),
long_option("smart-string-indexing", optopt_smart_string_indexing),
long_option("smart-tag-indexing", optopt_smart_tag_indexing),
long_option("smart-float-indexing", optopt_smart_float_indexing),
long_option("dense-switch-req-density", optopt_dense_switch_req_density),
long_option("lookup-switch-req-density",optopt_lookup_switch_req_density),
long_option("dense-switch-size", optopt_dense_switch_size),
long_option("lookup-switch-size", optopt_lookup_switch_size),
long_option("string-switch-size", optopt_string_hash_switch_size),
long_option("string-trie-size", optopt_string_trie_switch_size),
long_option("string-trie-switch-size", optopt_string_trie_switch_size),
long_option("string-hash-switch-size", optopt_string_hash_switch_size),
long_option("string-binary-switch-size", optopt_string_binary_switch_size),
long_option("tag-switch-size", optopt_tag_switch_size),
long_option("try-switch-size", optopt_try_switch_size),
long_option("binary-switch-size", optopt_binary_switch_size),
long_option("switch-single-rec-base-first",
optopt_switch_single_rec_base_first),
long_option("switch-multi-rec-base-first",
optopt_switch_multi_rec_base_first),
long_option("static-ground-terms", optopt_static_ground_cells),
long_option("use-atomic-cells", optopt_use_atomic_cells),
long_option("middle-rec", optopt_middle_rec),
long_option("simple-neg", optopt_simple_neg),
long_option("allow-hijacks", optopt_allow_hijacks),
long_option("mlds-optimize", optopt_optimize),
long_option("mlds-optimise", optopt_optimize),
long_option("mlds-peephole", optopt_optimize_peep),
long_option("optimize-tailcalls", optopt_optimize_mlds_tailcalls),
long_option("optimise-tailcalls", optopt_optimize_mlds_tailcalls),
long_option("optimize-initializations", optopt_optimize_initializations),
long_option("optimise-initializations", optopt_optimize_initializations),
long_option("eliminate-unused-mlds-assigns",
optopt_eliminate_unused_mlds_assigns),
long_option("eliminate-local-vars", optopt_eliminate_local_vars),
long_option("generate-trail-ops-inline", optopt_generate_trail_ops_inline),
long_option("common-data", optopt_common_data),
long_option("common-layout-data", optopt_common_layout_data),
long_option("llds-optimize", optopt_optimize),
long_option("llds-optimise", optopt_optimize),
long_option("optimize-peep", optopt_optimize_peep),
long_option("optimise-peep", optopt_optimize_peep),
long_option("optimize-peep-mkword", optopt_optimize_peep_mkword),
long_option("optimise-peep-mkword", optopt_optimize_peep_mkword),
long_option("optimize-jumps", optopt_optimize_jumps),
long_option("optimise-jumps", optopt_optimize_jumps),
long_option("optimize-fulljumps", optopt_optimize_fulljumps),
long_option("optimise-fulljumps", optopt_optimize_fulljumps),
long_option("pessimize-tailcalls", optopt_pessimize_tailcalls),
long_option("checked-nondet-tailcalls", optopt_checked_nondet_tailcalls),
long_option("use-local-vars", optopt_use_local_vars),
long_option("local-var-access-threshold", optopt_local_var_access_threshold),
long_option("standardise-labels", optopt_standardize_labels),
long_option("standardize-labels", optopt_standardize_labels),
long_option("optimize-labels", optopt_optimize_labels),
long_option("optimise-labels", optopt_optimize_labels),
long_option("optimize-dups", optopt_optimize_dups),
long_option("optimise-dups", optopt_optimize_dups),
long_option("optimize-proc-dups", optopt_optimize_proc_dups),
long_option("optimise-proc-dups", optopt_optimize_proc_dups),
long_option("optimize-frames", optopt_optimize_frames),
long_option("optimise-frames", optopt_optimize_frames),
long_option("optimize-delay-slot", optopt_optimize_delay_slot),
long_option("optimise-delay-slot", optopt_optimize_delay_slot),
long_option("optimize-reassign", optopt_optimize_reassign),
long_option("optimise-reassign", optopt_optimize_reassign),
long_option("optimize-repeat", optopt_optimize_repeat),
long_option("optimise-repeat", optopt_optimize_repeat),
long_option("layout-compression-limit", optopt_layout_compression_limit),
long_option("use-macro-for-redo-fail", optopt_use_macro_for_redo_fail),
long_option("emit-c-loops", optopt_emit_c_loops),
long_option("procs-per-c-function", optopt_procs_per_c_function),
long_option("procs-per-c-function", optopt_procs_per_c_function),
long_option("everything-in-one-c-function", everything_in_one_c_function),
long_option("everything-in-one-c-function", everything_in_one_c_function),
long_option("inline-alloc", optopt_inline_alloc),
long_option("local-thread-engine-base", optopt_local_thread_engine_base),
long_option("enable-termination", termination),
long_option("enable-term", termination),
long_option("check-termination", termination_check),
long_option("check-term", termination_check),
long_option("chk-term", termination_check),
long_option("verbose-check-termination", termination_check_verbose),
long_option("verb-check-term", termination_check_verbose),
long_option("verb-chk-term", termination_check_verbose),
long_option("termination-single-argument-analysis",
termination_single_args),
long_option("term-single-arg", termination_single_args),
long_option("termination-norm", termination_norm),
long_option("term-norm", termination_norm),
long_option("termination-error-limit", termination_error_limit),
long_option("term-err-limit", termination_error_limit),
long_option("termination-path-limit", termination_path_limit),
long_option("term-path-limit", termination_path_limit),
long_option("enable-termination2", termination2),
long_option("enable-term2", termination2),
long_option("check-termination2", termination2_check),
long_option("check-term2", termination2_check),
long_option("chk-term2", termination2_check),
long_option("verbose-check-termination2", termination2_check_verbose),
long_option("verb-check-term2", termination2_check_verbose),
long_option("verb-chk-term2", termination2_check_verbose),
long_option("termination2-widening-limit", widening_limit),
long_option("term2-widening-limit", widening_limit),
long_option("arg-size-analysis-only", arg_size_analysis_only),
long_option("termination2-propagate-failure-constraints",
propagate_failure_constrs),
long_option("term2-propagate-failure-constraints",
propagate_failure_constrs),
long_option("term2-propagate-failure-constrs", propagate_failure_constrs),
long_option("termination2-norm", termination2_norm),
long_option("term2-norm", termination2_norm),
long_option("termination2-maximum-matrix-size", term2_maximum_matrix_size),
long_option("term2-max-matrix-size", term2_maximum_matrix_size),
long_option("analyse-exceptions", analyse_exceptions),
long_option("analyse-closures", analyse_closures),
long_option("analyse-local-closures", analyse_closures),
long_option("analyse-trail-usage", analyse_trail_usage),
long_option("optimize-trail-usage", optimize_trail_usage),
long_option("optimize-region-ops", optimize_region_ops),
long_option("analyse-mm-tabling", analyse_mm_tabling),
long_option("structure-sharing", structure_sharing_analysis),
long_option("structure-sharing-widening", structure_sharing_widening),
long_option("structure-reuse", structure_reuse_analysis),
long_option("ctgc", structure_reuse_analysis),
long_option("structure-reuse-constraint", structure_reuse_constraint),
long_option("ctgc-constraint", structure_reuse_constraint),
long_option("structure-reuse-constraint-arg", structure_reuse_constraint_arg),
long_option("ctgc-constraint-arg", structure_reuse_constraint_arg),
long_option("structure-reuse-max-conditions", structure_reuse_max_conditions),
long_option("structure-reuse-repeat", structure_reuse_repeat),
long_option("structure-reuse-free-cells", structure_reuse_free_cells),
long_option("target-debug", target_debug),
long_option("cc", cc),
long_option("c-optimise", optopt_c_optimize),
long_option("c-optimize", optopt_c_optimize),
long_option("c-debug", target_debug),
long_option("c-include-directory", c_include_directory),
long_option("c-include-dir", c_include_directory),
long_option("ansi-c", ansi_c),
long_option("cflags", cflags),
long_option("cflag", quoted_cflag),
long_option("gcc-flags", gcc_flags),
long_option("gcc-flag", quoted_gcc_flag),
long_option("clang-flags", clang_flags),
long_option("clang-flag", quoted_clang_flag),
long_option("msvc-flags", msvc_flags),
long_option("msvc-flag", quoted_msvc_flag),
long_option("cflags-for-warnings", cflags_for_warnings),
long_option("cflags-for-optimization", cflags_for_optimization),
long_option("cflags-for-ansi", cflags_for_ansi),
long_option("cflags-for-regs", cflags_for_regs),
long_option("cflags-for-gotos", cflags_for_gotos),
long_option("cflags-for-threads", cflags_for_threads),
long_option("cflags-for-debug", cflags_for_debug),
long_option("cflags-for-sanitizers", cflags_for_sanitizers),
long_option("cflags-for-pic", cflags_for_pic),
long_option("cflags-for-lto", cflags_for_lto),
long_option("c-flag-to-name-object-file", c_flag_to_name_object_file),
long_option("object-file-extension", object_file_extension),
long_option("pic-object-file-extension", pic_object_file_extension),
long_option("c-compiler-type", c_compiler_type),
long_option("csharp-compiler-type", csharp_compiler_type),
long_option("java-compiler", java_compiler),
long_option("javac", java_compiler),
long_option("java-interpreter", java_interpreter),
long_option("javac-flags", java_compiler_flags),
long_option("javac-flag", quoted_java_compiler_flag),
long_option("java-flags", java_compiler_flags),
long_option("java-flag", quoted_java_compiler_flag),
long_option("java-debug", target_debug),
long_option("java-classpath", java_classpath),
long_option("java-object-file-extension", java_object_file_extension),
long_option("java-runtime-flags", java_runtime_flags),
long_option("java-runtime-flag", quoted_java_runtime_flag),
long_option("csharp-compiler", csharp_compiler),
long_option("csharp-flags", csharp_flags),
long_option("csharp-flag", quoted_csharp_flag),
long_option("cli-interpreter", cli_interpreter),
long_option("output-file", output_file_name),
long_option("ld-flags", ld_flags),
long_option("ld-flag", quoted_ld_flag),
long_option("ld-libflags", ld_libflags),
long_option("ld-libflag", quoted_ld_libflag),
long_option("library-directory", link_library_directories),
long_option("runtime-library-directory", runtime_link_library_directories),
long_option("default-runtime-library-directory",
default_runtime_library_directory),
long_option("library", link_libraries),
long_option("link-object", link_objects),
long_option("mercury-library", mercury_library_special),
long_option("ml", mercury_library_special),
long_option("mercury-library-directory", mercury_library_directory_special),
long_option("mld", mercury_library_directory_special),
long_option("search-library-files-directory",
search_library_files_directory_special),
long_option("search-lib-files-dir",
search_library_files_directory_special),
long_option("mercury-standard-library-directory",
mercury_standard_library_directory_special),
long_option("mercury-stdlib-dir",
mercury_standard_library_directory_special),
long_option("init-file-directory", init_file_directories),
long_option("init-file", init_files),
long_option("trace-init-file", trace_init_files),
long_option("linkage", linkage_special),
long_option("mercury-linkage", mercury_linkage_special),
long_option("demangle", demangle),
long_option("strip", strip),
long_option("main", main),
long_option("allow-undefined", allow_undefined),
long_option("use-readline", use_readline),
long_option("runtime-flags", runtime_flags),
long_option("extra-initialization-functions",
extra_initialization_functions),
long_option("extra-inits", extra_initialization_functions),
long_option("framework", frameworks),
long_option("framework-directory", framework_directories),
long_option("sign-assembly", sign_assembly),
long_option("cstack-reserve-size", cstack_reserve_size),
long_option("shared-library-extension", shared_library_extension),
long_option("library-extension", library_extension),
long_option("executable-file-extension", executable_file_extension),
long_option("create-archive-command", create_archive_command),
long_option("create-archive-command-output-flag",
create_archive_command_output_flag),
long_option("create-archive-command-flags", create_archive_command_flags),
long_option("link-executable-command", link_executable_command),
long_option("link-shared-lib-command", link_shared_lib_command),
long_option("ranlib-command", ranlib_command),
long_option("ranlib-flags", ranlib_flags),
long_option("mkinit-command", mkinit_command),
long_option("mkinit-erl-command", mkinit_erl_command),
long_option("demangle-command", demangle_command),
long_option("filtercc-command", filtercc_command),
long_option("filterjavac-command", filterjavac_command),
long_option("trace-libs", trace_libs),
long_option("thread-libs", thread_libs),
long_option("hwloc-libs", hwloc_libs),
long_option("hwloc-static-libs", hwloc_static_libs),
long_option("shared-libs", shared_libs),
long_option("math-lib", math_lib),
long_option("readline-libs", readline_libs),
long_option("linker-opt-separator", linker_opt_separator),
long_option("linker-debug-flags", linker_debug_flags),
long_option("shlib-linker-debug-flags", shlib_linker_debug_flags),
long_option("linker-sanitizer-flags", linker_sanitizer_flags),
long_option("linker-trace-flags", linker_trace_flags),
long_option("shlib-linker-trace-flags", shlib_linker_trace_flags),
long_option("linker-thread-flags", linker_thread_flags),
long_option("shlib-linker-thread-flags", shlib_linker_thread_flags),
long_option("linker-lto-flags", linker_lto_flags),
long_option("linker-static-flags", linker_static_flags),
long_option("linker-strip-flag", linker_strip_flag),
long_option("linker-link-lib-flag", linker_link_lib_flag),
long_option("linker-link-lib-suffix", linker_link_lib_suffix),
long_option("shlib-linker-link-lib-flag", shlib_linker_link_lib_flag),
long_option("shlib-linker-link-lib-suffix", shlib_linker_link_lib_suffix),
long_option("linker-path-flag", linker_path_flag),
long_option("linker-rpath-flag", linker_rpath_flag),
long_option("linker-rpath-separator", linker_rpath_separator),
long_option("shlib-linker-rpath-flag", shlib_linker_rpath_flag),
long_option("shlib-linker-rpath-separator", shlib_linker_rpath_separator),
long_option("linker-allow-undefined-flag", linker_allow_undefined_flag),
long_option("linker-error-undefined-flag", linker_error_undefined_flag),
long_option("shlib-linker-use-install-name", shlib_linker_use_install_name),
long_option("shlib-linker-install-name-flag", shlib_linker_install_name_flag),
long_option("shlib-linker-install-name-path", shlib_linker_install_name_path),
long_option("strip-executable-command", strip_executable_command),
long_option("strip-executable-shared-flags", strip_executable_shared_flags),
long_option("strip-executable-static-flags", strip_executable_static_flags),
long_option("java-archive-command", java_archive_command),
long_option("make", only_opmode_make),
long_option("keep-going", keep_going),
long_option("rebuild", rebuild),
long_option("jobs", jobs),
long_option("track-flags", track_flags),
long_option("track-options", track_flags),
long_option("invoked-by-mmc-make", invoked_by_mmc_make),
long_option("pre-link-command", pre_link_command),
long_option("extra-init-command", extra_init_command),
long_option("mercury-configuration-directory",
mercury_configuration_directory_special),
long_option("mercury-config-dir",
mercury_configuration_directory_special),
long_option("install-prefix", install_prefix),
long_option("install-command", install_command),
long_option("install-command-dir-option", install_command_dir_option),
long_option("use-symlinks", use_symlinks),
long_option("library-grade", libgrades),
long_option("detect-libgrades", detect_libgrades),
long_option("libgrade", libgrades),
long_option("libgrades-include-component", libgrades_include_components),
long_option("libgrades-include", libgrades_include_components),
long_option("libgrades-exclude-component", libgrades_exclude_components),
long_option("libgrades-exclude", libgrades_exclude_components),
long_option("library-linkage", lib_linkages),
long_option("lib-linkage", lib_linkages),
long_option("flags", flags_file),
long_option("flags-file", flags_file),
long_option("options-file", options_files),
long_option("config-file", config_file),
long_option("options-search-directory", options_search_directories),
long_option("use-subdirs", use_subdirs),
long_option("use-grade-subdirs", use_grade_subdirs),
long_option("search-directory", search_directories),
long_option("intermod-directory", intermod_directories),
long_option("use-search-directories-for-intermod",
use_search_directories_for_intermod),
long_option("libgrade-install-check", libgrade_install_check),
long_option("order-make-by-timestamp", order_make_by_timestamp),
long_option("show-make-times", show_make_times),
long_option("extra-lib-header", extra_library_header),
long_option("extra-library-header", extra_library_header),
long_option("restricted-command-line", restricted_command_line),
long_option("env-type", env_type),
long_option("host-env-type", host_env_type),
long_option("system-env-type", system_env_type),
long_option("target-env-type", target_env_type),
long_option("typecheck-ambiguity-warn-limit",
typecheck_ambiguity_warn_limit),
long_option("typecheck-ambiguity-error-limit",
typecheck_ambiguity_error_limit),
long_option("help", help),
long_option("version", version),
long_option("filenames-from-stdin", filenames_from_stdin),
long_option("fullarch", target_arch),
long_option("target-arch", target_arch),
long_option("cross-compiling", cross_compiling),
long_option("local-module-id", local_module_id),
long_option("analysis-file-cache-dir", analysis_file_cache_dir),
long_option("bug-intermod-2002-06-13", compiler_sufficiently_recent),
long_option("bug-intermod-2006-09-28", compiler_sufficiently_recent),
long_option("bug-foreign_import-2002-08-06", compiler_sufficiently_recent),
long_option("install-opt-files-2002-08-30", compiler_sufficiently_recent),
long_option("read-config-file-2003-03-01", compiler_sufficiently_recent),
long_option("no-noncompact-ho-call-2004-01-15", compiler_sufficiently_recent),
long_option("trace-io-builtins-2006-08-14", compiler_sufficiently_recent),
long_option("compound-compare-builtins-2007-07-09",
compiler_sufficiently_recent),
long_option("no-det-warning-compound-compare-2007-07-17",
compiler_sufficiently_recent),
long_option("foreign-enum-switch-fix",
compiler_sufficiently_recent),
long_option("failing-disjunct-in-switch-dup-fix",
compiler_sufficiently_recent),
long_option("store-at-ref-impure-2008-09-11",
compiler_sufficiently_recent),
long_option("java-export-ref-out", compiler_sufficiently_recent),
long_option("java-generics-2010-04-13",
compiler_sufficiently_recent),
long_option("strip-executable-2014-05-05",
compiler_sufficiently_recent),
long_option("trace-goal-only-locals-2017-07-05",
compiler_sufficiently_recent),
long_option("no-reserved-addrs",
compiler_sufficiently_recent),
long_option("builtin-lt-gt-2018-10-08",
compiler_sufficiently_recent),
long_option("fixed-contiguity-2018-10-19",
compiler_sufficiently_recent),
long_option("simplest-msg-2019-09-22",
compiler_sufficiently_recent),
long_option("unqual-foreign-enums-in-int-files-2019-10-04",
compiler_sufficiently_recent),
long_option("obsolete-proc-2019-10-23",
compiler_sufficiently_recent),
long_option("type-repn-int3-2020-03-22",
compiler_sufficiently_recent),
long_option("github-85--2020-03-24",
compiler_sufficiently_recent),
long_option("foreign-proc-typeinfo-2020-04-08",
compiler_sufficiently_recent),
long_option("ushift-2020-04-30",
compiler_sufficiently_recent),
long_option("unsigned_lt-2020-05-02",
compiler_sufficiently_recent),
long_option("format-uint-2020-05-23",
compiler_sufficiently_recent),
long_option("mmake-all-2020-05-25",
compiler_sufficiently_recent),
long_option("unsigned-lt-2020-05-25",
compiler_sufficiently_recent),
long_option("may-ignore-without-warning-2020-08-18",
compiler_sufficiently_recent),
long_option("prolog-is-2020-08-21",
compiler_sufficiently_recent),
long_option("partial-inst-copy-2021-01-04",
compiler_sufficiently_recent),
long_option("mantis-bug-529-2021-02-25",
compiler_sufficiently_recent),
long_option("subtype-opt-2022-02-19",
compiler_sufficiently_recent),
long_option("typespec-pragma-2022-07-20",
compiler_sufficiently_recent),
long_option("experiment", experiment),
long_option("experiment1", experiment1),
long_option("experiment2", experiment2),
long_option("experiment3", experiment3),
long_option("experiment4", experiment4),
long_option("experiment5", experiment5),
long_option("ignore-par-conjunctions",
ignore_par_conjunctions),
long_option("control-granularity", control_granularity),
long_option("distance-granularity", distance_granularity),
long_option("implicit-parallelism", implicit_parallelism),
long_option("feedback-file", feedback_file),
long_option("par-loop-control", par_loop_control),
long_option("par-loop-control-preserve-tail-recursion",
par_loop_control_preserve_tail_recursion),
special_handler(option, specialdata, !.optiontable, result, !optoptions) :-
require_switch_arms_semidet [option]
(
(
option = grade,
specialdata = string(grade),
( if convert_grade_option(grade, !optiontable) then
result = ok(!.optiontable)
else
result = error("invalid grade `" ++ grade ++ "'")
)
;
option = linkage_special,
specialdata = string(flag),
( if ( flag = "shared" ; flag = "static" ) then
map.det_update(mercury_linkage, string(flag), !optiontable),
map.det_update(linkage, string(flag), !optiontable),
result = ok(!.optiontable)
else
result = error("argument of `--linkage' should be " ++
"either ""shared"" or ""static"", not """ ++ flag ++ """.")
)
;
option = mercury_linkage_special,
specialdata = string(flag),
( if ( flag = "shared" ; flag = "static" ) then
map.det_update(mercury_linkage, string(flag), !optiontable),
result = ok(!.optiontable)
else
result = error("argument of `--mercury-linkage' should be " ++
"either ""shared"" or ""static"", not """ ++ flag ++ """.")
)
)
;
(
option = compile_to_c,
specialdata = none,
map.set(target, string("c"), !optiontable),
map.set(only_opmode_target_code_only, bool(yes), !optiontable)
;
option = java,
specialdata = none,
map.set(target, string("java"), !optiontable)
;
option = java_only,
specialdata = none,
map.set(target, string("java"), !optiontable),
map.set(only_opmode_target_code_only, bool(yes), !optiontable)
;
option = csharp,
specialdata = none,
map.set(target, string("csharp"), !optiontable)
;
option = csharp_only,
specialdata = none,
map.set(target, string("csharp"), !optiontable),
map.set(only_opmode_target_code_only, bool(yes), !optiontable)
;
option = profiling,
specialdata = bool(profile),
map.set(profile_time, bool(profile), !optiontable),
map.set(profile_calls, bool(profile), !optiontable),
map.set(profile_memory, bool(no), !optiontable),
map.set(profile_deep, bool(no), !optiontable)
;
option = time_profiling,
specialdata = none,
map.set(profile_time, bool(yes), !optiontable),
map.set(profile_calls, bool(yes), !optiontable),
map.set(profile_memory, bool(no), !optiontable),
map.set(profile_deep, bool(no), !optiontable)
;
option = memory_profiling,
specialdata = none,
map.set(profile_time, bool(no), !optiontable),
map.set(profile_calls, bool(yes), !optiontable),
map.set(profile_memory, bool(yes), !optiontable),
map.set(profile_deep, bool(no), !optiontable)
;
option = deep_profiling,
specialdata = none,
map.set(profile_time, bool(no), !optiontable),
map.set(profile_calls, bool(no), !optiontable),
map.set(profile_memory, bool(no), !optiontable),
map.set(profile_deep, bool(yes), !optiontable)
;
option = inlining,
specialdata = bool(inline),
(
inline = yes,
compoundthreshold = 10
;
inline = no,
compoundthreshold = 0
),
inlineopts = cord.from_list([
oo_inline_simple(inline),
oo_inline_builtins(inline),
oo_inline_single_use(inline),
oo_inline_compound_threshold(compoundthreshold)
]),
!:optoptions = !.optoptions ++ inlineopts
;
option = reclaim_heap_on_failure,
specialdata = bool(reclaim),
map.set(reclaim_heap_on_semidet_failure, bool(reclaim),
!optiontable),
map.set(reclaim_heap_on_nondet_failure, bool(reclaim),
!optiontable)
;
option = strict_sequential,
specialdata = none,
override_options([
reorder_conj - bool(no),
reorder_disj - bool(no),
fully_strict - bool(yes)
], !optiontable)
;
option = inhibit_warnings,
specialdata = bool(inhibit),
bool.not(inhibit, enable),
set_all_options_to(style_warning_options, bool(enable),
!optiontable),
set_all_options_to(non_style_warning_options, bool(enable),
!optiontable)
;
option = inhibit_style_warnings,
specialdata = bool(inhibit),
bool.not(inhibit, enable),
set_all_options_to(style_warning_options, bool(enable),
!optiontable)
;
option = warn_non_tail_recursion,
specialdata = maybe_string(maybereccalls0),
(
maybereccalls0 = yes(reccalls0),
reccalls = to_lower(reccalls0),
(
reccalls = "none",
warnselfrec = no,
warnmutualrec = no
;
reccalls = "self",
warnselfrec = yes,
warnmutualrec = no
;
( reccalls = "self-and-mutual"
; reccalls = "both"
; reccalls = "all"
),
warnselfrec = yes,
warnmutualrec = yes
)
;
maybereccalls0 = no,
warnselfrec = no,
warnmutualrec = no
),
map.set(warn_non_tail_recursion_self, bool(warnselfrec),
!optiontable),
map.set(warn_non_tail_recursion_mutual, bool(warnmutualrec),
!optiontable)
;
option = infer_all,
specialdata = bool(infer),
override_options([
infer_types - bool(infer),
infer_modes - bool(infer),
infer_det - bool(infer)
], !optiontable)
;
option = optimize_saved_vars,
specialdata = bool(optimize),
savedvarsopts = cord.from_list([
oo_opt_saved_vars_const(optimize),
oo_opt_svcell(optimize)
]),
!:optoptions = !.optoptions ++ savedvarsopts
;
option = mercury_library_directory_special,
specialdata = string(dir),
option_table_add_mercury_library_directory(dir, !optiontable)
;
option = search_library_files_directory_special,
specialdata = string(dir),
option_table_add_search_library_files_directory(dir, !optiontable)
;
option = mercury_library_special,
specialdata = string(lib),
list.foldl(append_to_accumulating_option, [
link_libraries - lib,
mercury_libraries - lib,
init_files - (lib ++ ".init")
], !optiontable)
;
option = mercury_standard_library_directory_special,
specialdata = maybe_string(stdlibdir),
maybestdlibdir = maybe_string(stdlibdir),
map.set(mercury_standard_library_directory, maybestdlibdir,
!optiontable),
map.set(mercury_configuration_directory, maybestdlibdir,
!optiontable)
;
option = mercury_configuration_directory_special,
specialdata = string(confdir),
map.set(mercury_configuration_directory,
maybe_string(yes(confdir)), !optiontable)
;
option = quoted_cflag,
specialdata = string(flag),
handle_quoted_flag(cflags, flag, !optiontable)
;
option = quoted_gcc_flag,
specialdata = string(flag),
handle_quoted_flag(gcc_flags, flag, !optiontable)
;
option = quoted_clang_flag,
specialdata = string(flag),
handle_quoted_flag(clang_flags, flag, !optiontable)
;
option = quoted_msvc_flag,
specialdata = string(flag),
handle_quoted_flag(msvc_flags, flag, !optiontable)
;
option = quoted_java_compiler_flag,
specialdata = string(flag),
handle_quoted_flag(java_compiler_flags, flag, !optiontable)
;
option = quoted_java_runtime_flag,
specialdata = string(flag),
handle_quoted_flag(java_runtime_flags, flag, !optiontable)
;
option = quoted_csharp_flag,
specialdata = string(flag),
handle_quoted_flag(csharp_flags, flag, !optiontable)
;
option = quoted_ld_flag,
specialdata = string(flag),
handle_quoted_flag(ld_flags, flag, !optiontable)
;
option = quoted_ld_libflag,
specialdata = string(flag),
handle_quoted_flag(ld_libflags, flag, !optiontable)
;
option = env_type,
specialdata = string(envtypestr),
override_options([
host_env_type - string(envtypestr),
system_env_type - string(envtypestr),
target_env_type - string(envtypestr)
], !optiontable)
;
option = inform_inferred,
specialdata = bool(inform),
override_options([
inform_inferred_types - bool(inform),
inform_inferred_modes - bool(inform)
], !optiontable)
),
result = ok(!.optiontable)
;
(
option = optopt_allow_inlining,
specialdata = bool(bool),
optoption = oo_allow_inlining(bool)
;
option = optopt_inline_simple,
specialdata = bool(bool),
optoption = oo_inline_simple(bool)
;
option = optopt_inline_builtins,
specialdata = bool(bool),
optoption = oo_inline_builtins(bool)
;
option = optopt_inline_single_use,
specialdata = bool(bool),
optoption = oo_inline_single_use(bool)
;
option = optopt_inline_linear_tail_rec_sccs,
specialdata = bool(bool),
optoption = oo_inline_linear_tail_rec_sccs(bool)
;
option = optopt_enable_const_struct_poly,
specialdata = bool(bool),
optoption = oo_enable_const_struct_poly(bool)
;
option = optopt_enable_const_struct_user,
specialdata = bool(bool),
optoption = oo_enable_const_struct_user(bool)
;
option = optopt_common_struct,
specialdata = bool(bool),
optoption = oo_opt_common_structs(bool)
;
option = optopt_constraint_propagation,
specialdata = bool(bool),
optoption = oo_prop_constraints(bool)
;
option = optopt_local_constraint_propagation,
specialdata = bool(bool),
optoption = oo_prop_local_constraints(bool)
;
option = optopt_optimize_duplicate_calls,
specialdata = bool(bool),
optoption = oo_opt_dup_calls(bool)
;
option = optopt_constant_propagation,
specialdata = bool(bool),
optoption = oo_prop_constants(bool)
;
option = optopt_excess_assign,
specialdata = bool(bool),
optoption = oo_elim_excess_assigns(bool)
;
option = optopt_test_after_switch,
specialdata = bool(bool),
optoption = oo_opt_test_after_switch(bool)
;
option = optopt_optimize_format_calls,
specialdata = bool(bool),
optoption = oo_opt_format_calls(bool)
;
option = optopt_loop_invariants,
specialdata = bool(bool),
optoption = oo_opt_loop_invariants(bool)
;
option = optopt_optimize_saved_vars_const,
specialdata = bool(bool),
optoption = oo_opt_saved_vars_const(bool)
;
option = optopt_optimize_saved_vars_cell,
specialdata = bool(bool),
optoption = oo_opt_svcell(bool)
;
option = optopt_optimize_saved_vars_cell_loop,
specialdata = bool(bool),
optoption = oo_opt_svcell_loop(bool)
;
option = optopt_optimize_saved_vars_cell_full_path,
specialdata = bool(bool),
optoption = oo_opt_svcell_full_path(bool)
;
option = optopt_optimize_saved_vars_cell_on_stack,
specialdata = bool(bool),
optoption = oo_opt_svcell_on_stack(bool)
;
option = optopt_optimize_saved_vars_cell_candidate_headvars,
specialdata = bool(bool),
optoption = oo_opt_svcell_candidate_headvars(bool)
;
option = optopt_optimize_saved_vars_cell_include_all_candidates,
specialdata = bool(bool),
optoption = oo_opt_svcell_all_candidates(bool)
;
option = optopt_delay_construct,
specialdata = bool(bool),
optoption = oo_delay_constructs(bool)
;
option = optopt_follow_code,
specialdata = bool(bool),
optoption = oo_opt_follow_code(bool)
;
option = optopt_optimize_unused_args,
specialdata = bool(bool),
optoption = oo_opt_unused_args(bool)
;
option = optopt_intermod_unused_args,
specialdata = bool(bool),
optoption = oo_opt_unused_args_intermod(bool)
;
option = optopt_optimize_higher_order,
specialdata = bool(bool),
optoption = oo_opt_higher_order(bool)
;
option = optopt_unneeded_code,
specialdata = bool(bool),
optoption = oo_opt_unneeded_code(bool)
;
option = optopt_type_specialization,
specialdata = bool(bool),
optoption = oo_spec_types(bool)
;
option = optopt_user_guided_type_specialization,
specialdata = bool(bool),
optoption = oo_spec_types_user_guided(bool)
;
option = optopt_introduce_accumulators,
specialdata = bool(bool),
optoption = oo_introduce_accumulators(bool)
;
option = optopt_optimize_constructor_last_call_accumulator,
specialdata = bool(bool),
optoption = oo_opt_lcmc_accumulator(bool)
;
option = optopt_optimize_constructor_last_call_null,
specialdata = bool(bool),
optoption = oo_opt_lcmc_null(bool)
;
option = optopt_optimize_constructor_last_call,
specialdata = bool(bool),
optoption = oo_opt_lcmc(bool)
;
option = optopt_optimize_dead_procs,
specialdata = bool(bool),
optoption = oo_opt_dead_procs(bool)
;
option = optopt_deforestation,
specialdata = bool(bool),
optoption = oo_deforest(bool)
;
option = optopt_untuple,
specialdata = bool(bool),
optoption = oo_untuple(bool)
;
option = optopt_tuple,
specialdata = bool(bool),
optoption = oo_tuple(bool)
;
option = optopt_inline_par_builtins,
specialdata = bool(bool),
optoption = oo_inline_par_builtins(bool)
;
option = optopt_always_specialize_in_dep_par_conjs,
specialdata = bool(bool),
optoption = oo_spec_in_all_dep_par_conjs(bool)
;
option = optopt_allow_some_paths_only_waits,
specialdata = bool(bool),
optoption = oo_allow_some_paths_only_waits(bool)
;
option = optopt_region_analysis,
specialdata = bool(bool),
optoption = oo_analyse_regions(bool)
;
option = optopt_smart_indexing,
specialdata = bool(bool),
optoption = oo_use_smart_indexing(bool)
;
option = optopt_smart_atomic_indexing,
specialdata = bool(bool),
optoption = oo_use_smart_indexing_atomic(bool)
;
option = optopt_smart_string_indexing,
specialdata = bool(bool),
optoption = oo_use_smart_indexing_string(bool)
;
option = optopt_smart_tag_indexing,
specialdata = bool(bool),
optoption = oo_use_smart_indexing_tag(bool)
;
option = optopt_smart_float_indexing,
specialdata = bool(bool),
optoption = oo_use_smart_indexing_float(bool)
;
option = optopt_switch_single_rec_base_first,
specialdata = bool(bool),
optoption = oo_put_base_first_single_rec(bool)
;
option = optopt_switch_multi_rec_base_first,
specialdata = bool(bool),
optoption = oo_put_base_first_multi_rec(bool)
;
option = optopt_static_ground_cells,
specialdata = bool(bool),
optoption = oo_use_static_ground_cells(bool)
;
option = optopt_static_ground_floats,
specialdata = bool(bool),
optoption = oo_use_static_ground_floats(bool)
;
option = optopt_static_ground_int64s,
specialdata = bool(bool),
optoption = oo_use_static_ground_int64s(bool)
;
option = optopt_static_code_addresses,
specialdata = bool(bool),
optoption = oo_use_static_code_addresses(bool)
;
option = optopt_use_atomic_cells,
specialdata = bool(bool),
optoption = oo_use_atomic_cells(bool)
;
option = optopt_middle_rec,
specialdata = bool(bool),
optoption = oo_opt_middle_rec(bool)
;
option = optopt_simple_neg,
specialdata = bool(bool),
optoption = oo_opt_simple_neg(bool)
;
option = optopt_allow_hijacks,
specialdata = bool(bool),
optoption = oo_allow_hijacks(bool)
;
option = optopt_optimize_mlds_tailcalls,
specialdata = bool(bool),
optoption = oo_opt_mlds_tailcalls(bool)
;
option = optopt_optimize_initializations,
specialdata = bool(bool),
optoption = oo_opt_initializations(bool)
;
option = optopt_eliminate_unused_mlds_assigns,
specialdata = bool(bool),
optoption = oo_elim_unused_mlds_assigns(bool)
;
option = optopt_eliminate_local_vars,
specialdata = bool(bool),
optoption = oo_elim_local_vars(bool)
;
option = optopt_generate_trail_ops_inline,
specialdata = bool(bool),
optoption = oo_gen_trail_ops_inline(bool)
;
option = optopt_common_data,
specialdata = bool(bool),
optoption = oo_use_common_data(bool)
;
option = optopt_common_layout_data,
specialdata = bool(bool),
optoption = oo_use_common_layout_data(bool)
;
option = optopt_optimize,
specialdata = bool(bool),
optoption = oo_optimize(bool)
;
option = optopt_optimize_peep,
specialdata = bool(bool),
optoption = oo_opt_peep(bool)
;
option = optopt_optimize_peep_mkword,
specialdata = bool(bool),
optoption = oo_opt_peep_mkword(bool)
;
option = optopt_optimize_jumps,
specialdata = bool(bool),
optoption = oo_opt_jumps(bool)
;
option = optopt_optimize_fulljumps,
specialdata = bool(bool),
optoption = oo_opt_fulljumps(bool)
;
option = optopt_pessimize_tailcalls,
specialdata = bool(bool),
optoption = oo_pessimize_tailcalls(bool)
;
option = optopt_checked_nondet_tailcalls,
specialdata = bool(bool),
optoption = oo_opt_checked_nondet_tailcalls(bool)
;
option = optopt_use_local_vars,
specialdata = bool(bool),
optoption = oo_use_local_vars(bool)
;
option = optopt_standardize_labels,
specialdata = bool(bool),
optoption = oo_standardize_labels(bool)
;
option = optopt_optimize_labels,
specialdata = bool(bool),
optoption = oo_opt_labels(bool)
;
option = optopt_optimize_dups,
specialdata = bool(bool),
optoption = oo_opt_dups(bool)
;
option = optopt_optimize_proc_dups,
specialdata = bool(bool),
optoption = oo_opt_proc_dups(bool)
;
option = optopt_optimize_frames,
specialdata = bool(bool),
optoption = oo_opt_frames(bool)
;
option = optopt_optimize_delay_slot,
specialdata = bool(bool),
optoption = oo_opt_delay_slot(bool)
;
option = optopt_optimize_reassign,
specialdata = bool(bool),
optoption = oo_opt_reassign(bool)
;
option = optopt_use_macro_for_redo_fail,
specialdata = bool(bool),
optoption = oo_use_macro_for_redo_fail(bool)
;
option = optopt_emit_c_loops,
specialdata = bool(bool),
optoption = oo_emit_c_loops(bool)
;
option = optopt_local_thread_engine_base,
specialdata = bool(bool),
optoption = oo_use_local_thread_engine_base(bool)
;
option = optopt_inline_alloc,
specialdata = bool(bool),
optoption = oo_inline_alloc(bool)
;
option = optopt_c_optimize,
specialdata = bool(bool),
optoption = oo_opt_c(bool)
;
option = optopt_inline_call_cost,
specialdata = int(n),
optoption = oo_inline_call_cost(n)
;
option = optopt_inline_compound_threshold,
specialdata = int(n),
optoption = oo_inline_compound_threshold(n)
;
option = optopt_inline_simple_threshold,
specialdata = int(n),
optoption = oo_inline_simple_threshold(n)
;
option = optopt_inline_vars_threshold,
specialdata = int(n),
optoption = oo_inline_vars_threshold(n)
;
option = optopt_intermod_inline_simple_threshold,
specialdata = int(n),
optoption = oo_intermod_inline_simple_threshold(n)
;
option = optopt_inline_linear_tail_rec_sccs_max_extra,
specialdata = int(n),
optoption = oo_inline_linear_tail_rec_sccs_max_extra(n)
;
option = optopt_from_ground_term_threshold,
specialdata = int(n),
optoption = oo_from_ground_term_threshold(n)
;
option = optopt_optimize_saved_vars_cell_cv_store_cost,
specialdata = int(n),
optoption = oo_opt_svcell_cv_store_cost(n)
;
option = optopt_optimize_saved_vars_cell_cv_load_cost,
specialdata = int(n),
optoption = oo_opt_svcell_cv_load_cost(n)
;
option = optopt_optimize_saved_vars_cell_fv_store_cost,
specialdata = int(n),
optoption = oo_opt_svcell_fv_store_cost(n)
;
option = optopt_optimize_saved_vars_cell_fv_load_cost,
specialdata = int(n),
optoption = oo_opt_svcell_fv_load_cost(n)
;
option = optopt_optimize_saved_vars_cell_op_ratio,
specialdata = int(n),
optoption = oo_opt_svcell_op_ratio(n)
;
option = optopt_optimize_saved_vars_cell_node_ratio,
specialdata = int(n),
optoption = oo_opt_svcell_node_ratio(n)
;
option = optopt_optimize_saved_vars_cell_all_path_node_ratio,
specialdata = int(n),
optoption = oo_opt_svcell_all_path_node_ratio(n)
;
option = optopt_higher_order_size_limit,
specialdata = int(n),
optoption = oo_higher_order_size_limit(n)
;
option = optopt_higher_order_arg_limit,
specialdata = int(n),
optoption = oo_higher_order_arg_limit(n)
;
option = optopt_unneeded_code_copy_limit,
specialdata = int(n),
optoption = oo_opt_unneeded_code_copy_limit(n)
;
option = optopt_deforestation_depth_limit,
specialdata = int(n),
optoption = oo_deforestation_depth_limit(n)
;
option = optopt_deforestation_cost_factor,
specialdata = int(n),
optoption = oo_deforestation_cost_factor(n)
;
option = optopt_deforestation_vars_threshold,
specialdata = int(n),
optoption = oo_deforestation_vars_threshold(n)
;
option = optopt_deforestation_size_threshold,
specialdata = int(n),
optoption = oo_deforestation_size_threshold(n)
;
option = optopt_tuple_costs_ratio,
specialdata = int(n),
optoption = oo_tuple_costs_ratio(n)
;
option = optopt_tuple_min_args,
specialdata = int(n),
optoption = oo_tuple_min_args(n)
;
option = optopt_dense_switch_req_density,
specialdata = int(n),
optoption = oo_dense_switch_req_density(n)
;
option = optopt_lookup_switch_req_density,
specialdata = int(n),
optoption = oo_lookup_switch_req_density(n)
;
option = optopt_dense_switch_size,
specialdata = int(n),
optoption = oo_dense_switch_size(n)
;
option = optopt_lookup_switch_size,
specialdata = int(n),
optoption = oo_lookup_switch_size(n)
;
option = optopt_string_trie_switch_size,
specialdata = int(n),
optoption = oo_string_trie_switch_size(n)
;
option = optopt_string_hash_switch_size,
specialdata = int(n),
optoption = oo_string_hash_switch_size(n)
;
option = optopt_string_binary_switch_size,
specialdata = int(n),
optoption = oo_string_binary_switch_size(n)
;
option = optopt_tag_switch_size,
specialdata = int(n),
optoption = oo_tag_switch_size(n)
;
option = optopt_try_switch_size,
specialdata = int(n),
optoption = oo_try_switch_size(n)
;
option = optopt_binary_switch_size,
specialdata = int(n),
optoption = oo_binary_switch_size(n)
;
option = optopt_local_var_access_threshold,
specialdata = int(n),
optoption = oo_local_var_access_threshold(n)
;
option = optopt_optimize_repeat,
specialdata = int(n),
optoption = oo_opt_repeat(n)
;
option = optopt_layout_compression_limit,
specialdata = int(n),
optoption = oo_layout_compression_limit(n)
;
option = optopt_procs_per_c_function,
specialdata = int(n),
optoption = oo_procs_per_c_function(n)
;
option = everything_in_one_c_function,
specialdata = none,
optoption = oo_use_just_one_c_func(yes)
;
option = optopt_tuple_trace_counts_file,
specialdata = string(str),
optoption = oo_tuple_trace_counts_file(str)
;
option = opt_level,
specialdata = int(n),
optoption = oo_opt_level(n)
;
option = opt_space,
specialdata = none,
optoption = oo_opt_for_space
),
cord.snoc(optoption, !optoptions),
result = ok(!.optiontable)
),
style_warning_options = [
warn_inconsistent_pred_order_clauses,
warn_inconsistent_pred_order_foreign_procs,
warn_non_contiguous_decls,
warn_non_contiguous_clauses,
warn_non_contiguous_foreign_procs,
warn_simple_code,
warn_duplicate_calls,
warn_implicit_stream_calls,
warn_non_tail_recursion_self,
warn_non_tail_recursion_mutual,
warn_obvious_non_tail_recursion,
warn_dead_procs,
warn_dead_preds,
warn_known_bad_format_calls,
warn_unknown_format_calls,
warn_insts_without_matching_type,
warn_insts_with_functors_without_type,
inform_ite_instead_of_switch,
inform_incomplete_switch,
warn_suspicious_foreign_procs,
warn_state_var_shadowing,
warn_unneeded_mode_specific_clause,
inform_suboptimal_packing
],
non_style_warning_options = [
warn_accumulator_swaps,
warn_singleton_vars,
warn_overlapping_scopes,
warn_det_decls_too_lax,
warn_inferred_erroneous,
warn_nothing_exported,
warn_unused_args,
warn_interface_imports,
warn_interface_imports_in_parents,
warn_missing_opt_files,
warn_missing_trans_opt_files,
warn_missing_trans_opt_deps,
warn_non_stratification,
warn_unification_cannot_succeed,
warn_missing_module_name,
warn_wrong_module_name,
warn_smart_recompilation,
warn_undefined_options_variables,
warn_target_code,
warn_up_to_date,
warn_stubs,
warn_table_with_inline,
warn_non_term_special_preds,
warn_suspected_occurs_check_failure,
warn_potentially_ambiguous_pragma,
warn_ambiguous_pragma,
inform_inferred_types
],
inconsequential_options(inconsequentialoptions) :-
option_defaults_2(oc_warn, warningoptions),
option_defaults_2(oc_verbosity, verbosityoptions),
option_defaults_2(oc_internal, internaluseoptions),
option_defaults_2(oc_buildsys, buildsystemoptions),
assoc_list.keys(warningoptions, warningkeys),
assoc_list.keys(verbosityoptions, verbositykeys),
assoc_list.keys(internaluseoptions, internalusekeys),
assoc_list.keys(buildsystemoptions, buildsystemkeys),
keys = warningkeys ++ verbositykeys ++ internalusekeys ++ buildsystemkeys,
inconsequentialoptions = set.list_to_set(keys),
option_table_add_mercury_library_directory(dir, !optiontable) :-
list.foldl(append_to_accumulating_option, [
search_directories - dir.make_path_name(dir, "ints"),
c_include_directory - dir.make_path_name(dir, "inc"),
mercury_library_directories - dir
], !optiontable),
option_table_add_search_library_files_directory(dir, !optiontable) :-
list.foldl(append_to_accumulating_option, [
search_directories - dir,
c_include_directory - dir,
search_library_files_directories - dir
], !optiontable),
pred append_to_accumulating_option(pair(option, string)::in,
option_table::in, option_table::out) is det,
append_to_accumulating_option(option - value, !optiontable) :-
getopt.lookup_accumulating_option(!.optiontable, option, values0),
values = values0 ++ [value],
map.set(option, accumulating(values), !optiontable),
pred override_options(list(pair(option, option_data))::in,
option_table::in, option_table::out) is det,
override_options([], !optiontable),
override_options([option - value | optionsvalues], !optiontable) :-
map.set(option, value, !optiontable),
override_options(optionsvalues, !optiontable),
set_all_options_to([], value, !optiontable),
set_all_options_to([option | options], value, !optiontable) :-
map.set(option, value, !optiontable),
set_all_options_to(options, value, !optiontable),
pred handle_quoted_flag(option::in, string::in,
option_table::in, option_table::out) is det,
handle_quoted_flag(option, flag, !optiontable) :-
append_to_accumulating_option(option - quote_shell_cmd_arg(flag),
!optiontable),
options_help(stream, !io) :-
io.write_string(stream, "\t-?, -h, --help\n", !io),
io.write_string(stream, "\t\tprint this usage message.\n", !io),
options_help_warning(stream, !io),
options_help_verbosity(stream, !io),
options_help_output(stream, !io),
options_help_aux_output(stream, !io),
options_help_semantics(stream, !io),
options_help_termination(stream, !io),
options_help_ctgc(stream, !io),
options_help_compilation_model(stream, !io),
options_help_code_generation(stream, !io),
options_help_optimization(stream, !io),
options_help_hlds_hlds_optimization(stream, !io),
options_help_hlds_llds_optimization(stream, !io),
options_help_llds_llds_optimization(stream, !io),
options_help_mlds_mlds_optimization(stream, !io),
options_help_output_optimization(stream, !io),
options_help_target_code_compilation(stream, !io),
options_help_link(stream, !io),
options_help_build_system(stream, !io),
options_help_misc(stream, !io)
).