HP Fortran Programmer's Guide (September 2007)
Using Fortran directives
Compatibility directives
Chapter 9212
NOTE Using these directives to incorrectly assert that a loop has no data dependences
can result in the loop producing wrong answers.
Other conditions may limit the compiler's efforts to parallelize, such as the presence of the
VD$ NOCONCUR directive. Such conditions may prevent parallelization even if you use a
directive to disable dependence checking.
Controlling checks for side effects
The compiler will not parallelize a loop with an embedded call to a routine if the compiler
finds that the routine has side effects. However, if you know that a routine that is called inside
of a loop does not have side effects, you can insert the DIR$ NO SIDE EFFECTS directive in
front of the loop to force the compiler to ignore any side effects in the referenced routine when
it determines whether to parallelize the loop.
This directive affects only the immediately following loop.
NOTE Using this directive to incorrectly assert that a routine has no side effects can
result in wrong answers when a call to the routine is embedded in a loop.
Cray's implementation of this directive requires that it precede any executable statement or
statement function. HP Fortran does not enforce this requirement.