[m-rev.] for review: "Did you mean ..." mesages for long options

Julien Fischer jfischer at opturion.com
Sat Apr 13 00:31:56 AEST 2024


Hi,

Does anyone intend to review this one?

Julien.

On Sat, 6 Apr 2024, Julien Fischer wrote:

>
> "Did you mean ..." messages for long options.
>
> Generate "Did you mean ..." messages for unrecognized long options.
> For example:
>
>     unrecognized option `--no-half-at-wrn'.
>     (Did you mean `--no-halt-at-warn'?)
>
> compiler/mercury_compile_main.m:
>     If we have an unrecognized long option or negated long option,
>     then attempt to generate a "Did you mean ..." message for it.
>
> compiler/error_spec.m:
>     Add a version of maybe_construct_did_you_mean_pieces that lets
>     you add prefix to the strings before including them in the pieces.
>     This is required for handling the "--" and "--no-" long option
>     prefixes. Both versions of maybe_construct_did_you_mean pieces
>     are implemented using the same underlying piece of code.
>
> compiler/options.m:
>      Add predicates for returning the set of all long options and all
>      negatable
>      long options. To make this possible, shift the long option table into a
>      new predicate and add an (out, out) is multi mode for it.
>
> library/getopt.m:
>     Update the documentation to include maybe_string_special options
>     among the option types that are negatable.
>
> Julien.
>
> diff --git a/compiler/error_spec.m b/compiler/error_spec.m
> index a012667..173b1a1 100644
> --- a/compiler/error_spec.m
> +++ b/compiler/error_spec.m
> @@ -626,6 +626,9 @@
>  :- pred maybe_construct_did_you_mean_pieces(string::in, list(string)::in,
>      list(format_piece)::out) is det.
>
> +:- pred maybe_construct_prefixed_did_you_mean_pieces(string::in, string::in,
> +    list(string)::in, list(format_piece)::out) is det.
> +
> % ---------------------------------------------------------------------------%
>
> :- pred extract_spec_phase(error_spec::in, error_phase::out) is det.
> @@ -647,6 +650,7 @@
>  :- import_module edit_distance.
>  :- import_module getopt.
>  :- import_module require.
> +:- import_module std_util.
>  :- import_module string.
>  :- import_module term_context.
>  :- import_module uint.
> @@ -775,6 +779,19 @@ add_quotes(Str) = "`" ++ Str ++ "'".
>
> maybe_construct_did_you_mean_pieces(BaseName, CandidateNames,
>         DidYouMeanPieces) :-
> +    do_maybe_construct_did_you_mean_pieces(BaseName, CandidateNames,
> +        std_util.id, DidYouMeanPieces).
> +
> +maybe_construct_prefixed_did_you_mean_pieces(Prefix, BaseName, 
> CandidateNames,
> +        DidYouMeanPieces) :-
> +    do_maybe_construct_did_you_mean_pieces(BaseName, CandidateNames,
> +        add_prefix(Prefix), DidYouMeanPieces).
> +
> +:- pred do_maybe_construct_did_you_mean_pieces(string::in, list(string)::in,
> +    (func(string) = string)::in, list(format_piece)::out) is det.
> +
> +do_maybe_construct_did_you_mean_pieces(BaseName, CandidateNames,
> +        TransformFunc, DidYouMeanPieces) :-
>     %  Note: name_is_close_enough below depends on all costs here
>     %  except for case changes being 2u.
>     Params = edit_params(2u, 2u, case_sensitive_replacement_cost, 2u),
> @@ -824,12 +841,13 @@ maybe_construct_did_you_mean_pieces(BaseName, 
> CandidateNames,
>              SuggestedNames0, NonSuggestedNames),
>          (
>             NonSuggestedNames = [],
> -            SuggestedNames = SuggestedNames0
> +            SuggestedNames = list.map(TransformFunc, SuggestedNames0)
>          ;
>              NonSuggestedNames = [_ | _],
>             %  This should cause the message we create below
>             %  to end with "or `...'?".
> -            SuggestedNames = SuggestedNames0 ++ ["..."]
> +            SuggestedNames =
> +                list.map(TransformFunc, SuggestedNames0) ++ ["..."]
>         ) ,
>          SuggestionPieces = list_to_quoted_pieces_or(SuggestedNames),
>          DidYouMeanPieces =
> @@ -839,6 +857,12 @@ maybe_construct_did_you_mean_pieces(BaseName, 
> CandidateNames,
>          DidYouMeanPieces = []
>     ) .
>
> +    % Add to stdlib? string.append has wrong mode for list map.
> +    %
> +:- func add_prefix(string, string) = string.
> +
> +add_prefix(Prefix, String) = Prefix ++ String.
> +
>  :- pred name_is_close_enough(uint::in, string::in, uint::in, string::in)
>      is semidet.
>
> diff --git a/compiler/mercury_compile_main.m 
> b/compiler/mercury_compile_main.m
> index 08325be..a58eaf2 100644
> --- a/compiler/mercury_compile_main.m
> +++ b/compiler/mercury_compile_main.m
> @@ -392,10 +392,8 @@ process_options_std(ProgressStream, ErrorStream, 
> DefaultOptionTable,
>          DefaultOptionTable, ArgsOptionTable, cord.init, _UserData, !IO),
>      (
>         MaybeError = yes(OptionError),
> -        OptionErrorStr = option_error_to_string(OptionError),
> -        Spec = simplest_no_context_spec($pred, severity_error,
> -            phase_options, [words(OptionErrorStr), suffix("."), nl]),
> -        Result = opr_failure([Spec])
> +        Specs = make_option_error(OptionError),
> +        Result = opr_failure(Specs)
>      ;
>          MaybeError = no,
>          getopt.lookup_accumulating_option(ArgsOptionTable,
> @@ -576,6 +574,45 @@ maybe_dump_options_file(OutStream, ArgsOptionTable, 
> OptionsVariables, !IO) :-
>
> % ---------------------------------------------------------------------------%
>
> +:- func make_option_error(option_error(option)) = list(error_spec).
> +
> +make_option_error(OptionError) = Specs :-
> +    OptionErrorStr = option_error_to_string(OptionError),
> +    ( if
> +        OptionError = unrecognized_option(OptionStr),
> +        ( if string.remove_prefix("--no-", OptionStr, BaseOptionStr0) then
> +            IsNegatedOption = yes,
> +            BaseOptionStr = BaseOptionStr0
> +        else if string.remove_prefix("--", OptionStr, BaseOptionStr0) then
> +            IsNegatedOption = no,
> +            BaseOptionStr = BaseOptionStr0
> +        else
> +            false
> +        ),
> +        not is_empty(BaseOptionStr)
> +    then
> +        (
> +            IsNegatedOption = yes,
> +            Prefix = "--no-",
> +            all_negatable_long_option_strings(OptionStrs)
> +        ;
> +            IsNegatedOption = no,
> +            Prefix = "--",
> +            all_long_option_strings(OptionStrs)
> +        ),
> +        maybe_construct_prefixed_did_you_mean_pieces(Prefix, BaseOptionStr,
> +            OptionStrs, DidYouMeanPieces0),
> +        DidYouMeanPieces = [nl_indent_delta(-1) | DidYouMeanPieces0]
> +    else
> +        DidYouMeanPieces = []
> +    ),
> +    Spec = simplest_no_context_spec($pred, severity_error,
> +        phase_options,
> +        [words(OptionErrorStr), suffix("."), nl | DidYouMeanPieces]),
> +    Specs = [Spec].
> +
> +%---------------------------------------------------------------------------%
> +
>  main_for_make(ProgressStream, ErrorStream, Globals, Args, !IO) :-
>      DetectedGradeFlags = [],
>      io.environment.get_environment_var_map(EnvVarMap, !IO),
> diff --git a/compiler/options.m b/compiler/options.m
> index 20f91eb..cd2962e 100644
> --- a/compiler/options.m
> +++ b/compiler/options.m
> @@ -36,7 +36,7 @@
> %    option is a style warning option, in the second that handles
> %    inhibit_style_warnings.
> % 
> -% - Every option should have a clause in the long_options predicate
> +% - Every option should have a clause in the long_option_table predicate
> %    that converts the user-visible name of the option into its internal
> %    representation as a value in the options type. For options whose names
> %    include words that whose spelling differs in American vs British 
> %    English,
> @@ -78,6 +78,16 @@
>  :- pred short_option(char::in, option::out) is semidet.
>  :- pred long_option(string::in, option::out) is semidet.
>
> +    % Return the list of all long option strings excluding the "--"
> +    % or "--no-" prefixes.
> +    %
> +:- pred all_long_option_strings(list(string)::out) is det.
> +
> +    % Return the list of all long options strings that can be preceded
> +    % with the "--no-" prefix. The strings do not include the prefix.
> +    %
> +:- pred all_negatable_long_option_strings(list(string)::out) is det.
> +
>     %  special_handler(Option, ValueForThatOption, OptionTableIn,
>     %    MaybeOptionTableOut):
>     % 
> @@ -154,7 +164,7 @@
>     %
>     %  - in this definition of the `option' type
>     %  - in the clauses of the `optdef' predicate
> -    % - in the clauses of `long_option' predicate
> +    % - in the clauses of `long_option_table' predicate
>     %    (not in the clauses of the `short_option' predicate, since
>     %    that is sorted alphabetically on the option letter)
>     %  - in the special_handler predicate, if they appear there
> @@ -2146,1136 +2156,1223 @@ short_option('w', inhibit_warnings).
>  short_option('x', only_opmode_make_xml_documentation).
>  short_option('?', help).
>
> +long_option(String, Option) :-
> +    long_option_table(String, Option).
> +
> +all_long_option_strings(OptionStrings) :-
> +    Pred = (pred(OptionString::out) is multi :-
> +        long_option_table(OptionString, _)
> +    ),
> +    solutions(Pred, OptionStrings).
> +
> +all_negatable_long_option_strings(OptionStrings) :-
> +    Pred = (pred(OptionString::out) is nondet :-
> +        long_option_table(OptionString, Option),
> +        optdef(_, Option, OptionData),
> +        ( OptionData = bool(_)
> +        ; OptionData = maybe_int(_)
> +        ; OptionData = maybe_string(_)
> +        ; OptionData = accumulating(_)
> +        ; OptionData = bool_special
> +        ; OptionData = maybe_string_special
> +        )
> +    ),
> +    solutions(Pred, OptionStrings).
> +
> +:- pred long_option_table(string, option).
> +:- mode long_option_table(in, out) is semidet.
> +:- mode long_option_table(out, out) is multi.
> +
> %  warning options
> -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",
> +long_option_table("inhibit-warnings",         inhibit_warnings).
> +long_option_table("inhibit-style-warnings",   inhibit_style_warnings).
> +long_option_table("warn-accumulator-swaps",   warn_accumulator_swaps).
> +long_option_table("halt-at-warn",             halt_at_warn).
> +long_option_table("halt-at-warn-make-int",    halt_at_warn_make_int).
> +long_option_table("halt-at-warn-make-interface",  halt_at_warn_make_int).
> +long_option_table("halt-at-warn-make-opt",    halt_at_warn_make_opt).
> +long_option_table("halt-at-syntax-errors",    halt_at_syntax_errors).
> +long_option_table("halt-at-auto-parallel-failure",
> +                    halt_at_auto_parallel_failure).
> +long_option_table("halt-at-invalid-interface", 
> halt_at_invalid_interface).
> +long_option_table("warn-singleton-variables", warn_singleton_vars).
> +long_option_table("warn-singleton-vars",      warn_singleton_vars).
> +long_option_table("warn-overlapping-scopes",  warn_overlapping_scopes).
> +long_option_table("warn-det-decls-too-lax",   warn_det_decls_too_lax).
> +long_option_table("warn-inferred-erroneous",  warn_inferred_erroneous).
> +long_option_table("warn-nothing-exported",    warn_nothing_exported).
> +long_option_table("warn-unused-args",         warn_unused_args).
> +long_option_table("warn-interface-imports",   warn_interface_imports).
> +long_option_table("warn-interface-imports-in-parents",
>                                         warn_interface_imports_in_parents).
> -long_option("warn-inconsistent-pred-order",
> +long_option_table("warn-inconsistent-pred-order",
>                     warn_inconsistent_pred_order_clauses).
> -long_option("warn-inconsistent-pred-order-clauses",
> +long_option_table("warn-inconsistent-pred-order-clauses",
>                     warn_inconsistent_pred_order_clauses).
> -long_option("warn-inconsistent-pred-order-foreign-procs",
> +long_option_table("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",
> +long_option_table("warn-non-contiguous-decls", 
> warn_non_contiguous_decls).
> +long_option_table("warn-non-contiguous-clauses", 
> warn_non_contiguous_clauses).
> +long_option_table("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",
> +long_option_table("warn-non-stratification",  warn_non_stratification).
> +long_option_table("warn-missing-opt-files",   warn_missing_opt_files).
> +long_option_table("warn-missing-trans-opt-files",
> +                                        warn_missing_trans_opt_files).
> +long_option_table("warn-missing-trans-opt-deps", 
> warn_missing_trans_opt_deps).
> +long_option_table("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",
> +long_option_table("warn-simple-code",         warn_simple_code).
> +long_option_table("warn-duplicate-calls",     warn_duplicate_calls).
> +long_option_table("warn-implicit-stream-calls", 
> warn_implicit_stream_calls).
> +long_option_table("warn-missing-module-name", warn_missing_module_name).
> +long_option_table("warn-wrong-module-name",   warn_wrong_module_name).
> +long_option_table("warn-smart-recompilation", warn_smart_recompilation).
> +long_option_table("warn-undefined-options-variables",
>                                         warn_undefined_options_variables).
> -long_option("warn-undefined-options-vars",
> +long_option_table("warn-undefined-options-vars",
>                                         warn_undefined_options_variables).
> -long_option("warn-suspicious-recursion", warn_suspicious_recursion).
> -long_option("warn-non-tail-recursion-self",
> +long_option_table("warn-suspicious-recursion", warn_suspicious_recursion).
> +long_option_table("warn-non-tail-recursion-self",
>                                         warn_non_tail_recursion_self).
> -long_option("warn-non-tail-recursion-mutual",
> +long_option_table("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",
> +long_option_table("warn-non-tail-recursion",  warn_non_tail_recursion).
> +long_option_table("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",
> +long_option_table("warn-target-code",         warn_target_code).
> +long_option_table("warn-up-to-date",          warn_up_to_date).
> +long_option_table("warn-stubs",               warn_stubs).
> +long_option_table("warn-dead-procs",          warn_dead_procs).
> +long_option_table("warn-dead-procedures",     warn_dead_procs).
> +long_option_table("warn-dead-preds",          warn_dead_preds).
> +long_option_table("warn-dead-predicates",     warn_dead_preds).
> +long_option_table("warn-table-with-inline",   warn_table_with_inline).
> +long_option_table("warn-non-term-special-preds", 
> warn_non_term_special_preds).
> +long_option_table("warn-known-bad-format-calls", 
> warn_known_bad_format_calls).
> +long_option_table("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",
> +long_option_table("warn-unknown-format-calls", warn_unknown_format_calls).
> +long_option_table("warn-obsolete",            warn_obsolete).
> +long_option_table("warn-insts-without-matching-type",
> +                    warn_insts_without_matching_type).
> +long_option_table("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",
> +long_option_table("warn-unused-imports",      warn_unused_imports).
> +long_option_table("warn-unused-interface-imports",
> +                    warn_unused_interface_imports).
> +long_option_table("inform-ite-instead-of-switch",
> +                    inform_ite_instead_of_switch).
> +long_option_table("inform-incomplete-switch", inform_incomplete_switch).
> +long_option_table("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",
> +long_option_table("warn-unresolved-polymorphism",
> +                    warn_unresolved_polymorphism).
> +long_option_table("warn-suspicious-foreign-procs",
> +                    warn_suspicious_foreign_procs).
> +long_option_table("warn-suspicious-foreign-code",
> +                    warn_suspicious_foreign_code).
> +long_option_table("warn-state-var-shadowing", warn_state_var_shadowing).
> +long_option_table("warn-unneeded-mode-specific-clause",
>                                         warn_unneeded_mode_specific_clause).
> -long_option("warn-suspected-occurs-failure",
> +long_option_table("warn-suspected-occurs-failure",
>                                         warn_suspected_occurs_check_failure).
> -long_option("warn-suspected-occurs-check-failure",
> +long_option_table("warn-suspected-occurs-check-failure",
>                                         warn_suspected_occurs_check_failure).
> -long_option("warn-potentially-ambiguous-pragma",
> +long_option_table("warn-potentially-ambiguous-pragma",
>                                         warn_potentially_ambiguous_pragma).
> -long_option("warn-potentially-ambiguous-pragmas",
> +long_option_table("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("inform-generated-type-spec-pragmas",
> +long_option_table("warn-ambiguous-pragma",    warn_ambiguous_pragma).
> +long_option_table("warn-ambiguous-pragmas",   warn_ambiguous_pragma).
> +long_option_table("warn-stdlib-shadowing",    warn_stdlib_shadowing).
> +long_option_table("inform-inferred",          inform_inferred).
> +long_option_table("inform-inferred-types",    inform_inferred_types).
> +long_option_table("inform-inferred-modes",    inform_inferred_modes).
> +long_option_table("inform-suboptimal-packing", 
> inform_suboptimal_packing).
> +long_option_table("print-error-spec-id",      print_error_spec_id).
> +long_option_table("inform-ignored-pragma-errors",
> +                                        inform_ignored_pragma_errors).
> +long_option_table("inform-generated-type-spec-pragmas",
>                                          inform_generated_type_spec_pragmas).
>
> %  verbosity options
> -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",
> +long_option_table("verbose",                  verbose).
> +long_option_table("very-verbose",             very_verbose).
> +long_option_table("verbose-error-messages",   verbose_errors).
> +long_option_table("verbose-recompilation",    verbose_recompilation).
> +long_option_table("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",
> +long_option_table("verbose-make",             verbose_make).
> +long_option_table("verbose-commands",         verbose_commands).
> +long_option_table("output-compile-error-lines", 
> output_compile_error_lines).
> +long_option_table("report-cmd-line-args",     report_cmd_line_args).
> +long_option_table("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("inst-statistics",          inst_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",
> +long_option_table("statistics",               statistics).
> +long_option_table("detailed-statistics",      detailed_statistics).
> +long_option_table("proc-size-statistics",     proc_size_statistics).
> +long_option_table("inst-statistics",          inst_statistics).
> +long_option_table("limit-error-contexts",     limit_error_contexts).
> +long_option_table("debug-types",              debug_types).
> +long_option_table("debug-types-pred-name",    debug_types_pred_name).
> +long_option_table("debug-modes",              debug_modes).
> +long_option_table("debug-modes-statistics",   debug_modes_statistics).
> +long_option_table("debug-modes-minimal",      debug_modes_minimal).
> +long_option_table("debug-modes-verbose",      debug_modes_verbose).
> +long_option_table("debug-modes-pred-id",      debug_modes_pred_id).
> +long_option_table("debug-dep-par-conj",       debug_dep_par_conj).
> +long_option_table("debug-determinism",        debug_det).
> +long_option_table("debug-det",                debug_det).
> +long_option_table("debug-code-gen-pred-id",   debug_code_gen_pred_id).
> +long_option_table("debug-termination",        debug_term).
> +long_option_table("debug-term",               debug_term).
> +long_option_table("debug-dead-proc-elim",     debug_dead_proc_elim).
> +long_option_table("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_table("debug-opt",                debug_opt).
> +long_option_table("debug-opt-pred-id",        debug_opt_pred_id).
> +long_option_table("debug-opt-pred-name",      debug_opt_pred_name).
> +long_option_table("debug-pd",                 debug_pd).
> +long_option_table("debug-liveness",           debug_liveness).
> +long_option_table("debug-stack-opt",          debug_stack_opt).
> +long_option_table("debug-make",               debug_make).
> +long_option_table("debug-closure",            debug_closure).
> +long_option_table("debug-trail-usage",        debug_trail_usage).
> +long_option_table("debug-mode-constraints",   debug_mode_constraints).
> +long_option_table("debug-intermodule-analysis", 
> debug_intermodule_analysis).
> +long_option_table("debug-mm-tabling-analysis", 
> debug_mm_tabling_analysis).
> +long_option_table("debug-indirect-reuse",         debug_indirect_reuse).
> +long_option_table("debug-type-rep",               debug_type_rep).
>
> %  output options (mutually exclusive)
> -long_option("generate-source-file-mapping",
> +long_option_table("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-dependencies-ints",
> +long_option_table("generate-dependency-file",
> +    only_opmode_generate_dependency_file).
> +long_option_table("generate-dependencies", 
> only_opmode_generate_dependencies).
> +long_option_table("generate-dependencies-ints",
>                                     only_opmode_generate_dependencies_ints).
> -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",
> +long_option_table("generate-module-order",    generate_module_order).
> +long_option_table("generate-standalone-interface",
> +    generate_standalone_interface).
> +long_option_table("make-short-interface", 
> only_opmode_make_short_interface).
> +long_option_table("make-short-int", 
> only_opmode_make_short_interface).
> +long_option_table("make-interface",         only_opmode_make_interface).
> +long_option_table("make-int",               only_opmode_make_interface).
> +long_option_table("make-private-interface",
> +    only_opmode_make_private_interface).
> +long_option_table("make-priv-int",
> +    only_opmode_make_private_interface).
> +long_option_table("make-optimization-interface",
>     only_opmode_make_optimization_interface).
> -long_option("make-optimisation-interface",
> +long_option_table("make-optimisation-interface",
>     only_opmode_make_optimization_interface).
> -long_option("make-opt-int",
> +long_option_table("make-opt-int",
>     only_opmode_make_optimization_interface).
> -long_option("make-transitive-optimization-interface",
> +long_option_table("make-transitive-optimization-interface",
>     only_opmode_make_transitive_opt_interface).
> -long_option("make-transitive-optimisation-interface",
> +long_option_table("make-transitive-optimisation-interface",
>     only_opmode_make_transitive_opt_interface).
> -long_option("make-trans-opt",
> +long_option_table("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",
> +long_option_table("make-analysis-registry",
> +    only_opmode_make_analysis_registry).
> +long_option_table("make-xml-doc",
> +    only_opmode_make_xml_documentation).
> +long_option_table("make-xml-documentation",
> +    only_opmode_make_xml_documentation).
> +long_option_table("convert-to-mercury", 
> only_opmode_convert_to_mercury).
> +long_option_table("convert-to-Mercury", 
> only_opmode_convert_to_mercury).
> +long_option_table("pretty-print", 
> only_opmode_convert_to_mercury).
> +long_option_table("typecheck-only",           only_opmode_typecheck_only).
> +long_option_table("errorcheck-only",          only_opmode_errorcheck_only).
> +long_option_table("target-code-only",         only_opmode_target_code_only).
> +long_option_table("compile-only",             only_opmode_compile_only).
> +long_option_table("compile-to-shared-lib",    compile_to_shared_lib).
> +long_option_table("output-grade-string", 
> only_opmode_output_grade_string).
> +long_option_table("output-link-command", 
> only_opmode_output_link_command).
> +long_option_table("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",
> +long_option_table("output-stdlib-grades",
> +    only_opmode_output_stdlib_grades).
> +long_option_table("output-libgrades",         only_opmode_output_libgrades).
> +long_option_table("output-cc",                only_opmode_output_cc).
> +long_option_table("output-cc-type",
> +    only_opmode_output_c_compiler_type).
> +long_option_table("output-c-compiler-type",
> +    only_opmode_output_c_compiler_type).
> +long_option_table("output-csharp-compiler",
> +    only_opmode_output_csharp_compiler).
> +long_option_table("output-csharp-compiler-type",
>     only_opmode_output_csharp_compiler_type).
> -long_option("output-cflags",            only_opmode_output_cflags).
> -long_option("output-library-link-flags",
> +long_option_table("output-cflags",            only_opmode_output_cflags).
> +long_option_table("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",
> +long_option_table("output-grade-defines",
> +    only_opmode_output_grade_defines).
> +long_option_table("output-c-include-directory-flags",
>     only_opmode_output_c_include_directory_flags).
> -long_option("output-c-include-dir-flags",
> +long_option_table("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_table("output-target-arch", 
> only_opmode_output_target_arch).
> +long_option_table("output-class-directory", 
> only_opmode_output_java_class_dir).
> +long_option_table("output-class-dir", 
> only_opmode_output_java_class_dir).
> +long_option_table("output-java-class-directory",
> +    only_opmode_output_java_class_dir).
> +long_option_table("output-java-class-dir", 
> only_opmode_output_java_class_dir).
> +long_option_table("output-stdlib-modules", 
> only_opmode_output_stdlib_modules).
>
> %  aux output options
> -long_option("smart-recompilation",      smart_recompilation).
> -long_option("generate-mmc-make-module-dependencies",
> +long_option_table("smart-recompilation",      smart_recompilation).
> +long_option_table("generate-mmc-make-module-dependencies",
> + 
> generate_mmc_make_module_dependencies).
> +long_option_table("generate-mmc-deps",
>                                         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",
> +long_option_table("ssdb-trace",               ssdb_trace_level).
> +long_option_table("link-ssdb-libs",           link_ssdb_libs).
> +long_option_table("link-ssdebug-libs",        link_ssdb_libs).
> +long_option_table("trace",                    trace_level).
> +long_option_table("trace-optimised",          trace_optimized).
> +long_option_table("trace-optimized",          trace_optimized).
> +long_option_table("trace-prof",               trace_prof).
> +long_option_table("trace-table-io",           trace_table_io).
> +long_option_table("trace-table-io-only-retry", 
> trace_table_io_only_retry).
> +long_option_table("trace-table-io-states",    trace_table_io_states).
> +long_option_table("trace-table-io-require",   trace_table_io_require).
> +long_option_table("trace-table-io-all",       trace_table_io_all).
> +long_option_table("trace-flag",               trace_goal_flags).
> +long_option_table("profile-optimised",        prof_optimized).
> +long_option_table("profile-optimized",        prof_optimized).
> +long_option_table("exec-trace-tail-rec",      exec_trace_tail_rec).
> +long_option_table("suppress-trace",           suppress_trace).
> +long_option_table("force-disable-tracing",    force_disable_tracing).
> +long_option_table("delay-death",              delay_death).
> +long_option_table("delay-death-max-vars",     delay_death_max_vars).
> +long_option_table("stack-trace-higher-order", stack_trace_higher_order).
> +long_option_table("force-disable-ssdebug",    force_disable_ssdebug).
> +long_option_table("generate-bytecode",        generate_bytecode).
> +long_option_table("line-numbers",             line_numbers).
> +long_option_table("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("reverse-error-order",      reverse_error_order).
> -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-local-call-tree",     show_local_call_tree).
> -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("show-pred-movability",     show_pred_movability).
> -long_option("imports-graph",            imports_graph).
> -long_option("trans-opt-deps-spec",      trans_opt_deps_spec).
> -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-inst-size-limit", dump_hlds_inst_size_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_table("line-numbers-for-c-headers", line_numbers_for_c_headers).
> +long_option_table("type-repns-for-humans",    type_repns_for_humans).
> +long_option_table("auto-comments",            auto_comments).
> +long_option_table("frameopt-comments",        frameopt_comments).
> +long_option_table("max-error-line-width",     max_error_line_width).
> +long_option_table("reverse-error-order",      reverse_error_order).
> +long_option_table("show-definitions",         show_definitions).
> +long_option_table("show-definition-line-counts", 
> show_definition_line_counts).
> +long_option_table("show-definition-extents",  show_definition_extents).
> +long_option_table("show-local-call-tree",     show_local_call_tree).
> +long_option_table("show-all-type-repns",              show_all_type_repns).
> +long_option_table("show-all-type-representations",    show_all_type_repns).
> +long_option_table("show-local-type-repns", 
> show_local_type_repns).
> +long_option_table("show-local-type-representations", 
> show_local_type_repns).
> +long_option_table("show-developer-type-repns",
> +        show_developer_type_repns).
> +long_option_table("show-developer-type-representations",
> +        show_developer_type_repns).
> +long_option_table("show-dependency-graph",    show_dependency_graph).
> +long_option_table("show-pred-movability",     show_pred_movability).
> +long_option_table("imports-graph",            imports_graph).
> +long_option_table("trans-opt-deps-spec",      trans_opt_deps_spec).
> +long_option_table("dump-trace-counts",        dump_trace_counts).
> +long_option_table("dump-hlds",                dump_hlds).
> +long_option_table("hlds-dump",                dump_hlds).
> +long_option_table("dump-hlds-pred-id",        dump_hlds_pred_id).
> +long_option_table("dump-hlds-pred-name",      dump_hlds_pred_name).
> +long_option_table("dump-hlds-pred-name-order", dump_hlds_pred_name_order).
> +long_option_table("dump-hlds-alias",          dump_hlds_alias).
> +long_option_table("dump-hlds-spec-preds",     dump_hlds_spec_preds).
> +long_option_table("dump-hlds-spec-preds-for", dump_hlds_spec_preds_for).
> +long_option_table("dump-hlds-options",        dump_hlds_options).
> +long_option_table("dump-hlds-inst-limit",     dump_hlds_inst_limit).
> +long_option_table("dump-hlds-inst-size-limit", dump_hlds_inst_size_limit).
> +long_option_table("dump-hlds-file-suffix",    dump_hlds_file_suffix).
> +long_option_table("dump-same-hlds",           dump_same_hlds).
> +long_option_table("dump-mlds",                dump_mlds).
> +long_option_table("dump-mlds-pred-name",      dump_mlds_pred_name).
> +long_option_table("mlds-dump",                dump_mlds).
> +long_option_table("verbose-dump-mlds",        verbose_dump_mlds).
> +long_option_table("verbose-mlds-dump",        verbose_dump_mlds).
> +long_option_table("dump-options-file",        dump_options_file).
> +long_option_table("mode-constraints",         mode_constraints).
> +long_option_table("simple-mode-constraints",  simple_mode_constraints).
> +long_option_table("prop-mode-constraints",    prop_mode_constraints).
> +long_option_table("compute-goal-modes",       compute_goal_modes).
> +long_option_table("propagate-mode-constraints",   prop_mode_constraints).
> +long_option_table("benchmark-modes",          benchmark_modes).
> +long_option_table("benchmark-modes-repeat",   benchmark_modes_repeat).
> +long_option_table("unneeded-code-debug",      unneeded_code_debug).
> +long_option_table("unneeded-code-debug-pred-name",
> +    unneeded_code_debug_pred_name).
> +long_option_table("common-struct-preds",      common_struct_preds).
>
> %  language semantics options
> -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_table("reorder-conj",         reorder_conj).
> +long_option_table("reorder-disj",         reorder_disj).
> +long_option_table("fully-strict",         fully_strict).
> +long_option_table("strict-sequential",    strict_sequential).
> +long_option_table("allow-stubs",          allow_stubs).
> +long_option_table("infer-all",            infer_all).
> +long_option_table("infer-types",          infer_types).
> +long_option_table("infer-modes",          infer_modes).
> +long_option_table("infer-determinism",    infer_det).
> +long_option_table("infer-det",            infer_det).
> +long_option_table("type-inference-iteration-limit",
> +    type_inference_iteration_limit).
> +long_option_table("mode-inference-iteration-limit",
> +    mode_inference_iteration_limit).
> +long_option_table("event-set-file-name",  event_set_file_name).
>
> %  compilation model options
> -long_option("grade",                grade).
> +long_option_table("grade",                grade).
> %  target selection options
> -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_table("target",               target).
> +long_option_table("compile-to-c",         compile_to_c).
> +long_option_table("compile-to-C",         compile_to_c).
> +long_option_table("java",                 java).
> +long_option_table("Java",                 java).
> +long_option_table("java-only",            java_only).
> +long_option_table("Java-only",            java_only).
> +long_option_table("csharp",               csharp).
> +long_option_table("C#",                   csharp).
> +long_option_table("csharp-only",          csharp_only).
> +long_option_table("C#-only",              csharp_only).
> %  Optional features compilation model options:
> %  (a) debugging
> -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_table("debug",                exec_trace).
> +long_option_table("decl-debug",           decl_debug).
> +long_option_table("ssdb",                 source_to_source_debug).
> +long_option_table("ss-debug",             source_to_source_debug).
> +long_option_table("source-to-source-debug", source_to_source_debug).
> %  (b) profiling
> -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",
> +long_option_table("profiling",            profiling).
> +long_option_table("time-profiling",       time_profiling).
> +long_option_table("memory-profiling",     memory_profiling).
> +long_option_table("deep-profiling",       deep_profiling).
> +long_option_table("profile-calls",        profile_calls).
> +long_option_table("profile-time",         profile_time).
> +long_option_table("profile-memory",       profile_memory).
> +long_option_table("profile-deep",         profile_deep).
> +long_option_table("use-activation-counts",    use_activation_counts).
> +long_option_table("pre-prof-transforms-simplify",
> +    pre_prof_transforms_simplify).
> +long_option_table("pre-implicit-parallelism-simplify",
>     pre_implicit_parallelism_simplify).
> -long_option("coverage-profiling",   coverage_profiling).
> -long_option("coverage-profiling-via-calls",
> +long_option_table("coverage-profiling",   coverage_profiling).
> +long_option_table("coverage-profiling-via-calls",
>     coverage_profiling_via_calls).
> -long_option("coverage-profiling-static",
> +long_option_table("coverage-profiling-static",
>     coverage_profiling_static).
> -long_option("profile-deep-coverage-after-goal",
> +long_option_table("profile-deep-coverage-after-goal",
>     profile_deep_coverage_after_goal).
> -long_option("profile-deep-coverage-branch-ite",
> +long_option_table("profile-deep-coverage-branch-ite",
>     profile_deep_coverage_branch_ite).
> -long_option("profile-deep-coverage-branch-switch",
> +long_option_table("profile-deep-coverage-branch-switch",
>     profile_deep_coverage_branch_switch).
> -long_option("profile-deep-coverage-branch-disj",
> +long_option_table("profile-deep-coverage-branch-disj",
>     profile_deep_coverage_branch_disj).
> -long_option("profile-deep-coverage-use-portcounts",
> +long_option_table("profile-deep-coverage-use-portcounts",
>     profile_deep_coverage_use_portcounts).
> -long_option("profile-deep-coverage-use-trivial",
> +long_option_table("profile-deep-coverage-use-trivial",
>     profile_deep_coverage_use_trivial).
> -long_option("profile-for-implicit-parallelism",
> +long_option_table("profile-for-implicit-parallelism",
>     profile_for_feedback).
> -long_option("profile-for-feedback",
> +long_option_table("profile-for-feedback",
>     profile_for_feedback).
> -long_option("use-zeroing-for-ho-cycles",
> +long_option_table("use-zeroing-for-ho-cycles",
>     use_zeroing_for_ho_cycles).
> -long_option("use-lots-of-ho-specialization",
> +long_option_table("use-lots-of-ho-specialization",
>     use_lots_of_ho_specialization).
> -long_option("deep-profile-tail-recursion",
> +long_option_table("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_table("record-term-sizes-as-words", record_term_sizes_as_words).
> +long_option_table("record-term-sizes-as-cells", record_term_sizes_as_cells).
> +long_option_table("experimental-complexity",  experimental_complexity).
> %  (c) miscellaneous optional features
> -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_table("gc",                   gc).
> +long_option_table("garbage-collection",   gc).
> +long_option_table("parallel",             parallel).
> +long_option_table("use-trail",            use_trail).
> +long_option_table("type-layout",          type_layout).
> +long_option_table("maybe-thread-safe",    maybe_thread_safe_opt).
> +long_option_table("extend-stacks-when-needed", 
> extend_stacks_when_needed).
> +long_option_table("stack-segments",       stack_segments).
> +long_option_table("use-regions",          use_regions).
> +long_option_table("use-alloc-regions",    use_alloc_regions).
> +long_option_table("use-regions-debug",    use_regions_debug).
> +long_option_table("use-regions-profiling",use_regions_profiling).
> %  Data representation options
> -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). % for historical reasons
> -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). % for historical 
> ...
> -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_table("use-minimal-model-stack-copy",
> +        use_minimal_model_stack_copy).
> +long_option_table("use-minimal-model-own-stacks",
> +        use_minimal_model_own_stacks).
> +long_option_table("minimal-model-debug",  minimal_model_debug).
> +long_option_table("pregenerated-dist",    pregenerated_dist).
> +long_option_table("single-prec-float",    single_prec_float).
> +long_option_table("single-precision-float",   single_prec_float).
> +long_option_table("num-tag-bits",         num_ptag_bits). % for historical 
> reasons
> +long_option_table("num-ptag-bits",        num_ptag_bits).
> +long_option_table("bits-per-word",        bits_per_word).
> +long_option_table("bytes-per-word",       bytes_per_word).
> +long_option_table("conf-low-tag-bits",    conf_low_ptag_bits). % for 
> historical ...
> +long_option_table("conf-low-ptag-bits",   conf_low_ptag_bits).
> +long_option_table("unboxed-float",        unboxed_float).
> +long_option_table("unboxed-int64s",       unboxed_int64s).
> +long_option_table("unboxed-no-tag-types", unboxed_no_tag_types).
> +long_option_table("arg-pack-bits",        arg_pack_bits).
> +long_option_table("pack-everything",      pack_everything).
> +long_option_table("allow-direct-args",    allow_direct_args).
> +long_option_table("allow-double-word-fields", allow_double_word_fields).
> +long_option_table("allow-double-word-ints", allow_double_word_ints).
> +long_option_table("allow-packing-dummies", allow_packing_dummies).
> +long_option_table("allow-packing-ints",   allow_packing_ints).
> +long_option_table("allow-packing-chars",  allow_packing_chars).
> +long_option_table("allow-packing-local-sectags", 
> allow_packing_local_sectags).
> +long_option_table("allow-packing-remote-sectags",
> +        allow_packing_remote_sectags).
> +long_option_table("allow-packing-mini-types",     allow_packing_mini_types).
> +long_option_table("allow-packed-unify-compare", 
> allow_packed_unify_compare).
> +long_option_table("sync-term-size",       sync_term_size).
> %  LLDS back-end compilation model options
> -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_table("gcc-non-local-gotos",  gcc_non_local_gotos).
> +long_option_table("gcc-global-registers", gcc_global_registers).
> +long_option_table("asm-labels",           asm_labels).
> +long_option_table("use-float-registers",  use_float_registers).
> %  MLDS back-end compilation model options
> -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("c-debug-grade",        c_debug_grade).
> -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_table("highlevel-code",       highlevel_code).
> +long_option_table("high-level-code",      highlevel_code).
> +long_option_table("highlevel-C",          highlevel_code).
> +long_option_table("highlevel-c",          highlevel_code).
> +long_option_table("high-level-C",         highlevel_code).
> +long_option_table("high-level-c",         highlevel_code).
> +long_option_table("c-debug-grade",        c_debug_grade).
> +long_option_table("det-copy-out",         det_copy_out).
> +long_option_table("nondet-copy-out",      nondet_copy_out).
> +long_option_table("put-commit-in-own-func",   put_commit_in_own_func).
>
> %  internal use options
> -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_table("backend-foreign-languages", backend_foreign_languages).
> +long_option_table("agc-stack-layout",     agc_stack_layout).
> +long_option_table("basic-stack-layout",   basic_stack_layout).
> +long_option_table("procid-stack-layout",  procid_stack_layout).
> +long_option_table("trace-stack-layout",   trace_stack_layout).
> +long_option_table("body-typeinfo-liveness",   body_typeinfo_liveness).
> +long_option_table("can-compare-constants-as-ints",
> +        can_compare_constants_as_ints).
> +long_option_table("pretest-equality-cast-pointers",
> +        pretest_equality_cast_pointers).
> +long_option_table("delay-partial-instantiations",
> +        delay_partial_instantiations).
> +long_option_table("allow-defn-of-builtins",
> +        allow_defn_of_builtins).
> +long_option_table("type-ctor-info",       type_ctor_info).
> +long_option_table("type-ctor-layout",     type_ctor_layout).
> +long_option_table("type-ctor-functors",   type_ctor_functors).
> +long_option_table("new-type-class-rtti",  new_type_class_rtti).
> +long_option_table("rtti-line-numbers",    rtti_line_numbers).
> +long_option_table("disable-mm-pneg", 
> disable_minimal_model_stack_copy_pneg).
> +long_option_table("disable-mm-cut", 
> disable_minimal_model_stack_copy_cut).
> +long_option_table("disable-trail-ops", disable_trail_ops).
> +long_option_table("size-region-ite-fixed",        size_region_ite_fixed).
> +long_option_table("size-region-disj-fixed",       size_region_disj_fixed).
> +long_option_table("size-region-commit-fixed",     size_region_commit_fixed).
> +long_option_table("size-region-ite-protect",      size_region_ite_protect).
> +long_option_table("size-region-ite-snapshot",     size_region_ite_snapshot).
> +long_option_table("size-region-semi-disj-protect",
> +        size_region_semi_disj_protect).
> +long_option_table("size-region-disj-snapshot",
> +        size_region_disj_snapshot).
> +long_option_table("size-region-commit-entry",
> +        size_region_commit_entry).
> +long_option_table("allow-multi-arm-switches", allow_multi_arm_switches).
> +long_option_table("type-check-constraints",   type_check_constraints).
>
> %  code generation options
> -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",
> +long_option_table("table-debug",          table_debug).
> +long_option_table("trad-passes",          trad_passes).
> +long_option_table("parallel-liveness",    parallel_liveness).
> +long_option_table("parallel-code-gen",    parallel_code_gen).
> +long_option_table("reclaim-heap-on-failure",  reclaim_heap_on_failure).
> +long_option_table("reclaim-heap-on-semidet-failure",
>                                     reclaim_heap_on_semidet_failure).
> -long_option("reclaim-heap-on-nondet-failure",
> +long_option_table("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).  % obsolete
> -long_option("max-jump-table-size",  max_jump_table_size).
> -% long_option("max-spec-do-call-closure",
> +long_option_table("branch-delay-slot",    have_delay_slot).
> +long_option_table("have-delay-slot",      have_delay_slot).
> +long_option_table("num-real-r-regs",      num_real_r_regs).
> +long_option_table("num-real-f-regs",      num_real_f_regs).
> +long_option_table("num-real-r-temps",     num_real_r_temps).
> +long_option_table("num-real-f-temps",     num_real_f_temps).
> +long_option_table("num-real-temps",       num_real_r_temps).  % obsolete
> +long_option_table("max-jump-table-size",  max_jump_table_size).
> +% long_option_table("max-spec-do-call-closure",
> %                    max_specialized_do_call_closure).
> -% long_option("max-spec-do-call-class-method",
> +% long_option_table("max-spec-do-call-class-method",
> %                    max_specialized_do_call_class_method).
> -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",
> +long_option_table("compare-specialization",   compare_specialization).
> +long_option_table("should-pretest-equality",  should_pretest_equality).
> +long_option_table("fact-table-max-array-size",fact_table_max_array_size).
> +long_option_table("fact-table-hash-percent-full",
>                     fact_table_hash_percent_full).
> -long_option("prefer-switch",        prefer_switch).
> -long_option("prefer-while-loop-over-jump-self",
> +long_option_table("prefer-switch",        prefer_switch).
> +long_option_table("prefer-while-loop-over-jump-self",
>                                     prefer_while_loop_over_jump_self).
> -long_option("prefer-while-loop-over-jump-mutual",
> +long_option_table("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_table("opt-no-return-calls",  opt_no_return_calls).
> +long_option_table("debug-class-init",     debug_class_init).
>
> %  optimization options
>
> -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",
> +long_option_table("default-opt-level",    default_opt_level).
> +long_option_table("opt-level",            opt_level).
> +long_option_table("optimization-level",   opt_level).
> +long_option_table("optimisation-level",   opt_level).
> +long_option_table("opt-space",            opt_space).
> +long_option_table("optimize-space",       opt_space).
> +long_option_table("optimise-space",       opt_space).
> +long_option_table("intermod-opt",        intermodule_optimization).
> +long_option_table("intermodule-optimization", intermodule_optimization).
> +long_option_table("intermodule-optimisation", intermodule_optimization).
> +long_option_table("read-opt-files-transitively", 
> read_opt_files_transitively).
> +long_option_table("use-opt-files",        use_opt_files).
> +long_option_table("use-trans-opt-files",  use_trans_opt_files).
> +long_option_table("transitive-intermodule-optimization",
>                     transitive_optimization).
> -long_option("transitive-intermodule-optimisation",
> +long_option_table("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_table("trans-intermod-opt",   transitive_optimization).
> +long_option_table("intermodule-analysis", intermodule_analysis).
> +long_option_table("analysis-repeat",      analysis_repeat).
> +long_option_table("analysis-file-cache",  analysis_file_cache).
>
> %  HLDS->HLDS optimizations
> -long_option("allow-inlining",       optopt_allow_inlining).
> -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_table("allow-inlining",       optopt_allow_inlining).
> +long_option_table("inlining",             inlining).
> +long_option_table("inline-simple",        optopt_inline_simple).
> +long_option_table("inline-builtins",      optopt_inline_builtins).
> +long_option_table("inline-single-use",    optopt_inline_single_use).
> +long_option_table("inline-call-cost",     optopt_inline_call_cost).
> +long_option_table("inline-compound-threshold", 
> optopt_inline_compound_threshold).
> +long_option_table("inline-simple-threshold", 
> optopt_inline_simple_threshold).
> +long_option_table("intermod-inline-simple-threshold",
> +                                optopt_intermod_inline_simple_threshold).
> +long_option_table("inline-linear-tail-rec-sccs",
> +                                optopt_inline_linear_tail_rec_sccs).
> +long_option_table("inline-linear-tail-rec-sccs-max-extra",
> + 
> optopt_inline_linear_tail_rec_sccs_max_extra).
> +long_option_table("from-ground-term-threshold",
> +                                optopt_from_ground_term_threshold).
> +long_option_table("inline-vars-threshold",  optopt_inline_vars_threshold).
> %  This option is only for internal use by the compiler.
> -% long_option("const-struct-poly",    optopt_enable_const_struct_poly).
> -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("merge-code-after-switch",      optopt_merge_code_after_switch).
> -long_option("optimize-format-calls",        optopt_optimize_format_calls).
> -long_option("split-switch-arms",        optopt_split_switch_arms).
> -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",
> +% long_option_table("const-struct-poly", 
> optopt_enable_const_struct_poly).
> +long_option_table("const-struct",         optopt_enable_const_struct_user).
> +long_option_table("common-struct",        optopt_common_struct).
> +long_option_table("excess-assign",        optopt_excess_assign).
> +long_option_table("merge-code-after-switch", 
> optopt_merge_code_after_switch).
> +long_option_table("optimize-format-calls",    optopt_optimize_format_calls).
> +long_option_table("split-switch-arms",        optopt_split_switch_arms).
> +long_option_table("optimize-duplicate-calls", 
> optopt_optimize_duplicate_calls).
> +long_option_table("optimise-duplicate-calls", 
> optopt_optimize_duplicate_calls).
> +long_option_table("optimise-constant-propagation",
> +                        optopt_constant_propagation).
> +long_option_table("optimize-constant-propagation",
> +                        optopt_constant_propagation).
> +long_option_table("optimize-saved-vars",  optimize_saved_vars).
> +long_option_table("optimise-saved-vars",  optimize_saved_vars).
> +long_option_table("loop-invariants",      optopt_loop_invariants).
> +long_option_table("optimize-saved-vars-const", 
> optopt_optimize_saved_vars_const).
> +long_option_table("optimise-saved-vars-const", 
> optopt_optimize_saved_vars_const).
> +long_option_table("optimize-saved-vars-cell", 
> optopt_optimize_saved_vars_cell).
> +long_option_table("optimise-saved-vars-cell", 
> optopt_optimize_saved_vars_cell).
> +long_option_table("osv-loop",      optopt_optimize_saved_vars_cell_loop).
> +long_option_table("osv-full-path", 
> optopt_optimize_saved_vars_cell_full_path).
> +long_option_table("osv-on-stack", 
> optopt_optimize_saved_vars_cell_on_stack).
> +long_option_table("osv-cand-head",
>                          optopt_optimize_saved_vars_cell_candidate_headvars).
> %  The next four options are used by tupling.m as well; changes to them
> %  may require changes there as well.
> -long_option("osv-cvstore-cost",
> +long_option_table("osv-cvstore-cost",
>                         optopt_optimize_saved_vars_cell_cv_store_cost).
> -long_option("osv-cvload-cost",
> +long_option_table("osv-cvload-cost",
>                         optopt_optimize_saved_vars_cell_cv_load_cost).
> -long_option("osv-fvstore-cost",
> +long_option_table("osv-fvstore-cost",
>                         optopt_optimize_saved_vars_cell_fv_store_cost).
> -long_option("osv-fvload-cost",
> +long_option_table("osv-fvload-cost",
>                         optopt_optimize_saved_vars_cell_fv_load_cost).
> -long_option("osv-op-ratio",
> +long_option_table("osv-op-ratio",
>                         optopt_optimize_saved_vars_cell_op_ratio).
> -long_option("osv-node-ratio",
> +long_option_table("osv-node-ratio",
>                         optopt_optimize_saved_vars_cell_node_ratio).
> -long_option("osv-allpath-node-ratio",
> +long_option_table("osv-allpath-node-ratio",
>                         optopt_optimize_saved_vars_cell_all_path_node_ratio).
> -long_option("osv-all-cand",
> +long_option_table("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",
> +long_option_table("delay-construct",      optopt_delay_construct).
> +long_option_table("delay-constructs",     optopt_delay_construct).
> +long_option_table("follow-code",          optopt_follow_code).
> +long_option_table("constraint-propagation", 
> optopt_constraint_propagation).
> +long_option_table("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",
> +long_option_table("optimize-unused-args", optopt_optimize_unused_args).
> +long_option_table("optimise-unused-args", optopt_optimize_unused_args).
> +long_option_table("intermod-unused-args", optopt_intermod_unused_args).
> +long_option_table("optimize-higher-order",    optopt_optimize_higher_order).
> +long_option_table("optimise-higher-order",    optopt_optimize_higher_order).
> +long_option_table("higher-order-size-limit", 
> optopt_higher_order_size_limit).
> +long_option_table("higher-order-arg-limit", 
> optopt_higher_order_arg_limit).
> +long_option_table("unneeded-code",        optopt_unneeded_code).
> +long_option_table("unneeded-code-copy-limit", 
> optopt_unneeded_code_copy_limit).
> +long_option_table("type-specialization",  optopt_type_specialization).
> +long_option_table("type-specialisation",  optopt_type_specialization).
> +long_option_table("user-guided-type-specialization",
>                     optopt_user_guided_type_specialization).
> -long_option("user-guided-type-specialisation",
> +long_option_table("user-guided-type-specialisation",
>                      optopt_user_guided_type_specialization).
> %  This option is for use in configure.in to test for some bug-fixes for
> %  type-specialization which are needed to compile the library. It's not
> %  documented, and should eventually be removed.
> -long_option("fixed-user-guided-type-specialization",
> +long_option_table("fixed-user-guided-type-specialization",
>                     optopt_user_guided_type_specialization).
> -long_option("introduce-accumulators",   optopt_introduce_accumulators).
> -long_option("optimise-constructor-last-call-accumulator",
> +long_option_table("introduce-accumulators", 
> optopt_introduce_accumulators).
> +long_option_table("optimise-constructor-last-call-accumulator",
>                     optopt_optimize_constructor_last_call_accumulator).
> -long_option("optimize-constructor-last-call-accumulator",
> +long_option_table("optimize-constructor-last-call-accumulator",
>                     optopt_optimize_constructor_last_call_accumulator).
> -long_option("optimise-constructor-last-call-null",
> +long_option_table("optimise-constructor-last-call-null",
>                     optopt_optimize_constructor_last_call_null).
> -long_option("optimize-constructor-last-call-null",
> +long_option_table("optimize-constructor-last-call-null",
>                     optopt_optimize_constructor_last_call_null).
> -long_option("optimise-constructor-last-call",
> +long_option_table("optimise-constructor-last-call",
>                     optopt_optimize_constructor_last_call).
> -long_option("optimize-constructor-last-call",
> +long_option_table("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",
> +long_option_table("optimize-dead-procs",  optopt_optimize_dead_procs).
> +long_option_table("optimise-dead-procs",  optopt_optimize_dead_procs).
> +long_option_table("deforestation",        optopt_deforestation).
> +long_option_table("deforestation-depth-limit", 
> optopt_deforestation_depth_limit).
> +long_option_table("deforestation-cost-factor", 
> optopt_deforestation_cost_factor).
> +long_option_table("deforestation-vars-threshold",
>                                     optopt_deforestation_vars_threshold).
> -long_option("deforestation-size-threshold",
> +long_option_table("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",
> +long_option_table("untuple",              optopt_untuple).
> +long_option_table("tuple",                optopt_tuple).
> +long_option_table("tuple-trace-counts-file", 
> optopt_tuple_trace_counts_file).
> +long_option_table("tuple-costs-ratio",    optopt_tuple_costs_ratio).
> +long_option_table("tuple-min-args",       optopt_tuple_min_args).
> +long_option_table("inline-par-builtins",  optopt_inline_par_builtins).
> +long_option_table("always-specialize-in-dep-par-conjs",
>                                     optopt_always_specialize_in_dep_par_conjs).
> -long_option("allow-some-paths-only-waits",
> +long_option_table("allow-some-paths-only-waits",
>                                     optopt_allow_some_paths_only_waits).
> -long_option("region-analysis",      optopt_region_analysis).
> +long_option_table("region-analysis",      optopt_region_analysis).
>
> %  HLDS->LLDS optimizations
> -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",
> +long_option_table("smart-indexing",       optopt_smart_indexing).
> +long_option_table("smart-atomic-indexing", optopt_smart_atomic_indexing).
> +long_option_table("smart-string-indexing", optopt_smart_string_indexing).
> +long_option_table("smart-tag-indexing",    optopt_smart_tag_indexing).
> +long_option_table("smart-float-indexing",  optopt_smart_float_indexing).
> +long_option_table("dense-switch-req-density", 
> optopt_dense_switch_req_density).
> +long_option_table("lookup-switch-req-density",
> +                                    optopt_lookup_switch_req_density).
> +long_option_table("dense-switch-size",    optopt_dense_switch_size).
> +long_option_table("lookup-switch-size",   optopt_lookup_switch_size).
> +long_option_table("string-switch-size",   optopt_string_hash_switch_size).
> +long_option_table("string-trie-size",     optopt_string_trie_switch_size).
> +long_option_table("string-trie-switch-size", 
> optopt_string_trie_switch_size).
> +long_option_table("string-hash-switch-size", 
> optopt_string_hash_switch_size).
> +long_option_table("string-binary-switch-size", 
> optopt_string_binary_switch_size).
> +long_option_table("tag-switch-size",      optopt_tag_switch_size).
> +long_option_table("try-switch-size",      optopt_try_switch_size).
> +long_option_table("binary-switch-size",   optopt_binary_switch_size).
> +long_option_table("switch-single-rec-base-first",
>                                     optopt_switch_single_rec_base_first).
> -long_option("switch-multi-rec-base-first",
> +long_option_table("switch-multi-rec-base-first",
>                                     optopt_switch_multi_rec_base_first).
> -long_option("static-ground-terms",  optopt_static_ground_cells).
> +long_option_table("static-ground-terms",  optopt_static_ground_cells).
> %  static_ground_floats should be set only in handle_options.m.
> -% long_option("static-ground-floats", static_ground_floats).
> +% long_option_table("static-ground-floats", static_ground_floats).
> %  static_ground_int64s should be set only in handle_options.m.
> -% long_option("static-ground-int64s", static_ground_int64s).
> +% long_option_table("static-ground-int64s", static_ground_int64s).
> %  static_code_addresses should be set only in handle_options.m.
> -% long_option("static-code-addresses", static_code_addresses).
> -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_table("static-code-addresses", static_code_addresses).
> +long_option_table("use-atomic-cells",     optopt_use_atomic_cells).
> +long_option_table("middle-rec",           optopt_middle_rec).
> +long_option_table("simple-neg",           optopt_simple_neg).
> +long_option_table("allow-hijacks",        optopt_allow_hijacks).
>
> %  MLDS optimizations
> %  Option `optimize' is used for both MLDS and LLDS optimizations, but since
> %  you can't use both at the same time it doesn't really matter.
> -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",
> +long_option_table("mlds-optimize",        optopt_optimize).
> +long_option_table("mlds-optimise",        optopt_optimize).
> +long_option_table("mlds-peephole",        optopt_optimize_peep).
> +long_option_table("optimize-tailcalls",   optopt_optimize_mlds_tailcalls).
> +long_option_table("optimise-tailcalls",   optopt_optimize_mlds_tailcalls).
> +long_option_table("optimize-initializations", 
> optopt_optimize_initializations).
> +long_option_table("optimise-initializations", 
> optopt_optimize_initializations).
> +long_option_table("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_table("eliminate-local-vars", optopt_eliminate_local_vars).
> +long_option_table("generate-trail-ops-inline", 
> optopt_generate_trail_ops_inline).
>
> %  LLDS optimizations
> -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-copyprop",    optimize_copyprop).
> -%%% long_option("optimise-copyprop",    optimize_copyprop).
> -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_table("common-data",          optopt_common_data).
> +long_option_table("common-layout-data",   optopt_common_layout_data).
> +long_option_table("llds-optimize",        optopt_optimize).
> +long_option_table("llds-optimise",        optopt_optimize).
> +long_option_table("optimize-peep",        optopt_optimize_peep).
> +long_option_table("optimise-peep",        optopt_optimize_peep).
> +long_option_table("optimize-peep-mkword", optopt_optimize_peep_mkword).
> +long_option_table("optimise-peep-mkword", optopt_optimize_peep_mkword).
> +long_option_table("optimize-jumps",       optopt_optimize_jumps).
> +long_option_table("optimise-jumps",       optopt_optimize_jumps).
> +long_option_table("optimize-fulljumps",   optopt_optimize_fulljumps).
> +long_option_table("optimise-fulljumps",   optopt_optimize_fulljumps).
> +long_option_table("pessimize-tailcalls",  optopt_pessimize_tailcalls).
> +long_option_table("checked-nondet-tailcalls", 
> optopt_checked_nondet_tailcalls).
> +long_option_table("use-local-vars",       optopt_use_local_vars).
> +long_option_table("local-var-access-threshold",
> +        optopt_local_var_access_threshold).
> +long_option_table("standardise-labels",   optopt_standardize_labels).
> +long_option_table("standardize-labels",   optopt_standardize_labels).
> +long_option_table("optimize-labels",      optopt_optimize_labels).
> +long_option_table("optimise-labels",      optopt_optimize_labels).
> +long_option_table("optimize-dups",        optopt_optimize_dups).
> +long_option_table("optimise-dups",        optopt_optimize_dups).
> +long_option_table("optimize-proc-dups",   optopt_optimize_proc_dups).
> +long_option_table("optimise-proc-dups",   optopt_optimize_proc_dups).
> +%%% long_option_table("optimize-copyprop",    optimize_copyprop).
> +%%% long_option_table("optimise-copyprop",    optimize_copyprop).
> +long_option_table("optimize-frames",      optopt_optimize_frames).
> +long_option_table("optimise-frames",      optopt_optimize_frames).
> +long_option_table("optimize-delay-slot",  optopt_optimize_delay_slot).
> +long_option_table("optimise-delay-slot",  optopt_optimize_delay_slot).
> +long_option_table("optimize-reassign",    optopt_optimize_reassign).
> +long_option_table("optimise-reassign",    optopt_optimize_reassign).
> +long_option_table("optimize-repeat",      optopt_optimize_repeat).
> +long_option_table("optimise-repeat",      optopt_optimize_repeat).
> +long_option_table("layout-compression-limit",
> +        optopt_layout_compression_limit).
>
> %  LLDS->C optimizations
> -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",
> +long_option_table("use-macro-for-redo-fail", 
> optopt_use_macro_for_redo_fail).
> +long_option_table("emit-c-loops",         optopt_emit_c_loops).
> +long_option_table("procs-per-c-function", optopt_procs_per_c_function).
> +long_option_table("procs-per-C-function", optopt_procs_per_c_function).
> +long_option_table("everything-in-one-c-function",
>                                     optopt_everything_in_one_c_function).
> -long_option("everything-in-one-C-function",
> +long_option_table("everything-in-one-C-function",
>                                     optopt_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",
> +long_option_table("inline-alloc",         optopt_inline_alloc).
> +long_option_table("local-thread-engine-base", 
> optopt_local_thread_engine_base).
> +
> +long_option_table("enable-termination",   termination).
> +long_option_table("enable-term",          termination).
> +long_option_table("check-termination",    termination_check).
> +long_option_table("check-term",           termination_check).
> +long_option_table("chk-term",             termination_check).
> +long_option_table("verbose-check-termination", termination_check_verbose).
> +long_option_table("verb-check-term",      termination_check_verbose).
> +long_option_table("verb-chk-term",        termination_check_verbose).
> +long_option_table("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",
> +long_option_table("term-single-arg",      termination_single_args).
> +long_option_table("termination-norm",     termination_norm).
> +long_option_table("term-norm",            termination_norm).
> +long_option_table("termination-error-limit",  termination_error_limit).
> +long_option_table("term-err-limit",       termination_error_limit).
> +long_option_table("termination-path-limit",   termination_path_limit).
> +long_option_table("term-path-limit",      termination_path_limit).
> +long_option_table("enable-termination2",  termination2).
> +long_option_table("enable-term2",         termination2).
> +long_option_table("check-termination2",   termination2_check).
> +long_option_table("check-term2",          termination2_check).
> +long_option_table("chk-term2",            termination2_check).
> +long_option_table("verbose-check-termination2", termination2_check_verbose).
> +long_option_table("verb-check-term2",     termination2_check_verbose).
> +long_option_table("verb-chk-term2",       termination2_check_verbose).
> +long_option_table("termination2-widening-limit", widening_limit).
> +long_option_table("term2-widening-limit",     widening_limit).
> +long_option_table("arg-size-analysis-only",   arg_size_analysis_only).
> +long_option_table("termination2-propagate-failure-constraints",
> +                    propagate_failure_constrs).
> +long_option_table("term2-propagate-failure-constraints",
>                     propagate_failure_constrs).
> -long_option("term2-propagate-failure-constraints",
> +long_option_table("term2-propagate-failure-constrs",
>                     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_table("termination2-norm", termination2_norm).
> +long_option_table("term2-norm", termination2_norm).
> +long_option_table("termination2-maximum-matrix-size", 
> term2_maximum_matrix_size).
> +long_option_table("term2-max-matrix-size", term2_maximum_matrix_size).
> +long_option_table("analyse-exceptions",   analyse_exceptions).
> +long_option_table("analyse-closures",     analyse_closures).
> +long_option_table("analyse-local-closures",   analyse_closures).
> +long_option_table("analyse-trail-usage",  analyse_trail_usage).
> +long_option_table("optimize-trail-usage", optimize_trail_usage).
> +long_option_table("optimize-region-ops",  optimize_region_ops).
> +long_option_table("analyse-mm-tabling",   analyse_mm_tabling).
>
> %  CTGC related options.
> -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_table("structure-sharing",    structure_sharing_analysis).
> +long_option_table("structure-sharing-widening", structure_sharing_widening).
> +long_option_table("structure-reuse",      structure_reuse_analysis).
> +long_option_table("ctgc",                 structure_reuse_analysis).
> +long_option_table("structure-reuse-constraint", structure_reuse_constraint).
> +long_option_table("ctgc-constraint",      structure_reuse_constraint).
> +long_option_table("structure-reuse-constraint-arg",
> +            structure_reuse_constraint_arg).
> +long_option_table("ctgc-constraint-arg",  structure_reuse_constraint_arg).
> +long_option_table("structure-reuse-max-conditions",
> +            structure_reuse_max_conditions).
> +long_option_table("structure-reuse-repeat", structure_reuse_repeat).
> +long_option_table("structure-reuse-free-cells", structure_reuse_free_cells).
>
> %  Target code compilation options
> -long_option("target-debug",         target_debug).
> +long_option_table("target-debug",         target_debug).
>
> -long_option("cc",                   cc).
> -long_option("c-optimise",           optopt_c_optimize).
> -long_option("c-optimize",           optopt_c_optimize).
> +long_option_table("cc",                   cc).
> +long_option_table("c-optimise",           optopt_c_optimize).
> +long_option_table("c-optimize",           optopt_c_optimize).
> %  XXX we should consider the relationship between c_debug and target_debug
> %  more carefully. Perhaps target_debug could imply C debug if the target is 
> %  C.
> %  However for the moment they are just synonyms.
> -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_table("c-debug",              target_debug).
> +long_option_table("c-include-directory",  c_include_directory).
> +long_option_table("c-include-dir",        c_include_directory).
> +long_option_table("ansi-c",               ansi_c).
> +long_option_table("cflags",               cflags).
> +long_option_table("cflag",                quoted_cflag).
> +
> +long_option_table("gcc-flags",            gcc_flags).
> +long_option_table("gcc-flag",             quoted_gcc_flag).
> +long_option_table("clang-flags",          clang_flags).
> +long_option_table("clang-flag",           quoted_clang_flag).
> +long_option_table("msvc-flags",           msvc_flags).
> +long_option_table("msvc-flag",            quoted_msvc_flag).
> +
> +long_option_table("cflags-for-warnings",  cflags_for_warnings).
> +long_option_table("cflags-for-optimization",  cflags_for_optimization).
> +long_option_table("cflags-for-ansi",      cflags_for_ansi).
> +long_option_table("cflags-for-regs",      cflags_for_regs).
> +long_option_table("cflags-for-gotos",     cflags_for_gotos).
> +long_option_table("cflags-for-threads",   cflags_for_threads).
> +long_option_table("cflags-for-debug",     cflags_for_debug).
> +long_option_table("cflags-for-sanitizers", cflags_for_sanitizers).
> +long_option_table("cflags-for-pic",       cflags_for_pic).
> +long_option_table("cflags-for-lto",       cflags_for_lto).
> +long_option_table("c-flag-to-name-object-file", c_flag_to_name_object_file).
> +long_option_table("object-file-extension",    object_file_extension).
> +long_option_table("pic-object-file-extension", pic_object_file_extension).
> +long_option_table("c-compiler-type",      c_compiler_type).
> +long_option_table("csharp-compiler-type", csharp_compiler_type).
> +
> +long_option_table("java-compiler",        java_compiler).
> +long_option_table("javac",                java_compiler).
> +long_option_table("java-interpreter",     java_interpreter).
> +long_option_table("javac-flags",          java_compiler_flags).
> +long_option_table("javac-flag",           quoted_java_compiler_flag).
> +long_option_table("java-flags",           java_compiler_flags).
> +long_option_table("java-flag",            quoted_java_compiler_flag).
> %  XXX we should consider the relationship between java_debug and 
> %  target_debug
> %  more carefully. Perhaps target_debug could imply Java debug if the target
> %  is Java. However for the moment they are just synonyms.
> -long_option("java-debug",           target_debug).
> -long_option("java-classpath",       java_classpath).
> -long_option("java-runtime-flags",   java_runtime_flags).
> -long_option("java-runtime-flag",    quoted_java_runtime_flag).
> +long_option_table("java-debug",           target_debug).
> +long_option_table("java-classpath",       java_classpath).
> +long_option_table("java-runtime-flags",   java_runtime_flags).
> +long_option_table("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_table("csharp-compiler",      csharp_compiler).
> +long_option_table("csharp-flags",         csharp_flags).
> +long_option_table("csharp-flag",          quoted_csharp_flag).
> +long_option_table("cli-interpreter",      cli_interpreter).
>
> %  link options
> -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",
> +long_option_table("output-file",          output_file_name).
> +long_option_table("ld-flags",             ld_flags).
> +long_option_table("ld-flag",              quoted_ld_flag).
> +long_option_table("ld-libflags",          ld_libflags).
> +long_option_table("ld-libflag",           quoted_ld_libflag).
> +long_option_table("library-directory",    link_library_directories).
> +long_option_table("runtime-library-directory", 
> runtime_link_library_directories).
> +long_option_table("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",
> +long_option_table("library",              link_libraries).
> +long_option_table("link-object",          link_objects).
> +long_option_table("mercury-library",      mercury_library_special).
> +long_option_table("ml",                   mercury_library_special).
> +long_option_table("mercury-library-directory",
> +                mercury_library_directory_special).
> +long_option_table("mld", 
> mercury_library_directory_special).
> +long_option_table("search-library-files-directory",
>                 search_library_files_directory_special).
> -long_option("search-lib-files-dir",
> +long_option_table("search-lib-files-dir",
>                 search_library_files_directory_special).
> -long_option("mercury-standard-library-directory",
> +long_option_table("mercury-standard-library-directory",
>                 mercury_standard_library_directory_special).
> -long_option("mercury-stdlib-dir",
> +long_option_table("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",
> +long_option_table("init-file-directory",  init_file_directories).
> +long_option_table("init-file",            init_files).
> +long_option_table("trace-init-file",      trace_init_files).
> +long_option_table("linkage",              linkage_special).
> +long_option_table("mercury-linkage",      mercury_linkage_special).
> +long_option_table("demangle",             demangle).
> +long_option_table("strip",                strip).
> +long_option_table("main",                 main).
> +long_option_table("allow-undefined",      allow_undefined).
> +long_option_table("use-readline",         use_readline).
> +long_option_table("runtime-flags",        runtime_flags).
> +long_option_table("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",
> +long_option_table("extra-inits",      extra_initialization_functions).
> +long_option_table("framework",        frameworks).
> +long_option_table("framework-directory", framework_directories).
> +long_option_table("sign-assembly", sign_assembly).
> +long_option_table("cstack-reserve-size", cstack_reserve_size).
> +
> +long_option_table("shared-library-extension", shared_library_extension).
> +long_option_table("library-extension",    library_extension).
> +long_option_table("executable-file-extension", executable_file_extension).
> +long_option_table("create-archive-command",   create_archive_command).
> +long_option_table("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_table("create-archive-command-flags",
> +                    create_archive_command_flags).
> +long_option_table("link-executable-command",  link_executable_command).
> +long_option_table("link-shared-lib-command",  link_shared_lib_command).
> +long_option_table("ranlib-command",       ranlib_command).
> +long_option_table("ranlib-flags",         ranlib_flags).
> +long_option_table("mkinit-command",       mkinit_command).
> +long_option_table("mkinit-erl-command",   mkinit_erl_command).
> +long_option_table("demangle-command",     demangle_command).
> +long_option_table("filtercc-command",     filtercc_command).
> +long_option_table("filterjavac-command",  filterjavac_command).
> +long_option_table("trace-libs",           trace_libs).
> +long_option_table("thread-libs",          thread_libs).
> +long_option_table("hwloc-libs",           hwloc_libs).
> +long_option_table("hwloc-static-libs",    hwloc_static_libs).
> +long_option_table("shared-libs",          shared_libs).
> +long_option_table("math-lib",             math_lib).
> +long_option_table("readline-libs",        readline_libs).
> +long_option_table("linker-opt-separator", linker_opt_separator).
> +long_option_table("linker-debug-flags",   linker_debug_flags).
> +long_option_table("shlib-linker-debug-flags", shlib_linker_debug_flags).
> +long_option_table("linker-sanitizer-flags", linker_sanitizer_flags).
> +long_option_table("linker-trace-flags",   linker_trace_flags).
> +long_option_table("shlib-linker-trace-flags", shlib_linker_trace_flags).
> +long_option_table("linker-thread-flags",  linker_thread_flags).
> +long_option_table("shlib-linker-thread-flags", shlib_linker_thread_flags).
> +long_option_table("linker-lto-flags",     linker_lto_flags).
> +long_option_table("linker-static-flags",  linker_static_flags).
> +long_option_table("linker-strip-flag",    linker_strip_flag).
> +long_option_table("linker-link-lib-flag", linker_link_lib_flag).
> +long_option_table("linker-link-lib-suffix",   linker_link_lib_suffix).
> +long_option_table("shlib-linker-link-lib-flag", shlib_linker_link_lib_flag).
> +long_option_table("shlib-linker-link-lib-suffix",
> +                    shlib_linker_link_lib_suffix).
> +long_option_table("linker-path-flag",     linker_path_flag).
> +long_option_table("linker-rpath-flag",    linker_rpath_flag).
> +long_option_table("linker-rpath-separator",   linker_rpath_separator).
> +long_option_table("shlib-linker-rpath-flag",  shlib_linker_rpath_flag).
> +long_option_table("shlib-linker-rpath-separator",
> +                    shlib_linker_rpath_separator).
> +long_option_table("linker-allow-undefined-flag", 
> linker_allow_undefined_flag).
> +long_option_table("linker-error-undefined-flag", 
> linker_error_undefined_flag).
> +long_option_table("shlib-linker-use-install-name",
> +                    shlib_linker_use_install_name).
> +long_option_table("shlib-linker-install-name-flag",
> +                    shlib_linker_install_name_flag).
> +long_option_table("shlib-linker-install-name-path",
> +                     shlib_linker_install_name_path).
> +long_option_table("strip-executable-command", strip_executable_command).
> +long_option_table("strip-executable-shared-flags",
> +                    strip_executable_shared_flags).
> +long_option_table("strip-executable-static-flags",
> +                    strip_executable_static_flags).
> +long_option_table("java-archive-command", java_archive_command).
>
> %  build system options
> -long_option("make",                 only_opmode_make).
> -long_option("invoked-by-mmc-make",  only_opmode_invoked_by_mmc_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("pre-link-command",     pre_link_command).
> -long_option("extra-init-command",   extra_init_command).
> -long_option("mercury-configuration-directory",
> +long_option_table("make",                 only_opmode_make).
> +long_option_table("invoked-by-mmc-make",  only_opmode_invoked_by_mmc_make).
> +long_option_table("keep-going",           keep_going).
> +long_option_table("rebuild",              rebuild).
> +long_option_table("jobs",                 jobs).
> +long_option_table("track-flags",          track_flags).
> +long_option_table("track-options",        track_flags).
> +long_option_table("pre-link-command",     pre_link_command).
> +long_option_table("extra-init-command",   extra_init_command).
> +long_option_table("mercury-configuration-directory",
>                 mercury_configuration_directory_special).
> -long_option("mercury-config-dir",
> +long_option_table("mercury-config-dir",
>                 mercury_configuration_directory_special).
> -long_option("install-prefix",       install_prefix).
> -long_option("install-method",       install_method).
> -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",          setting_only_use_subdirs).
> -long_option("use-grade-subdirs",    setting_only_use_grade_subdirs).
> -long_option("std-int-file-not-written-msgs", 
> std_int_file_not_written_msgs).
> -long_option("search-directory",     search_directories).
> -long_option("intermod-directory",   intermod_directories).
> -long_option("use-search-directories-for-intermod",
> +long_option_table("install-prefix",       install_prefix).
> +long_option_table("install-method",       install_method).
> +long_option_table("install-command",      install_command).
> +long_option_table("install-command-dir-option", install_command_dir_option).
> +long_option_table("use-symlinks",         use_symlinks).
> +long_option_table("library-grade",        libgrades).
> +long_option_table("detect-libgrades",     detect_libgrades).
> +long_option_table("libgrade",             libgrades).
> +long_option_table("libgrades-include-component", 
> libgrades_include_components).
> +long_option_table("libgrades-include", 
> libgrades_include_components).
> +long_option_table("libgrades-exclude-component", 
> libgrades_exclude_components).
> +long_option_table("libgrades-exclude", 
> libgrades_exclude_components).
> +long_option_table("library-linkage",      lib_linkages).
> +long_option_table("lib-linkage",          lib_linkages).
> +long_option_table("flags",                flags_file).
> +long_option_table("flags-file",           flags_file).
> +long_option_table("options-file",         options_files).
> +long_option_table("config-file",          config_file).
> +long_option_table("options-search-directory", options_search_directories).
> +long_option_table("use-subdirs",          setting_only_use_subdirs).
> +long_option_table("use-grade-subdirs",    setting_only_use_grade_subdirs).
> +long_option_table("std-int-file-not-written-msgs",
> +                    std_int_file_not_written_msgs).
> +long_option_table("search-directory",     search_directories).
> +long_option_table("intermod-directory",   intermod_directories).
> +long_option_table("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_table("libgrade-install-check", libgrade_install_check).
> +long_option_table("order-make-by-timestamp", order_make_by_timestamp).
> +long_option_table("show-make-times",      show_make_times).
> +long_option_table("extra-lib-header",     extra_library_header).
> +long_option_table("extra-library-header", extra_library_header).
> +long_option_table("restricted-command-line", restricted_command_line).
> +long_option_table("env-type",                env_type).
> +long_option_table("host-env-type",           host_env_type).
> +long_option_table("system-env-type",         system_env_type).
> +long_option_table("target-env-type",         target_env_type).
>
> %  misc options
> -long_option("typecheck-ambiguity-warn-limit",
> +long_option_table("typecheck-ambiguity-warn-limit",
>                                     typecheck_ambiguity_warn_limit).
> -long_option("typecheck-ambiguity-error-limit",
> +long_option_table("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("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_table("help",                 help).
> +long_option_table("version",              version).
> +long_option_table("filenames-from-stdin", filenames_from_stdin).
> +long_option_table("target-arch",          target_arch).
> +long_option_table("cross-compiling",      cross_compiling).
> +long_option_table("local-module-id",      local_module_id).
> +long_option_table("analysis-file-cache-dir",  analysis_file_cache_dir).
> +long_option_table("bug-intermod-2002-06-13",  compiler_sufficiently_recent).
> +long_option_table("bug-intermod-2006-09-28",  compiler_sufficiently_recent).
> +long_option_table("bug-foreign_import-2002-08-06", 
> compiler_sufficiently_recent).
> +long_option_table("install-opt-files-2002-08-30",
> +                                    compiler_sufficiently_recent).
> +long_option_table("read-config-file-2003-03-01", 
> compiler_sufficiently_recent).
> %  XXX this option won't be recognised because of the "no-" prefix,
> %  but "no-no-" will be recognised.
> -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",
> +long_option_table("no-noncompact-ho-call-2004-01-15",
> +                                    compiler_sufficiently_recent).
> +long_option_table("trace-io-builtins-2006-08-14",
> +                                    compiler_sufficiently_recent).
> +long_option_table("compound-compare-builtins-2007-07-09",
>                                      compiler_sufficiently_recent).
> %  XXX this option won't be recognised because of the "no-" prefix,
> %  but "no-no-" will be recognised.
> -long_option("no-det-warning-compound-compare-2007-07-17",
> +long_option_table("no-det-warning-compound-compare-2007-07-17",
>                                     compiler_sufficiently_recent).
> -long_option("foreign-enum-switch-fix",
> +long_option_table("foreign-enum-switch-fix",
>                                     compiler_sufficiently_recent).
> -long_option("failing-disjunct-in-switch-dup-fix",
> +long_option_table("failing-disjunct-in-switch-dup-fix",
>                                     compiler_sufficiently_recent).
> -long_option("store-at-ref-impure-2008-09-11",
> +long_option_table("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",
> +long_option_table("java-export-ref-out",  compiler_sufficiently_recent).
> +long_option_table("java-generics-2010-04-13",
>                                     compiler_sufficiently_recent).
> -long_option("strip-executable-2014-05-05",
> +long_option_table("strip-executable-2014-05-05",
>                                     compiler_sufficiently_recent).
> -long_option("trace-goal-only-locals-2017-07-05",
> +long_option_table("trace-goal-only-locals-2017-07-05",
>                                     compiler_sufficiently_recent).
> -long_option("no-reserved-addrs",
> +long_option_table("no-reserved-addrs",
>                                     compiler_sufficiently_recent).
> -long_option("builtin-lt-gt-2018-10-08",
> +long_option_table("builtin-lt-gt-2018-10-08",
>                                     compiler_sufficiently_recent).
> -long_option("fixed-contiguity-2018-10-19",
> +long_option_table("fixed-contiguity-2018-10-19",
>                                     compiler_sufficiently_recent).
> -long_option("simplest-msg-2019-09-22",
> +long_option_table("simplest-msg-2019-09-22",
>                                     compiler_sufficiently_recent).
> -long_option("unqual-foreign-enums-in-int-files-2019-10-04",
> +long_option_table("unqual-foreign-enums-in-int-files-2019-10-04",
>                                     compiler_sufficiently_recent).
> -long_option("obsolete-proc-2019-10-23",
> +long_option_table("obsolete-proc-2019-10-23",
>                                     compiler_sufficiently_recent).
> -long_option("type-repn-int3-2020-03-22",
> +long_option_table("type-repn-int3-2020-03-22",
>                                     compiler_sufficiently_recent).
> -long_option("github-85--2020-03-24",
> +long_option_table("github-85--2020-03-24",
>                                     compiler_sufficiently_recent).
> -long_option("foreign-proc-typeinfo-2020-04-08",
> +long_option_table("foreign-proc-typeinfo-2020-04-08",
>                                     compiler_sufficiently_recent).
> -long_option("ushift-2020-04-30",
> +long_option_table("ushift-2020-04-30",
>                                     compiler_sufficiently_recent).
> -long_option("unsigned_lt-2020-05-02",
> +long_option_table("unsigned_lt-2020-05-02",
>                                     compiler_sufficiently_recent).
> -long_option("format-uint-2020-05-23",
> +long_option_table("format-uint-2020-05-23",
>                                     compiler_sufficiently_recent).
> -long_option("mmake-all-2020-05-25",
> +long_option_table("mmake-all-2020-05-25",
>                                     compiler_sufficiently_recent).
> -long_option("unsigned-lt-2020-05-25",
> +long_option_table("unsigned-lt-2020-05-25",
>                                     compiler_sufficiently_recent).
> -long_option("may-ignore-without-warning-2020-08-18",
> +long_option_table("may-ignore-without-warning-2020-08-18",
>                                     compiler_sufficiently_recent).
> -long_option("prolog-is-2020-08-21",
> +long_option_table("prolog-is-2020-08-21",
>                                     compiler_sufficiently_recent).
> -long_option("partial-inst-copy-2021-01-04",
> +long_option_table("partial-inst-copy-2021-01-04",
>                                     compiler_sufficiently_recent).
> -long_option("mantis-bug-529-2021-02-25",
> +long_option_table("mantis-bug-529-2021-02-25",
>                                     compiler_sufficiently_recent).
> -long_option("subtype-opt-2022-02-19",
> +long_option_table("subtype-opt-2022-02-19",
>                                     compiler_sufficiently_recent).
> -long_option("typespec-pragma-2022-07-20",
> +long_option_table("typespec-pragma-2022-07-20",
>                                     compiler_sufficiently_recent).
> -long_option("ushift-2022-12-06",
> +long_option_table("ushift-2022-12-06",
>                                     compiler_sufficiently_recent).
> -long_option("ushift-2022-12-07",
> +long_option_table("ushift-2022-12-07",
>                                     compiler_sufficiently_recent).
> -long_option("strtrie-2022-12-08",
> +long_option_table("strtrie-2022-12-08",
>                                     compiler_sufficiently_recent).
> -long_option("term-pass2-2022-12-28",
> +long_option_table("term-pass2-2022-12-28",
>                                     compiler_sufficiently_recent).
> -long_option("format-2023-01-27",
> +long_option_table("format-2023-01-27",
>                                     compiler_sufficiently_recent).
> -long_option("singleton-2023-06-10",
> +long_option_table("singleton-2023-06-10",
>                                     compiler_sufficiently_recent).
> -long_option("warn-obsolete-transform-2023-07-03",
> +long_option_table("warn-obsolete-transform-2023-07-03",
>                                     compiler_sufficiently_recent).
> -long_option("gen-dep-ints-2023-10-15",
> +long_option_table("gen-dep-ints-2023-10-15",
>                                     compiler_sufficiently_recent).
> -long_option("tscp-2024-02-07",
> +long_option_table("tscp-2024-02-07",
>                                     compiler_sufficiently_recent).
> -long_option("format-2024-02-07",
> +long_option_table("format-2024-02-07",
>                                     compiler_sufficiently_recent).
> -long_option("dym-2024-02-08",
> +long_option_table("dym-2024-02-08",
>                                     compiler_sufficiently_recent).
> -long_option("wne-2024-02-21",
> +long_option_table("wne-2024-02-21",
>                                     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("allow-ho-insts-as-modes",
> +long_option_table("experiment",           experiment).
> +long_option_table("experiment1",          experiment1).
> +long_option_table("experiment2",          experiment2).
> +long_option_table("experiment3",          experiment3).
> +long_option_table("experiment4",          experiment4).
> +long_option_table("experiment5",          experiment5).
> +long_option_table("allow-ho-insts-as-modes",
>                                     allow_ho_insts_as_modes).
> -long_option("ignore-par-conjunctions",
> +long_option_table("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",
> +long_option_table("control-granularity",  control_granularity).
> +long_option_table("distance-granularity", distance_granularity).
> +long_option_table("implicit-parallelism", implicit_parallelism).
> +long_option_table("feedback-file",        feedback_file).
> +long_option_table("par-loop-control",     par_loop_control).
> +long_option_table("par-loop-control-preserve-tail-recursion",
>                                      par_loop_control_preserve_tail_recursion).
>
> % ---------------------------------------------------------------------------%
> diff --git a/library/getopt.m b/library/getopt.m
> index d4c38c8..32feab3 100644
> --- a/library/getopt.m
> +++ b/library/getopt.m
> @@ -90,12 +90,12 @@
> %  option, that predicate will report an error when processing a command 
> %  line
> %  that contains that option.
> % 
> -% Boolean (i.e. bool or bool_special), maybe_int, maybe_string and
> -% accumulating options can be negated. Negating an accumulating option
> -% empties the accumulated list of strings. Single-character options
> -% can be negated by following them with another `-', e.g. `-x-' will negate
> -% the `-x' option. Long options can be negated by preceding them with 
> `--no-',
> -% e.g. `--no-foo' will negate the `--foo' option.
> +% Boolean (i.e. bool or bool_special), maybe_int, maybe_string,
> +% maybe_string_special and accumulating options can be negated. Negating an
> +% accumulating option empties the accumulated list of strings. 
> Single-character
> +% options can be negated by following them with another `-', e.g. `-x-' will
> +% negate the `-x' option. Long options can be negated by preceding them with
> +% `--no-', e.g. `--no-foo' will negate the `--foo' option.
> % 
> %  Note that arguments following an option may be separated from the option 
> %  by
> %  either whitespace or the equals character `=', so that e.g. `--foo 3' and
>


More information about the reviews mailing list