gfortran -v -save-temps -c Diags.f95
Using built-in specs.
Target: powerpc-apple-darwin8.7.0
Configured with: ../gcc-4.0.3/configure --prefix=/usr/local
--enable-languages=c,c++,f95,java --with-gmp=/usr/local/lib
--with-mpfr=/usr/local/lib
Thread model: posix
gcc version 4.0.3
 /usr/local/libexec/gcc/powerpc-apple-darwin8.7.0/4.0.3/f951 Diags.f95 -fPIC
-quiet -dumpbase Diags.f95 -auxbase Diags -version -o Diags.s
GNU F95 version 4.0.3 (powerpc-apple-darwin8.7.0)
        compiled by GNU C version 4.0.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Diags.f95: In function 'tqli':
Diags.f95:10: internal compiler error: in gfc_get_symbol_decl, at
fortran/trans-decl.c:783
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Diags.f95:

        module Diags

                integer, parameter:: MAX_ITER = 10000

                contains


                       
!------------------------------------------------------------

                        integer function tqli(d, e, z, n

                                implicit none
                                real(8), dimension(:), intent(INOUT):: d, e
                                real(8), dimension(:,:), intent(INOUT):: z
                                integer, intent(IN):: n

                                integer:: i, k, l, m
                                integer:: iter, iflag, iflag2
                                real(8):: dd, r, g, s, c, p, f, b

                                do i = 2, n
                                        e(i - 1) = e(i)
                                end do
                                e(n) = 0.0d00

                                do l = 1, n

                                        iter = 0

                                        do

                                                iflag = 0
                                                iflag = 0
                                                do m = l, n - 1
                                                        dd = dabs(d(m)) +
dabs(d(m+1))
                                                        if (dabs(e(m)) + dd
.eq. dd) then
                                                                iflag = 1
                                                                exit
                                                        endif
                                                end do

                                                if (iflag .ne. 0) then
                                                        m = n - 1
                                                endif

                                                if (m .ne. l) then

                                                        if (iter .ge. MAX_ITER)
then
                                                                print *, 'iter
= ', iter, ' > MAX_ITER = ', &
                                                                       
MAX_ITER, ' in tqli'
                                                                tqli = 0
                                                                return
                                                        endif
                                                        iter = iter + 1

                                                        g = (d(l + 1) - d(l)) /
(e(l) + e(l))
                                                        r = dsqrt(g * g + 1)
                                                        if (g .gt. 0)then
                                                                g = d(m) - d(l)
+ e(l) / (g + r)
                                                        else
                                                                g = d(m) - d(l)
+ e(l) / (g - r)
                                                        endif

                                                        s = 1.0
                                                        c = 1.0
                                                        p = 0.0

                                                        do i = m - 1, l, -1

                                                                f = s * e(i)
                                                                b = c * e(i)

                                                                if (dabs(f)
.ge. dabs(g)) then

                                                                        c = g /
f
                                                                        r =
dsqrt(c * c + 1.0)
                                                                        e(i +
1) = f * r
                                                                        s = 1.0
/ r
                                                                        c = c *
s

                                                                else

                                                                        s = f /
g
                                                                        r =
dsqrt(s * s + 1.0)
                                                                        e(i +
1) = g * r
                                                                        c = 1.0
/ r
                                                                        s = s *
c

                                                                endif

                                                                g = d(i + 1) -
p
                                                                r = (d(i) - g)
* s + 2.0 * c * b
                                                                p = s * r
                                                                d(i + 1) = g +
p
                                                                g = c * r - b

                                                                do k = 1, n

                                                                        f =
z(k, i + 1)
                                                                        z(k, i
+ 1) = s * z(k, i) + c * f
                                                                        z(k, i)
= c * z(k, i) - s * f

                                                                end do

                                                        end do ! i = m - 1, l,
-1

                                                        d(l) = d(l) - p
                                                        e(l) = g
                                                        e(m) = 0.0
                                                        iflag2 = 1

                                                end if ! m .ne. l

                                                if (iflag2 .ne. 1) exit

                                        end do

                                end do ! l = 1, n

                                tqli = 1
                                return

                        end function tqli

                       
!------------------------------------------------------------


        end module Diags


-- 
           Summary: Internal compiler error: in gfc_get_symbol_decl, at
                    fortran/trans-decl.c:783
           Product: gcc
           Version: 4.0.3
            Status: UNCONFIRMED
          Severity: critical
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: danp57 at optonline dot net
 GCC build triplet: see below
  GCC host triplet: powerpc-apple-darwin8.7.0
GCC target triplet: powerpc-apple-darwin8.7.0


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

Reply via email to