+Ofltacc disables optimizations that change the order of expression evaluation and therefore may affect the accuracy of the result. The +Ofltaccoption also disables fusing.

NOTE: +Ofltacc is the same as +Ofltacc=strict. +Onofltacc is the same as +Ofltacc=relaxed.

Table 2-9 identifies the different actions taken by the optimizer, according to whether you specify +Ofltacc, +Onofltacc, or neither option. In all cases, the table assumes that you are compiling at optimization level 2 (+O2) or higher.

Table 18 Optimizations performed by +O[no]fltacc

+O[no]fltacc

Expression reordering?

 

FMA?

 

 

 

 

 

No

 

Yes

 

 

 

 

+Ofltacc

No

 

No

 

 

 

 

+Onofltacc

Yes

 

Yes

 

 

 

 

 

 

+O[no]fltacc=[strictdefaultlimitedrelaxed]

Control the level of floating point

 

 

optimizations that the compiler may

 

 

perform. The defined values for optlevel

 

 

are:

 

 

strict—disallow any floating point

 

 

optimization that can result in numerical

 

 

differences. This is the same as

 

 

+Ofltacc.

 

 

 

 

 

default—allow contractions, such as

 

 

fused multiply-add (FMA), but disallows

 

 

any other floating point optimization that

 

 

can result in numerical differences.

 

 

limited—like default, but also allows

 

 

floating point optimizations which may

 

 

affect the generation and propogation of

 

 

infinities, NaNs, and the sign of zero.

 

 

Also implies +Ocxlimitedrange.

 

 

relaxed—in addition to the

 

 

optimizations allowed by limited, permits

 

 

optimizations, such as reordering of

 

 

expressions, even if parenthesized, that

 

 

may affect a rounding error. This is the

 

 

same as +Onofltacc. Also implies

 

 

+Ocxlimitedrange.

 

 

+Ofrequently_called=function1[,function2...]

The named functions are assumed to be

 

 

frequently called. This option overrides

 

 

any information in a profile database.

 

 

 

+Ofrequently_called:filename

 

The file indicated by filename contains a

 

 

list of function names, separated by

 

 

spaces or newlines. These functions are

 

 

assumed to be frequently called. This

 

 

option overrides any information in a

 

 

profile database.

 

 

 

+O[no]info

 

+Oinfo causes the compiler to display

 

 

informational messages about the

 

 

optimization process. The +Oinfo option

 

 

provides feedback that can help you to

 

 

 

 

Fine-tuning optimization options

43