------- Comment #2 from jv244 at cam dot ac dot uk 2010-04-23 09:25 ------- reduced testcase:
IMPLICIT NONE INTEGER, PARAMETER :: sp=4, dp=8 TYPE cp_fm_type REAL(KIND=sp), DIMENSION(:,:), POINTER :: local_data_sp REAL(KIND=dp), DIMENSION(:,:), POINTER :: local_data INTEGER :: nrow_global,ncol_global LOGICAL :: use_sp END TYPE TYPE(cp_fm_type), POINTER :: amat INTEGER :: N INTEGER :: irow_global, ncol_global, nrow_global, icol_global REAL(KIND = dp), DIMENSION(:,:), POINTER :: a REAL(KIND = sp), DIMENSION(:,:), POINTER :: a_sp N=17 ALLOCATE(amat) ALLOCATE(amat%local_data(N,N)) amat%nrow_global=N amat%ncol_global=N amat%use_sp=.FALSE. amat%local_data=0 nrow_global=amat%nrow_global ncol_global=amat%ncol_global a => amat%local_data a_sp => amat%local_data_sp DO irow_global=1,nrow_global DO icol_global=irow_global+1,ncol_global IF(amat%use_sp) THEN a_sp(icol_global,irow_global)=a_sp(irow_global,icol_global) ELSE a(icol_global,irow_global)=a(irow_global,icol_global) ENDIF ENDDO ENDDO END -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43866