[Bug fortran/29785] New: Fortran 2003: POINTER Rank Remapping

burnus at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Nov 9 18:48:00 GMT 2006


POINTER Rank Remapping

(From http://www.fortran.bcs.org/forum2002/f2000dme.htm)
Motivation: ability to have pointers to diagonals of matrices.

  REAL,ALLOCATABLE,TARGET :: base_array(:)
  REAL,POINTER :: matrix(:,:)
  REAL,POINTER :: diagonal(:)
  ...
  ALLOCATE(base_array(n*n))
  matrix(1:n,1:n) => base_array ! rank remapping
  diagonal => base_array(::n+1)

Notes:

* The base array must be rank one, to ensure that the remapping is a simple
linear transformation.
* Both lower bound and upper bound must be specified for each dimension.

Fortran 2003 standard, see "7.4.2.1 Data pointer assignment":
"R735 pointer-assignment-stmt
   is data-pointer-object [ (bounds-spec-list) ] => data-target
   or data-pointer-object (bounds-remapping-list ) => data-target
   or proc-pointer-object => proc-target

C718 (R735) If bounds-spec-list is specified, the number of bounds-specs shall 
            equal the rank of data pointer-object.
C719 (R735) If bounds-remapping-list is specified, the number of 
            bounds-remappings shall equal the rank of data-pointer-object.
C720 (R735) If bounds-remapping-list is specified, data-target shall have rank 
            one; otherwise, the ranks of data-pointer-object and data-target
            shall be the same."

and "7.4.2.1 Data pointer assignment":
"If bounds-remapping-list is specified, data-target shall not be a
disassociated or undefined pointer, and the size of data-target shall not be
less than the size of data-pointer-object. The elements of the target of
data-pointer-object, in array element order (6.2.2.2), are the first
SIZE(data-pointer-object) elements of data-target."


-- 
           Summary: Fortran 2003: POINTER Rank Remapping
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: burnus at gcc dot gnu dot org
OtherBugsDependingO 20585
             nThis:


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29785



More information about the Gcc-bugs mailing list