| It was changed because we were greedy for performance.
On VAX, integer overflow checking for a routine is enabled
simply by setting a bit in the routine's "entry mask", and
the hardware does all the rest. On Alpha, most integer overflow
checking is performed simply by using slightly different
instructions (ADDL/V instead of ADDL, for example), but
occasionally it requires more code. For example, if you don't
care about overflow you can compute 4*I with a simple shift
instruction, but to check for overflow you need a slower
sequence, such as a MULL/V instruction.
Enabling integer overflow checking on Alpha may reduce performance
very slightly -- if your customer tries to, they may be able to
measure the difference. But if they feel more comfortable with
integer overflow checking enabled, then by all means encourage them
to use it.
Floating-point overflow is a whole different story. By default,
DEC FORTRAN reports an exception for floating overflow on both VAX
and Alpha. If you compile with /IEEE=UNDERFLOW or /IEEE=DENORM
on Alpha, then floating overflow produces an infinity result, as
specified by the IEEE floating-point standard. /CHECK=OVERFLOW
has no effect on floating overflow, on VAX or Alpha.
|
| Johan,
If the customer is concerned about this difference, they can use the
OPTIONS statement to ensure that the source code behaves the same on both
platforms, without needing to change the CHECK qualifier on compilation.
Just add the line:
OPTIONS /CHECK=OVERFLOW
to the top of the source module.
John Gillings, Sydney CSC
|