Under automatic parallelization, the compilers do not parallelize a loop if:
The DO loop is nested inside another DO loop that is parallelized.
Flow control allows jumping out of the DO loop.
A user-level subprogram is invoked inside the loop.
An I/O statement is in the loop.
Calculations within the loop change an aliased scalar variable.