9.10.7 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.
- 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.
- Don't copy the thread-local Mercury engine base address
into local variables. This option only affects low-level
parallel grades not using the global register variables