Previous: Low-level (LLDS -> LLDS) optimization options, Up: Optimization options   [Contents][Index]

9.10.6 Output-level (LLDS -> C) optimization options

These optimizations are applied during the process of generating C intermediate code from our low-level data structure.


Use only gotos — don’t emit C loop constructs.


Emit the fail or redo macro instead of a branch to the fail or redo code in the runtime system.

--procs-per-c-function n

Don’t put the code for more than 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. Setting n to the special value zero has the effect of putting all the procedures in a single function, which produces the most efficient code but tends to severely stress the C compiler.


Do not copy the thread-local Mercury engine base address into local variables. This option only affects low-level parallel grades not using the GNU C global register variables extension.