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 extension.