Since an HPF program is nonconforming if it specifies any mapping that would cause a scalar data object to be mapped onto more than one abstract processor, there is a constraint on the sequential variables and aggregate covers that can be mapped. In particular, programs that direct double precision or complex arrays to be mapped such that the storage units of a single array element are split because of some EQUIVALENCE statement or COMMON block layout are nonconforming.
Correct FORTRAN 77 or Fortran 90 programs will not necessarily be correct without modification in HPF. As the examples in the next section illustrate, use of EQUIVALENCE with COMMON blocks can impact mappability of the variables in subtle ways. To allow maximum optimization for performance, the HPF default for variables 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 variable or COMMON block, the following questions can be applied, in order:
(End of advice to users.)