This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

internal compiler error


Folks,

while playing with optimization options I ran into this one:

atamul.f: In function ‘atamul’:
atamul.f:6:0: internal compiler error: in initialize_matrix_A, at tree-data-ref.c:1912
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


source attached.

command line:
gfc -c -Wall -Wextra -Wuninitialized -Wunused-label -fno-underscoring -O3 -fno-strict-aliasing -Winline -fexpensive-optimizations \
-finline-functions -finline-limit=500000 -fstrength-reduce -fgcse -fgcse-lm -fgcse-sm -funroll-loops -fforce-addr -fomit-frame-pointer -ftree-vectorize \
-ftree-loop-linear -mfpmath=sse -msse3 -march=pentium4 -pipe -o atamul.o atamul.f



(GNU Fortran (GCC) 4.5.0 20091014 (experimental) [trunk revision 152402])


Intel core duo cygwin/WinXP 32 bit


Behaves when I remove '-ftree-loop-linear'


H.
c AtAMul: Left-multiplies matrix AMat by its transpose ----------------
c         AtAMat = transpose(AMat) * AMat
c          k,k               k,n     n,k
c     the resultant matrix AtAMat is returned in lower triangle form
c ---------------------------------------------------------------------
      Subroutine AtAmul(AMat,AtAMat,kDim,nDim)
      IMPLICIT NONE

c   Input:                   Output:                   Local:
      Integer      kDim,nDim,                            i, j, ij, n
      Real*8  AMat(kDim,nDim), AtAMat(kDim*(kDim+1)/2),  Ai1, Ain

c     initialization loop n=1 :
      ij = 0
      do i = 1, kDim
        Ai1 = AMat(i,1)
        do j = 1, i-1
          AtAMat(ij+j) = Ai1 * AMat(j,1)
        enddo
        ij = ij + i
        AtAMat(ij) = Ai1 * Ai1
      enddo

c     accumulation loop n=2,nDim :
      do n = 2, nDim
        ij = 0
        do i = 1, kDim
          Ain = AMat(i,n)
          do j = 1, i-1
            AtAMat(ij+j) = AtAMat(ij+j) + Ain * AMat(j,n)
          enddo
          ij = ij + i
          AtAMat(ij) = AtAMat(ij) + Ain * Ain
        enddo
      enddo

      end

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]