man mmc (Commandes) - Error reading options file `/usr/lib/mercury/conf/Mercury.config'.
NAME
mmc - Error reading options file `/usr/lib/mercury/conf/Mercury.config'.
VERSION
Error reading options file `/usr/lib/mercury/conf/Mercury.config'. Mercury Compiler, version rotd-2004-05-11, configured for i686-pc-linux-gnu Copyright (C) 1993-2004 The University of Melbourne
SYNOPSIS
mmc [<options>] <arguments>
NOTES
mmc is one of the development tools that are part of the Mercury distribution.
This manual page is limited to a brief summary. For further information see the Mercury User's Guide.
ARGUMENTS
Arguments ending in `.m' are assumed to be source file names. Arguments that do not end in `.m' are assumed to be module names.
OPTIONS
-?, -h, --help
Print this usage message.
-w, --inhibit-warnings
Disable all warning messages.
--halt-at-warn
This option causes the compiler to treat all warnings as if they were errors. This means that if any warning is issued, the compiler will not generate code --- instead, it will return a non-zero exit status.
--halt-at-syntax-errors
This option causes the compiler to halt immediately after syntax checking and not do any semantic checking if it finds any syntax errors in the program.
--inhibit-accumulator-warnings
Don't warn about argument order rearrangement caused by --introduce-accumulators.
--no-warn-singleton-variables
Don't warn about variables which only occur once.
--no-warn-overlapping-scopes
Don't warn about variables which occur in overlapping scopes.
--no-warn-det-decls-too-lax
Don't warn about determinism declarations which could have been stricter.
--no-warn-inferred-erroneous
Don't warn about procedures whose determinism is inferred erroneous but whose determinism declarations are laxer.
--no-warn-nothing-exported
Don't warn about modules which export nothing.
--warn-unused-args
Warn about predicate arguments which are not used.
--warn-interface-imports
Warn about modules imported in the interface, but which are not used in the interface.
--no-warn-missing-opt-files
Disable warnings about `.opt' files which cannot be opened.
--warn-missing-trans-opt-files
Enable warnings about `.trans_opt' files which cannot be opened.
--no-warn-missing-trans-opt-deps
Disable warnings produced when the information required to allow `.trans_opt' files to be read when creating other `.trans_opt' files has been lost. The information can be recreated by running `mmake <mainmodule>.depend'
--warn-non-stratification
Warn about possible non-stratification in the module. Non-stratification occurs when a predicate/function can call itself negatively through some path along its call graph.
--no-warn-simple-code
Disable warnings about constructs which are so simple that they are likely to be programming errors.
--warn-duplicate-calls
Warn about multiple calls to a predicate with the same input arguments.
--no-warn-missing-module-name
Disable warnings for modules that do no start with a `:- module' declaration.
--no-warn-wrong-module-name
Disable warnings for modules whose `:- module' declaration does not match the module's file name.
--no-warn-smart-recompilation
Disable warnings from the smart recompilation system.
--no-warn-undefined-options-variables
Warn about references to undefined variables in options files with `--make'.
--warn-non-tail-recursion
Warn about any directly recursive calls that are not tail calls. This requires --high-level-code.
--no-warn-up-to-date
Don't warn if targets specified on the command line with `--make' are already up to date.
--no-warn-stubs
Disable warnings about procedures for which there are no clauses. Note that this option only has any effect if the `--allow-stubs' option (described in the "Language Semantics Options" section below) is enabled.
--warn-dead-procs
Warn about procedures which are never called.
--no-warn-target-code
Disable warnings from the compiler used to process the target code (e.g. gcc).
-v, --verbose
Output progress messages at each stage in the compilation.
-V, --very-verbose
Output very verbose progress messages.
-E, --verbose-error-messages
Explain error messages. Asks the compiler to give you a more detailed explanation of any errors it finds in your program.
--no-verbose-make
Disable messages about the progress of builds using the `--make' option.
--output-compile-error-lines <n>
With `--make', output the first <n> lines of the `.err' file after compiling a module (default: 15).
--verbose-commands
Output each external command before it is run. Note that some commands will only be printed printed with `--verbose'.
--verbose-recompilation
When using `--smart-recompilation', output messages explaining why a module needs to be recompiled.
--find-all-recompilation-reasons
Find all the reasons why a module needs to be recompiled, not just the first. Implies `--verbose-recompilation'.
-S, --statistics
Output messages about the compiler's time/space usage. At the moment this option implies `--no-trad-passes', so you get information at the boundaries between phases of the compiler.
-T, --debug-types
Output detailed debugging traces of the type checking.
-N, --debug-modes
Output detailed debugging traces of the mode checking.
--debug-det, --debug-determinism
Output detailed debugging traces of determinism analysis.
--debug-opt
Output detailed debugging traces of the optimization process.
--debug-opt-pred-id <n>
Output detailed debugging traces of the optimization process only for the predicate/function with the specified pred id.
--debug-pd
Output detailed debugging traces of the partial deduction and deforestation process.
--debug-rl-gen
Output detailed debugging traces of Aditi-RL code generation.
--debug-rl-opt
Output detailed debugging traces of Aditi-RL optimization.
--debug-liveness <pred_id>
Output detailed debugging traces of the liveness analysis of the predicate with the given predicate id.
--debug-make
Output detailed debugging traces of the `--make' option.
WARNING OPTIONS
VERBOSITY OPTIONS
OUTPUT OPTIONS
These options are mutually exclusive. Only the first one specified will apply. If none of these options are specified, the default action is to link the named modules to produce an executable.
-f, --generate-source-file-mapping
Output the module name to file name mapping for the list of source files given as non-option arguments to mmc to `Mercury.modules'. This must be done before `mmc --generate-dependencies' if there are any modules for which the file name does not match the module name. If there are no such modules the mapping need not be generated.
-M, --generate-dependencies
Output `Make'-style dependencies for the module and all of its dependencies to `<module>.dep'.
--generate-module-order
Output the strongly connected components of the module dependency graph in top-down order to `<module>.order'. Implies --generate-dependencies.
-i, --make-int, --make-interface
Write the module interface to `<module>.int', and write the short interface to `<module>.int2' This option should only be used by mmake.
--make-priv-int, --make-private-interface
Write the private interface to `<module>.int0'. This option should only be used by mmake.
--make-short-int, --make-short-interface
Write the unqualified short interface to `<module>.int3'. This option should only be used by mmake.
--make-opt-int, --make-optimization-interface
Write inter-module optimization information to `<module>.opt'. This option should only be used by mmake.
--make-trans-opt
--make-transitive-optimization-interface
Output transitive optimization information into the `<module>.trans_opt' file. This option should only be used by mmake.
-P, --convert-to-mercury
Convert to Mercury. Output to file `<module>.ugly' This option acts as a Mercury ugly-printer.
-t, --typecheck-only
Just check that the code is syntactically correct and type-correct. Don't check modes or determinism, and don't generate any code.
-e, --errorcheck-only
Check the module for errors, but do not generate any code.
-C, --target-code-only
Generate target code (i.e. C code in `<module>.c', assembler code in `<module>.s' or `<module>.pic_s', IL code in `<module>.il', or Java code in `<module>.java'), but not object code.
-c, --compile-only
Generate C code in `<module>.c' and object code in `<module>.o' but do not attempt to link the named modules.
--aditi-only
Write Aditi-RL bytecode to `<module>.rlo' and do not compile to C.
--output-grade-string
Compute the grade of the library to link with based on the command line options, and print it to the standard output.
--output-link-command
Print the command used to link executables to the standard output.
--output-shared-lib-link-command
Print the command used to link shared libraries to the standard output.
--smart-recompilation
When compiling, write program dependency information to be used to avoid unnecessary recompilations if an imported module's interface changes in a way which does not invalidate the compiled code. `--smart-recompilation' does not yet work with `--intermodule-optimization'.
--no-assume-gmake
When generating `.dep' files, generate Makefile fragments that use only the features of standard make; do not assume the availability of GNU Make extensions. When generating `.dep' files, generate dependencies for use by `mmc --make' in addition to the dependencies used by mmake.
--generate-mmc-deps
--generate-mmc-make-module-dependencies
Generate dependencies for use by `mmc --make' even when using Mmake. This is recommended when building a library for installation.
--trace {minimum, shallow, deep, rep, default}
Generate code that includes the specified level of execution tracing. See the Debugging chapter of the Mercury User's Guide for details.
--trace-optimized
Do not disable optimizations that can change the trace.
--no-delay-death
When the trace level is `deep', the compiler normally preserves the values of variables as long as possible, even beyond the point of their last use, in order to make them accessible from as many debugger events as possible. However, it will not do this if this option is given.
--stack-trace-higher-order
Enable stack traces through predicates and functions with higher-order arguments, even if stack tracing is not supported in general.
--generate-bytecode
Output a bytecode form of the module for use by an experimental debugger.
-n-, --no-line-numbers
Do not put source line numbers in the generated code. The generated code may be in C (the usual case), or in Mercury (with the option --convert-to-mercury).
--auto-comments
Output comments in the `<module>.c' file. (The code may be easier to understand if you also use the `--no-llds-optimize' option.)
--show-dependency-graph
Write out the dependency graph to `<module>.dependency_graph'.
-d <n>, --dump-hlds <stage number or name>
Dump the HLDS (high level intermediate representation) after the specified stage to `<module>.hlds_dump.<num>-<name>'. Stage numbers range from 1-99. Multiple dump options accumulate.
--dump-hlds-pred-id <n>
Dump the HLDS only of the predicate/function with the given pred id.
--dump-hlds-options <options>
With `--dump-hlds', include extra detail in the dump. Each type of detail is included in the dump if its corresponding letter occurs in the option argument (see the Mercury User's Guide for details).
--dump-mlds <stage number or name>
Dump the MLDS (medium level intermediate representation) after the specified stage, as C code, to`<module>.c_dump.<num>-<name>', and `<module>.h_dump.<num>-<name>'. Stage numbers range from 1-99. Multiple dump options accumulate.
--verbose-dump-mlds <stage number or name>
Dump the internal compiler representation of the MLDS, after the specified stage, to `<module>.mlds_dump.<num>-<name>'.
--dump-rl
Output a human readable form of the compiler's internal representation of the generated Aditi-RL code to `<module>.rl_dump'.
--dump-rl-bytecode
Output a human readable representation of the generated Aditi-RL bytecodes to `<module>.rla'. Aditi-RL bytecodes are directly executed by the Aditi system.
--generate-schemas
Output schema strings for Aditi base relations to `<module>.base_schema' and for Aditi derived relations to `<module>.derived_schema'. A schema string is a representation of the types of a relation.
--sign-assembly
Sign the current assembly with the Mercury strong name. To use assemblies created with this command all the Mercury modules must be compiled with this option enabled. This option is specific to the IL backend, and is likely to be deprecated at a later date.
AUXILIARY OUTPUT OPTIONS
LANGUAGE SEMANTICS OPTIONS
(See the Mercury language reference manual for detailed explanations.)
--no-reorder-conj
Execute conjunctions left-to-right except where the modes imply that reordering is unavoidable.
--no-reorder-disj
Execute disjunctions strictly left-to-right.
--fully-strict
Don't optimize away loops or calls to error/1.
--allow-stubs
Allow procedures to have no clauses. Any calls to such procedures will raise an exception at run-time. This option is sometimes useful during program development. (See also the documentation for the `--warn-stubs' option in the "Warning Options" section.)
--infer-all
Abbreviation for `--infer-types --infer-modes --infer-det'.
--infer-types
If there is no type declaration for a predicate or function, try to infer the type, rather than just reporting an error.
--infer-modes
If there is no mode declaration for a predicate, try to infer the modes, rather than just reporting an error.
--no-infer-det, --no-infer-determinism
If there is no determinism declaration for a procedure, don't try to infer the determinism, just report an error.
--type-inference-iteration-limit <n>
Perform at most <n> passes of type inference (default: 60).
--mode-inference-iteration-limit <n>
Perform at most <n> passes of mode inference (default: 30).
--enable-term, --enable-termination
Analyse each predicate to discover if it terminates.
--chk-term, --check-term, --check-termination
Enable termination analysis, and emit warnings for some predicates or functions that cannot be proved to terminate. In many cases where the compiler is unable to prove termination the problem is either a lack of information about the termination properties of other predicates, or because language constructs (such as higher order calls) were used which could not be analysed. In these cases the compiler does not emit a warning of non-termination, as it is likely to be spurious.
--verb-chk-term, --verb-check-term, --verbose-check-termination
Enable termination analysis, and emit warnings for all predicates or functions that cannot be proved to terminate.
--term-single-arg <n>, --termination-single-argument-analysis <n>
When performing termination analysis, try analyzing recursion on single arguments in strongly connected components of the call graph that have up to <n> procedures. Setting this limit to zero disables single argument analysis.
--termination-norm {simple, total, num-data-elems}
The norm defines how termination analysis measures the size of a memory cell. The `simple' norm says that size is always one. The `total' norm says that it is the number of words in the cell. The `num-data-elems' norm says that it is the number of words in the cell that contain something other than pointers to cells of the same type.
--term-err-limit <n>, --termination-error-limit <n>
Print at most <n> reasons for any single termination error (default: 3).
--term-path-limit <n>, --termination-path-limit <n>
Perform termination analysis only on predicates with at most <n> paths (default: 256).
TERMINATION ANALYSIS OPTIONS
COMPILATION MODEL OPTIONS
The following compilation options affect the generated code in such a way that the entire program must be compiled with the same setting of these options, and it must be linked to a version of the Mercury library which has been compiled with the same setting.
-s <grade>, --grade <grade>
Select the compilation model. The <grade> should be one of the base grades `none', `reg', `jump', `asm_jump', `fast', `asm_fast', `hl', `hlc', `il', or `java', or one of those with one or more of the grade modifiers `.gc', `.mps', `.prof', `.memprof', `.profdeep', `.tr', `rt', `.debug', `.par' and/or `.pic_reg' appended. Depending on your particular installation, only a subset of these possible grades will have been installed. Attempting to use a grade which has not been installed will result in an error at link time.
--target c (grades: none, reg, jump, fast,
asm_jump, asm_fast, hl, hlc)
--target asm (grades: hlc)
--target il (grades: il)
--target java (grades: java)
Specify the target language: C, assembler, IL or Java. The default is C. "IL" (also known as "CIL" or "MSIL") is the Intermediate Language for the .NET Common Language Runtime. Targets other than C imply `--high-level-code' (see below). As an exception to the usual rule for options in this section, where different option settings normally correspond to different ABIs, code generated using `--target asm' is binary compatible with code generated using `--target c --high-level code', so these both use grade `hlc'.
--il
An abbreviation for `--target il'.
--il-only
An abbreviation for `--target il --target-code-only'. Generate IL code in `<module>.il', but do not generate object code.
--dotnet-library-version <version-number>
The version number for the mscorlib assembly distributed with the Microsoft .NET SDK.
--no-support-ms-clr
Don't use MS CLR specific workarounds in the generated code.
--support-rotor-clr
Use specific workarounds for the ROTOR CLR in the generated code.
--java
An abbreviation for `--target java'.
--java-only
An abbreviation for `--target java --target-code-only'. Generate Java code in `<module>.java', but do not generate object code.
--compile-to-c
An abbreviation for `--target c --target-code-only'. Generate C code in `<module>.c', but do not generate object code.
--debug (grade modifier: `.debug')
Enable Mercury-level debugging. See the Debugging chapter of the Mercury User's Guide for details. This option is not yet supported for the `--high-level-code' back-ends.
-p, --profiling, --time-profiling
(grade modifier: `.prof') Enable time and call profiling. Insert profiling hooks in the generated code, and also output some profiling information (the static call graph) to the file `<module>.prof'. This option is not supported for the IL or Java back-ends.
--memory-profiling (grade modifier: `.memprof')
Enable memory and call profiling. This option is not supported for the IL or Java back-ends.
--deep-profiling (grade modifier: `.profdeep')
Enable deep profiling. This option is not supported for the high-level C, IL or Java back-ends.
--gc {none, boehm, mps, accurate, automatic}
--garbage-collection {none, boehm, mps, accurate, automatic}
(`java' and `il' grades use `--gc automatic', `.gc' grades use `--gc boehm', `.mps' grades use `--gc mps', other grades use `--gc none'.) Specify which method of garbage collection to use (default: boehm). `boehm' is Hans Boehm et al's conservative collector. `accurate' is our own type-accurate copying GC; it requires `--high-level-code'. `mps' is a different conservative collector, based on Ravenbrook Limited's MPS (Memory Pool System) kit. `automatic' means the target language provides it. This is the case for the IL and Java back-ends, which always use the garbage collector of the underlying IL or Java implementation.
--use-trail (grade modifier: `.tr')
Enable use of a trail. This is necessary for interfacing with constraint solvers, or for backtrackable destructive update. This option is not yet supported for the IL or Java back-ends.
--gcc-global-registers (grades: reg, fast, asm_fast)
--no-gcc-global-registers (grades: none, jump, asm_jump)
Specify whether or not to use GNU C's global register variables extension. This option is ignored if the `--high-level-code' option is enabled.
--gcc-non-local-gotos (grades: jump, fast, asm_jump, asm_fast)
--no-gcc-non-local-gotos (grades: none, reg)
Specify whether or not to use GNU C's "labels as values" extension. This option is ignored if the `--high-level-code' option is enabled.
--asm-labels (grades: asm_jump, asm_fast)
--no-asm-labels (grades: none, reg, jump, fast)
Specify whether or not to use GNU C's asm extensions for inline assembler labels. This option is ignored if the `--high-level-code' option is enabled.
--pic-reg (grade modifier: `.pic_reg')
[For Unix with intel x86 architecture only] Select a register usage convention that is compatible, with position-independent code (gcc's `-fpic' option). This is necessary when using shared libraries on Intel x86 systems running Unix. On other systems it has no effect.
-H, --high-level-code (grades: hl, hlc, il, java)
Use an alternative back-end that generates high-level code rather than the very low-level code that is generated by our original back-end.
--high-level-data (grades: hl, il, java)
Use an alternative higher-level data representation.
--high-level (grades: hl, il, java)
An abbreviation for `--high-level-code --high-level-data'.
--tags {none, low, high} (This option is not for general use.)
Specify whether to use the low bits or the high bits of each word as tag bits (default: low).
--num-tag-bits <n> (This option is not for general use.)
Use <n> tag bits.
--num-reserved-addresses <n> (This option is not for general use.)
Treat the integer values from 0 up to <n> - 1 as reserved addresses that can be used to represent nullary constructors (constants) of discriminated union types.
--num-reserved-objects <n> (This option is not for general use.)
Allocate up to <n> global objects per type, for representing nullary constructors (constants) of discriminated union types.
--reserve-tag (grade modifier: `.rt')
Reserve a tag in the data representation of the generated code. This tag is intended to be used to give an explicit representation to free variables. This is necessary for a seamless Herbrand constraint solver - for use with HAL.
--unboxed-float
(This option is not for general use.) Don't box floating point numbers. This assumes that a Mercury float will fit in a word. The C code needs to be compiled with `-UBOXED_FLOAT'. It may also need to be compiled with `-DUSE_SINGLE_PREC_FLOAT', if double precision floats don't fit into a word.
--use-minimal-model
(This option is not for general use.) Enable the use of minimal model tabling.
--no-type-layout
(This option is not for general use.) Don't output type_ctor_layout structures or references to them. (The C code also needs to be compiled with `-DNO_TYPE_LAYOUT').
--low-level-debug
Enables various low-level debugging stuff, that was in the distant past used to debug the low-level code generation. You don't want to use this option unless you are hacking the Mercury compiler itself (and probably not even then). Causes the generated code to become VERY big and VERY inefficient. Slows down compilation a LOT.
--pic
Generate position-independent code. This option is only used by the `--target asm' back-end. The generated assembler code will be written to `<module>.pic_s' rather than to `<module>.s'.
--no-trad-passes
The default `--trad-passes' completely processes each predicate before going on to the next predicate. This option tells the compiler to complete each phase of code generation on all predicates before going on the next phase on all predicates.
--no-reclaim-heap-on-nondet-failure
Don't reclaim heap on backtracking in nondet code.
--no-reclaim-heap-on-semidet-failure
Don't reclaim heap on backtracking in semidet code.
--no-reclaim-heap-on-failure
Combines the effect of the two options above.
--max-jump-table-size
The maximum number of entries a jump table can have. The special value 0 indicates the table size is unlimited. This option can be useful to avoid exceeding fixed limits imposed by some C compilers.
--fact-table-max-array-size <n>
Specify the maximum number of elements in a single `:- pragma fact_table' data array (default: 1024).
--fact-table-hash-percent-full <percentage>
Specify how full the `:- pragma fact_table' hash tables should be allowed to get. Given as an integer percentage (valid range: 1 to 100, default: 90).
--branch-delay-slot (This option is not for general use.)
Assume that branch instructions have a delay slot.
--num-real-r-regs <n> (This option is not for general use.)
Assume registers r1 up to r<n> are real general purpose registers.
--num-real-f-regs <n> (This option is not for general use.)
Assume registers f1 up to f<n> are real floating point registers.
--num-real-r-temps <n> (This option is not for general use.)
Assume that <n> non-float temporaries will fit into real machine registers.
--num-real-f-temps <n> (This option is not for general use.)
Assume that <n> float temporaries will fit into real machine registers.
-O <n>, --opt-level <n>, --optimization-level <n>
Set optimization level to <n>. Optimization level -1 means no optimization while optimization level 6 means full optimization.
--opt-space, --optimize-space
Turn on optimizations that reduce code size and turn off optimizations that significantly increase code size.
--intermodule-optimization
Perform inlining and higher-order specialization of the code for predicates imported from other modules. This option must be set throughout the compilation process.
--trans-intermod-opt
--transitive-intermodule-optimization
Import the transitive intermodule optimization data. This data is imported from `<module>.trans_opt' files.
--no-read-opt-files-transitively
Only read the inter-module optimization information for directly imported modules, not the transitive closure of the imports.
--use-opt-files
Perform inter-module optimization using any `.opt' files which are already built, e.g. those for the standard library, but do not build any others.
--use-trans-opt-files
Perform inter-module optimization using any `.trans_opt' files which are already built, e.g. those for the standard library, but do not build any others.
--intermodule-analysis
Perform analyses such as termination analysis and unused argument elimination across module boundaries. This option is not yet fully implemented.
--split-c-files
Generate each C function in its own C file, so that the linker will optimize away unused code. This option significantly increases compilation time, link time, and intermediate disk space requirements, but in return reduces the size of the final executable, typically by about 10-20%. This option is only useful with `--procs-per-c-function 1', so this option automatically sets `--procs-per-c-function 1'. The `--high-level-code' back-end does not support `--split-c-files'.
--no-inlining
Disable all forms of inlining.
--no-inline-simple
Disable the inlining of simple procedures.
--no-inline-builtins
Generate builtins (e.g. arithmetic operators) as calls to out of line procedures. This is done by default when, debugging, as without this option the execution of builtins is not traced.
--no-inline-single-use
Disable the inlining of procedures called only once.
--inline-compound-threshold <threshold>
Inline a procedure if its size (measured roughly in terms of the number of connectives in its internal form), multiplied by the number of times it is called, is below the given threshold.
--inline-simple-threshold <threshold>
Inline a procedure if its size is less than the given threshold.
--intermod-inline-simple-threshold
Similar to `--inline-simple-threshold', except used to determine which predicates should be included in `.opt' files. Note that changing this between writing the `.opt' file and compiling to C may cause link errors, and too high a value may result in reduced performance.
--inline-vars-threshold <threshold>
Don't inline a call if it would result in a procedure containing more than <threshold> variables. Procedures containing large numbers of variables can cause slow compilation.
--no-common-struct
Disable optimization of common term structures.
--no-common-goal
Disable optimization of common goals. At the moment this optimization detects only common deconstruction unifications. Disabling this optimization reduces the class of predicates that the compiler considers to be deterministic.
--constraint-propagation
Enable the constraint propagation transformation, which attempts to transform the code so that goals which can fail are executed as early as possible.
--local-constraint-propagation
Enable the constraint propagation transformation, but only rearrange goals within each procedure. Specialized versions of procedures will not be created.
--prev-code
Migrate into the start of branched goals.
--no-follow-code
Don't migrate into the end of branched goals.
--excess-assign
Remove excess assignment unifications.
--optimize-duplicate-calls
Optimize away multiple calls to a predicate with the same input arguments.
--loop-invariants
Hoist loop invariants out of loops.
--delay-constructs
Reorder goals to move construction unifications after primitive goals that can fail.
--optimize-saved-vars
Minimize the number of variables saved across calls.
--optimize-unused-args
Remove unused predicate arguments. This will cause the compiler to generate more efficient code for many polymorphic predicates.
--intermod-unused-args
Perform unused argument removal across module boundaries. This option implies `--optimize-unused-args' and `--intermodule-optimization'.
--optimize-higher-order
Enable specialization of higher-order predicates.
--type-specialization
Enable specialization of polymorphic predicates where the polymorphic types are known.
--user-guided-type-specialization
Enable specialization of polymorphic predicates for which there are `:- pragma type_spec' declarations.
--higher-order-size-limit
Set the maximum goal size of specialized versions created by `--optimize-higher-order' and `--type-specialization'. Goal size is measured as the number of calls, unifications and branched goals.
--higher-order-arg-limit
Set the maximum size of higher-order arguments to be specialized by `--optimize-higher-order' and `--type-specialization'.
--unneeded-code
Remove goals from computation paths where their outputs are not needed, provided the semantics options allow the deletion or movement of the goal.
--unneeded-code-copy-limit
Gives the maximum number of places to which a goal may be copied when removing it from computation paths on which its outputs are not needed. A value of zero forbids goal movement and allows only goal deletion; a value of one prevents any increase in the size of the code.
--introduce-accumulators
Attempt to introduce accumulating variables into procedures, so as to make them tail recursive.
--optimize-constructor-last-call
Enable the optimization of "last" calls that are followed by constructor application.
--deforestation
Enable deforestation. Deforestation is a program transformation whose aim is to avoid the construction of intermediate data structures and to avoid repeated traversals over data structures within a conjunction.
--deforestation-depth-limit <limit>
Specify a depth limit to prevent infinite loops in the deforestation algorithm. A value of -1 specifies no depth limit. The default is 4.
--deforestation-vars-threshold <threshold>
Specify a rough limit on the number of variables in a procedure created by deforestation. A value of -1 specifies no limit. The default is 200.
--deforestation-size-threshold <threshold>
Specify a rough limit on the size of a goal to be optimized by deforestation. A value of -1 specifies no limit. The default is 15.
--no-smart-indexing
Generate switches as a simple if-then-else chains; disable string hashing and integer table-lookup indexing.
--dense-switch-req-density <percentage>
The jump table generated for an atomic switch must have at least this percentage of full slots (default: 25).
--lookup-switch-req-density <percentage>
The jump table generated for an atomic switch in which all the outputs are constant terms must have at least this percentage of full slots (default: 25).
--dense-switch-size <n>
The jump table generated for an atomic switch must have at least this many entries (default: 4).
--lookup-switch-size <n>
The lookup table generated for an atomic switch must have at least this many entries (default: 4).
--string-switch-size <n>
The hash table generated for a string switch must have at least this many entries (default: 8).
--tag-switch-size <n>
The number of alternatives in a tag switch must be at least this number (default: 3).
--try-switch-size <n>
The number of alternatives in a try/retry chain switch must be at least this number (default: 3).
--binary-switch-size <n>
The number of alternatives in a binary search switch must be at least this number (default: 4).
--no-static-ground-terms
Disable the optimization of constructing constant ground terms at compile time and storing them as static constants. Note that auxiliary data structures created by the compiler for purposes such as debugging will still be created as static constants.
--no-middle-rec
Disable the middle recursion optimization.
--no-simple-neg
Don't generate simplified code for simple negations.
--no-common-data
Disable optimization of common data structures.
--no-llds-optimize
Disable the low-level optimization passes.
--optimize-dead-procs
Enable dead predicate elimination.
--no-optimize-peep
Disable local peephole optimizations.
--no-optimize-jumps
Disable elimination of jumps to jumps.
--no-optimize-fulljumps
Disable elimination of jumps to ordinary code.
--pessimize-tailcalls
Disable the optimization of tailcalls.
--checked-nondet-tailcalls
Convert nondet calls into tail calls whenever possible, even when this requires a runtime check. This option tries to minimize stack consumption, possibly at the expense of speed.
--use-local-vars
Disable the transformation to use local variables in C code blocks wherever possible.
--no-optimize-labels
Disable elimination of dead labels and code.
--optimize-dups
Enable elimination of duplicate code.
--no-optimize-frames
Disable stack frame optimizations.
--no-optimize-delay-slot
Disable branch delay slot optimizations.
--optimize-reassign
Optimize away assignments to locations that already hold the assigned value.
--optimize-repeat <n>
Iterate most optimizations at most <n> times (default: 3).
--no-mlds-optimize
Disable the MLDS->MLDS optimization passes.
--no-optimize-tailcalls
Treat tailcalls as ordinary calls, rather than optimizing by turning self-tailcalls into loops.
--no-optimize-initializations
Leave initializations of local variables as assignment statements, rather than converting such assignment statements into initializers.
--eliminate-local-vars
Eliminate local variables with known values, where possible, by replacing occurrences of such variables with their values.
--optimize-rl
Enable the optimizations of Aditi-RL procedures described below. --optimize-rl-invariants Optimize loop invariants in Aditi-RL procedures. --optimize-rl-index Use indexing to optimize access to relations in Aditi-RL procedures. --detect-rl-streams Detect cases where intermediate results in Aditi-RL procedures do not need to be materialised.
--use-macro-for-redo-fail
Emit the fail or redo macro instead of a branch to the fail or redo code in the runtime system. This produces slightly bigger but slightly faster code.
--no-emit-c-loops
Use only gotos, don't emit C loop constructs.
--procs-per-c-function <n>
Put the code for up to <n> Mercury procedures in a single C function. The default value of <n> is one. Increasing <n> can produce slightly more efficient code, but makes compilation slower.
--everything-in-one-c-function
This option has the effect of putting the code for all the Mercury procedures in a single C function, which produces the most efficient code but tends to severely stress the C compiler on large modules.
TARGET SELECTION COMPILATION MODEL OPTIONS
OPTIONAL FEATURE COMPILATION MODEL OPTIONS
Debugging
Profiling
Miscellaneous optional features
LLDS back-end compilation model options:
MLDS back-end compilation model options:
DEVELOPER COMPILATION MODEL OPTIONS
Data representation
Developer optional features
CODE GENERATION OPTIONS
CODE GENERATION TARGET OPTIONS
OPTIMIZATION OPTIONS
High-level (HLDS -> HLDS) optimizations:
Medium-level (HLDS -> LLDS) optimizations:
Low-level (LLDS -> LLDS) optimizations:
MLDS -> MLDS optimizations:
Aditi-RL optimizations:
Output-level (LLDS -> C) optimizations:
TARGET CODE COMPILATION
Note that if you are using Mmake, you need to pass these options to the target code compiler (e.g. `mgnuc') rather than to `mmc'.
--target-debug
Enable debugging of the generated target code. If the target language is C, this has the same effect as `--c-debug' (see below). If the target language is IL, this causes the compiler to pass `/debug' to the IL assembler.)
--cc <compiler-name>
Specify which C compiler to use.
--no-c-optimize
Don't enable the C compiler's optimizations.
--no-ansi-c
Don't specify to the C compiler that the ANSI dialect of C should be used. Use the full contents of system headers, rather than the ANSI subset.
--c-debug
Enable debugging of the generated C code. (This has the same effect as `--cflags "-g"' and disables stripping of the executable.)
--c-include-directory <dir>
Append <dir> to the list of directories to be searched for C header files. Note that if you want to override this list, rather than append to it, then you can set the `MERCURY_MC_ALL_C_INCL_DIRS' environment variable to a sequence of `--c-include-directory' options.
--inline-alloc
Inline calls to GC_malloc(). This can improve performance a fair bit, but may significantly increase code size. This option has no effect if `--gc boehm' is not set or if the C compiler is not GNU C.
--cflags <options>, --cflag <option>
Specify options to be passed to the C compiler. `--cflag' should be used for single words which need to be quoted when passed to the shell.
--javac <javac>
--java-compiler <javac>
Specify which Java compiler to use. The default is `javac'.
--java-interpreter <java>
Specify which Java interpreter to use. The default is `java'
--java-flags <options>, --java-flag <option>
Specify options to be passed to the Java compiler. `--java-flag' should be used for single words which need to be quoted when passed to the shell.
--java-classpath <path>
Set the classpath for the Java compiler.
--java-object-file-extension <ext>
Specify an extension for Java object (bytecode) files By default this is `.class'.
--il-assembler <ilasm>
Specify the name of the .NET IL Assembler command.
--ilasm-flags <options>, --ilasm-flag <options>
Specify options to be passed to the IL assembler. `--ilasm-flag' should be used for single words which need to be quoted when passed to the shell.
--mcpp-compiler <cl>
Specify the name of the Microsoft Managed C++ Compiler.
--mcpp-flags <options>, --mcpp-flag <option>
Specify options to be passed to the Managed C++ compiler. `--mcpp-flag' should be used for single words which need to be quoted when passed to the shell.
--csharp-compiler <csc>
Specify the name of the C# Compiler. The default is `csc'.
--csharp-flags <options>, --csharp-flag <option>
Specify options to be passed to the C# compiler. `--csharp-flag' should be used for single words which need to be quoted when passed to the shell.
-o <filename>, --output-file <filename>
Specify the name of the final executable. (The default executable name is the same as the name of the first module on the command line.) This option is ignored by `mmc --make'.
--ld-flags <options>, --ld-flags <option>
Specify options to be passed to the linker command invoked by ml to link an executable. Use `ml --print-link-command' to find out which command is used. `--ld-flag' should be used for single words which need to be quoted when passed to the shell.
--ld-libflags <options>, --ld-libflag <option>
Specify options to be passed to the linker command invoked by ml to link a shared library. Use `ml --print-shared-lib-link-command' to find out which command is used. `--ld-libflags' should be used for single words which need to be quoted when passed to the shell.
-L <directory>, --library-directory <directory>
Append <directory> to the list of directories in which to search for libraries.
-R <directory>, --runtime-library-directory <directory>
Append <directory> to the list of directories in which to search for shared libraries at runtime.
-l <library>, --library <library>
Link with the specified library.
--link-object <object-file>
Link with the specified object file.
--mld <directory>, --mercury-library-directory <directory>
Append <directory> to the list of directories to be searched for Mercury libraries. This will add `--search-directory', `--library-directory', `--init-file-directory' and `--c-include-directory' options as needed.
--mercury-standard-library-directory <directory>
--mercury-stdlib-dir <directory>
Search <directory> for the Mercury standard library. Implies `--mercury-library-directory <directory>' and `--mercury-configuration-directory <directory>'.
--no-mercury-standard-library-directory
--no-mercury-stdlib-dir
Don't use the Mercury standard library. Implies `--no-mercury-configuration-directory'.
--ml <library>, --mercury-library <library>
Link with the specified Mercury library.
--linkage {shared|static}
Specify whether to use shared or static linking for executables. Shared libraries are always linked with `--linkage shared'.
--mercury-linkage {shared|static}
Specify whether to use shared or static linking when linking an executable with Mercury libraries. Shared libraries are always linked with `--mercury-linkage shared'.
--init-file-directory <directory>
Append <directory> to the list of directories to be searched for `.init' files by c2init.
--init-file <init-file>
Append <init-file> to the list of `.init' files to be passed to c2init.
--trace-init-file <init-file>
Append <init-file> to the list of `.init' files to be passed to c2init when tracing is enabled.
--no-strip
Don't strip executables.
--no-demangle
Don't pipe link errors through the Mercury demangler.
--no-main
Don't generate a C main() function. The user's code must provide a main() function.
--allow-undefined
Allow undefined symbols in shared libraries.
--no-use-readline
Disable use of the readline library in the debugger.
--runtime-flags <flags>
Specify flags to pass to the Mercury runtime.
--extra-initialization-functions, --extra-inits
Search `.c' files for extra initialization functions. (This may be necessary if the C files contain hand-coded C code with `INIT' comments, rather than containing only C code that was automatically generated by the Mercury compiler.)
-m, --make
Treat the non-option arguments to `mmc' as files to make, rather than source files. Create the specified files, if they are not already up-to-date. Note that this option also enables `--use-subdirs'.
-r, --rebuild
Same as `--make', but always rebuild the target files even if they are up to date.
-k, --keep-going
With `--make', keep going as far as possible even if an error is detected.
--pre-link-command <command>
Specify a command to run before linking with `mmc --make'. This can be used to compile C source files which rely on header files generated by the Mercury compiler. The command will be passed the names of all of the source files in the program or library, with the source file containing the main module given first.
--extra-init-command <command>
Specify a command to produce extra entries in the `.init' file for a library. The command will be passed the names of all of the source files in the program or library, with the source file containing the main module given first.
--install-prefix <dir>
The directory under which to install Mercury libraries.
--install-command <command>
Specify the command to use to install the files in Mercury libraries. The given command will be invoked as `<command> <source> <target>' to install each file in a Mercury library. The default command is `cp'.
--libgrade <grade>
Add <grade> to the list of compilation grades in which a library to be installed should be built.
--options-file <file>
Add <file> to the list of options files to be processed. If <file> is `-', an options file will be read from the standard input. By default the file `Mercury.options' in the current directory will be read.
--options-search-directory <dir>
Add <dir> to the list of directories to be searched for options files.
--mercury-configuration-directory <directory>
--mercury-config-dir <directory>
Search <directory> for Mercury system's configuration files.
--config-file <file>
Read the Mercury compiler's configuration information from <file>. If the `--config-file' option is not set, a default configuration will be used, unless `--no-mercury-stdlib-dir' is passed to mmc. The configuration file is just an options file.
-I <dir>, --search-directory <dir>
Append <dir> to the list of directories to be searched for imported modules.
--intermod-directory <dir>
Add <dir> to the list of directories to be searched for `.opt' files.
--no-use-search-directories-for-intermod
Don't add arguments to `--search-directory' to the list of directories to search for `.opt' files - use only the directories given by `--intermod-directory'.
--use-subdirs
Generate intermediate files in a `Mercury' subdirectory, rather than generating them in the current directory.
--use-grade-subdirs
Generate intermediate files in a `Mercury' subdirectory, laid out so that multiple grades can be built simultaneously. Executables and libraries will be symlinked or copied into the current directory. `--use-grade-subdirs' does not work with Mmake (it does work with `mmc --make').
--filenames-from-stdin
Read then compile a newline terminated module name or file name from the standard input. Repeat this until EOF is reached. (This allows a program or user to interactively compile several modules without the overhead of process creation for each one.)
--aditi
Enable Aditi compilation. You need to enable this option if you are making use of the Aditi deductive database interface.
--aditi-user
Specify the Aditi login of the owner of the predicates in any Aditi RL files produced. The owner field is used along with module, name and arity to identify predicates, and is also used for security checks. Defaults to the value of the `USER' environment variable. If `$USER' is not set, `--aditi-user' defaults to the string "guest".
LINK OPTIONS
BUILD SYSTEM OPTIONS
MISCELLANEOUS OPTIONS
AUTHORS
The Mercury team.
See <http://www.cs.mu.oz.au/mercury/contact/people.html>.
COPYRIGHT
This program and its documentation are copyright by the University of Melbourne. They may be copied only under the terms of the GNU General Public License - see the file COPYING in the Mercury distribution.
SEE ALSO
<http://www.cs.mu.oz.au/mercury/information/documentation.html>
The Mercury User's Guide.
The GNU General Public License.