-mp |
The -mp option restricts optimization to maintain
declared precision and to ensure that floating-point arithmetic conforms
more closely to the ANSI and IEEE standards. For most programs, specifying
this option adversely affects performance. If you are not sure whether
your application needs this option, try compiling and running your program
both with and without it to evaluate the effects on performance versus
precision. Specifying this option has the following effects on program
compilation:
User variables declared as floating-point types
are not assigned to registers.
Whenever an expression is spilled, it is spilled
as 80 bits (extended precision), not 64 bits (double precision).
Floating-point arithmetic comparisons conform
to IEEE 754 except for NaN behavior.
The exact operations specified in the code are
performed. For example, division is never changed to multiplication by
the reciprocal.
The compiler performs floating-point operations
in the order specified without reassociation.
The compiler does not perform the constant-folding
optimization on floating-point values. Constant folding also eliminates
any multiplication by 1, division by 1, and addition or subtraction of
0. For example, code that adds 0.0 to a number is executed exactly as
written. Compile-time floating-point arithmetic is not performed to ensure
that floating-point exceptions are also maintained.
Floating-point operations conform to ANSI C. When
assignments to type float and double are made, the precision is rounded
from 80 bits (extended) down to 32 bits (float) or 64 bits ( double ).
When you do not specify -Op, the extra bits of
precision are not always rounded before the variable is reused.
The -nolib_inline option,
which disables inline functions expansion, is used.
Note: The -nolib_inline
and -mp options are active by default when you
choose the -Xc (strict ANSI C conformance) option.
|