Syntax

-Oxc[=n]

Description

Enables the cross calling optimization.  Cross calling is sometimes called common block subroutine packing andr procedure abstraction. Cross calling finds common instruction sequences and replaces each common sequence with a subroutine call to one instance of that sequence.

Cross calling will always reduce the size of a program at the expense of execution speed as there is an overhead for the additional subroutine call and return instructions.

The option parameter n defines the number of bytes that must the common instruction sequence must contain before it is abstracted into a subroutine.  Smaller values of n are likely to find more common sequences and will transform the code into a smaller, but slower, program. Larger values of n will find fewer common sequences, where each of those sequences are longer and will transform the code in to a slightly larger, and slightly faster, program.

The time complexity of the algorithm use depends upon n. Smaller values of n require more time for optimization to find and transform the small code sequences, whereas larger values of n requires less time to run as fewer common code sequences will be identified.

It is extremely difficult to debug a program which has been linked with cross calling enabled because parts of functions will be extracted and placed into their own subroutine.

See Also

-Oxcx (Extreme cross calling optimization)