Table 15 Levels of optimization

Level

Optimizations

 

0

Local optimizations, including constant folding and partial evaluation of test conditions.

1

Peephole optimizations, including:

 

 

•

Basic block optimizations

 

 

•

Branch optimizations

 

 

•

Instruction scheduling

 

2

Optimizations performed at level 1, plus the following:

 

 

•

Coloring register allocation

 

 

• Induction variables and strength reduction

 

 

•

Common subexpression elimination

 

 

• Loop invariant code motion

 

 

•

Store/copy optimization

 

 

•

Unused definition elimination

 

 

•

Dataflow analysis

 

 

•

Software pipelining

 

 

•

Scalar replacement

 

 

•

Sum reduction optimization

 

3

Optimizations performed at levels 1 and 2, plus the following:

 

 

• Interprocedural optimizations, including cloning and inlining

 

 

• Loop transformations to improve memory performance, including fusion and interchange

4

Level 4 optimizations are not currently supported by the PA-RISC compiler. If +O4is specified, the

 

compiler will issue a warning message and compile at optimization level 3.

 

 

For Itanium® applications, performs level 3as well as doing interprocedural optimizations across

 

translation units (link time optimizations). Object files generated at this level contain an intermediate

 

representation of the user code and are intended to be temporary files. These intermediate object

 

files are not guaranteed to be compatible from one version of the compiler to the next. This

 

requires concurrent use of the +Oprofile=use option.

 

 

Decrease the optimization to optlevel for one or more specified routines. This option can

 

occur at optimization levels 1, 2, 3, or 4. The option cannot raise the optimization level above

 

what was specified in the+Ooptlevel option. This option can occur multiple times, possibly

 

with different values of optlevel.

 

-ooutfile

-onames the executable file outfile rather than the default name of a.out. If not specified,

 

a.out will be overwritten if it exists, or created if it does not. The outfile name must not end

 

with .f,.f90,.F, i, or .i90. Also, it must not begin with + or -. When using

-cand -otogether,

 

you may specify only one source file on the command line; the resulting object file is renamed.

+[no]objdebug

This option, when used with any of the -goptions, will cause the debug information to be left in

 

the object files instead of being placed in the a.out. This will bypass the

pxdb step and the

 

links will be faster. This is available only for wdb(1) or gdb(1). +objdebug is the default at

 

compile time. +noobjdebug can be used at link time to continue to place the debug info into

 

the a.out, even if some objects were compiled with +objdebug.

 

32 Compiling and linking

Page 32
Image 32
HP UX Fortran Software Levels of optimization, Requires concurrent use of the +Oprofile=use option, +noobjdebug, Pxdb step