Next: , Previous: MLDS back-end compilation model options, Up: Compilation model options   [Contents][Index]


9.8.5 Optional features compilation model options


--debug (grades: any grade containing ‘.debug’)

Enables the inclusion in the executable of code and data structures that allow the program to be debugged with ‘mdb’ (see Debugging). This option is only supported by the low-level C back-end.


--decl-debug (grades: any grade containing ‘.decldebug’)

Enables the inclusion in the executable of code and data structures that allow subterm dependency tracking in the declarative debugger. This option is only supported by the low-level C back-end.


--profiling, --time-profiling (grades: any grade containing ‘.prof’)

Enable time profiling. Insert profiling hooks in the generated code, and also output some profiling information (the static call graph) to the file module.prof. See Profiling. This option is only supported by the C back-ends.


--memory-profiling (grades: any grade containing ‘.memprof’)

Enable memory profiling. Insert memory profiling hooks in the generated code, and also output some profiling information (the static call graph) to the file module.prof. See Using mprof for profiling memory allocation. See Using mprof for profiling memory retention. This option is only supported by the C back-ends.


--deep-profiling (grades: any grade containing ‘.profdeep’)

Enable deep profiling by inserting the appropriate hooks in the generated code. This option is only supported by the low-level C back-end.


--no-coverage-profiling

Disable coverage profiling. Coverage profiling is part of the deep profiler and only used in deep profiling grades, it inserts coverage points that are used to measure how execution moves through a procedure.


--profile-for-feedback

Enable options in the deep profiler that generate suitable profiles for use with profile directed feedback analysis. Currently the only feedback analysis is used for automatic parallelism. This option only effects programs built in deep profiling grades.


--experimental-complexity filename

Enable experimental complexity analysis for the predicates listed in the given file. This option is supported for the C back-end, with ‘--no-high-level-code’. For now, this option itself is for developers only.


--gc {none, boehm, automatic}
--garbage-collection {none, boehm, automatic}

Specify which method of garbage collection to use. Grades containing ‘csharp’ or ‘java’ use ‘--gc automatic’, grades containing ‘.gc’ use ‘--gc boehm’, other grades use ‘--gc none’. ‘conservative’ or ‘boehm’ is Hans Boehm et al’s conservative garbage collector. ‘automatic’ means the target language provides it. This is the case for the C# and Java back-ends, which always use the underlying implementation’s garbage collector.


--use-trail (grades: any grade containing ‘.tr’ or ‘.trseg’)

Enable use of a trail. This is necessary for interfacing with constraint solvers, or for backtrackable destructive update. This option is only supported by the C back-ends.

--trail-segments (grades: any grade containing ‘.trseg’)

This option is deprecated as trailing now always uses trail segments. The ‘.trseg’ grade modifier is a synonym for ‘.tr’.


--parallel

In low-level C grades this enables support for parallel execution. Parallel execution can be achieved by using either the parallel conjunction operator or the concurrency support in the ‘thread’ module of the standard library. See Goals in The Mercury Language Reference Manual, and See thread in The Mercury Library Reference Manual.

In high-level C grades this enables support for concurrency, which is accessible via the ‘thread’ module in the standard library. The runtime uses POSIX threads to achieve this, therefore it may also support parallel execution of threads.

The Java and C# grades support concurrency without this option. Parallel execution may also be available depending on the target’s runtime.


--threadscope

Enable support for threadscope profiling. This enables runtime support for profiling the parallel execution of programs, See Using threadscope.


--maybe-thread-safe {yes, no}

Specify how to treat the ‘maybe_thread_safe’ foreign code attribute. ‘yes’ means that a foreign procedure with the ‘maybe_thread_safe’ option is treated as thought is has a ‘thread_safe’ attribute. ‘no’ means that the foreign procedure is treated as though it has a ‘not_thread_safe’ attribute. The default is ‘no’.


--single-prec-float (grades: any grade containing ‘.spf’)

Use single precision floats so that, on 32-bit machines floating point values don’t need to be boxed. Double precision floats are used by default. This option is not supported for the C# or Java back-ends.


Next: , Previous: MLDS back-end compilation model options, Up: Compilation model options   [Contents][Index]