Advice to users.Under these rules, variables in a COMMON block can be
mapped as long as the components of the COMMON block are
the same in every scoping unit that declares the COMMON
block.
Correct Fortran programs will not necessarily be correct without
modification in HPF. The use of EQUIVALENCE with
COMMON blocks can impact the mappability of data objects in
subtle ways. To allow maximum optimization for performance, the HPF
default for data objects is to consider them mappable. In order to
get correct separate compilation for subprograms that use
COMMON blocks with different aggregate variable groups in
different scoping units, it will be necessary to insert the HPF
SEQUENCE directive.
As a check-list for a user to determine the status of a data object
or COMMON block, the following questions can be applied, in
order:
- Does the object appear in some explicit language context which
dictates that the object be sequential (e.g. EQUIVALENCE)
or nonsequential?
- If not, does the object appear in an explicit mapping
directive?
- If not, does the object or COMMON block name appear
in the list of names on a SEQUENCE or NO
SEQUENCE directive?
- If not, does the scoping unit contain a nameless
SEQUENCE or NO SEQUENCE?
- If not, is the compilation affected by some special
implementation-dependent environment which dictates that names
default to SEQUENCE?
- If not, then the compiler will consider the object or
COMMON block name non-sequential and is free to apply
data mapping optimizations that disregard Fortran sequence and
storage association.
(End of advice to users.)