+O[no]store_ordering

+O[no]store_ordering

The +O[no]store_ordering option preserves [does not preserve] the original program order for stores to memory that is visible to multiple threads. This does not imply strong ordering. The default is +Onostore_ordering.

+Otype_safety

+Otype_safety=kind

The +Otype_safety option controls type-based aliasing assumptions.

The defined values for kind are:

off

The default. Specifies that aliasing can occur freely across types.

limited

Code follows ANSI aliasing rules. Unnamed objects should be treated as if they had

 

an unknown type.

ansi

Code follows ANSI aliasing rules. Unnamed objects should be treated the same as

 

named objects.

strong

Code follows ANSI aliasing rules, except that accesses through lvalues of a

 

character type are not permitted to touch objects of other types and field addresses

 

are not to be taken.

The default is +Otype_safety=off.

+Ounroll_factor

+Ounroll_factor=n

The +Ounroll_factor option applies the unroll factor to all loops in the current translation unit. You can apply an unroll factor which you think is best for the given loop or apply no unrolling factor to the loop. If this option is not specified, the compiler uses its own heuristics to determine the best unroll factor for the inner loop.

A user specified unroll factor will override the default unroll factor applied by the compiler.

Specifying n=1 will prevent the compiler from unrolling the loop.

Specifying n=0 allows the compiler to use its own heuristics to apply the unroll factor.

NOTE: This option will be ignored if it is placed in a loop other than the innermost loop.

Profile-Based Optimization Options

Profile-based optimization is a set of performance-improving code transformations based on the runtime characteristics of your application.

+Oprofile

+Oprofile=[usecollect]

The +Oprofile option instructs the compiler to instrument the object code for collecting runtime profile data. The profiling information can then be used by the linker to perform profile-based optimization. When an application finishes execution, it will write profile data to the fileflow.data or to the file/path in the environment variable FLOW_DATA (if set).

+Oprofile=use[:filename] causes the compiler to look for a profile database file. If a filename is not specified, the compiler will look for a file named "flow.data" or the file/path specified in the FLOW_DATA environment variable. If a filename is specified, it overrides the FLOW_DATA environment variable.

After compiling and linking with +Oprofile=collect, run the resultant program using representative input data to collect execution profile data. Profile data is stored in flow.data by

64 Command-Line Options

Page 64
Image 64
HP C/aC++ for PA-RISC Software manual Profile-Based Optimization Options, +Onostoreordering, +Otypesafety, +Ounrollfactor