--- Comment #7 from ajs1 at cam dot ac dot uk 2008-12-24 16:46 ---
I have downloaded the latest version of gfortran from
gcc.gnu.org/wiki/GFortran, and it seems to be working nicely. Previously I had
followed the link from hpc.sourceforge.net, which I now see is at least a year
out of
--- Comment #2 from ajs1 at cam dot ac dot uk 2008-12-24 15:20 ---
Created an attachment (id=16982)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16982&action=view)
Fortran subroutine
This is a simplified and cleaned-up version of the file, which still triggers
the bug, w
ATMARR(I,J+1) = ATM(J,I)*XTANG
15 CONTINUE
ATMARR(I,1) = ATM(4,I)
ATMARR(I,5) = RADIUS(NINT(ATMARR(I,1)))
10 CONTINUE
C
C We find the largest coordinate
C
CRDMX = 0.0D0
DO 17 IAT = 1, IATOM
IF (ABS(ATMARR(IAT,2)) .GT. CRDMX) CRDMX = ABS(ATMARR(IAT,2))
IF (ABS(ATMARR(IAT,3)) .GT. CRDMX) CRDMX = ABS(ATMARR(IAT,3))
IF (ABS(ATMARR(IAT,4)) .GT. CRDMX) CRDMX = ABS(ATMARR(IAT,4))
17 CONTINUE
CRDMX = CRDMX + MAX(0.20D0,MIN(1.0D0, 0.25D0*CRDMX))
C
C We proceed to open the output-file
C
LUVRML = 0
FILENM = 'firstsym.wrl'
CALL VRINI(LUVRML,FILENM)
C
C We create all the atoms
C
INDX = 1
CALL DRWATM(LUVRML,INDX,IATOM,.FALSE.,ATMARR)
C
C Then we draw bonds between the atoms if this is requested.
C
IF (VRBOND) CALL DRWBND(LUVRML,INDX,IATOM,.FALSE.,ATMARR)
C
C We draw all the rotational axes. The colour is determined by
C the order:
C 2 - Red
C 3 - Green
C 4 - Blue
C 5 - Orange
C 6 - Yellow
C 7 - Violet
C >7 - Black
C
IF (NPLN .GT. 0) THEN
CALL DZERO(ATMARR,8*MXCENT)
DO 20 II = 1, NPLN
C
C The normalvector is scaled to reflect the size it should have.
C
DO 25 I = 1, 3
ATMARR(II,I+5) = CRDMX*DMRPLN(I,II)
25 CONTINUE
20 CONTINUE
CALL DRWPLN(LUVRML,INDX,NPLN,ATMARR,.TRUE.)
END IF
IF (NAXS .GT. 0) THEN
CRDMX = CRDMX + 0.25D0
DO 30 IORD = NINT(DRTAXS(4,1)),2,-1
CALL DZERO(ATMARR,8*MXCENT)
NVEC = 0
DO 32 II = 1, NAXS
IF (DRTAXS(4,II) .EQ. IORD) THEN
NVEC = NVEC + 1
DO 34 I = 1, 3
VEC(I) = DRTAXS(I,II)
34 CONTINUE
TURN = .FALSE.
C
C All vectors are turned appropriately
C
IF (VEC(1) .LT. 0.0D0) THEN
TURN = .TRUE.
ELSE IF (ABS(VEC(1)) .LT. 1.0D-10) THEN
IF (VEC(2) .LT. 0.0D0) THEN
TURN = .TRUE.
ELSE IF (ABS(VEC(2)) .LT. 1.0D-10) THEN
IF (VEC(3) .LT. 0.0D0) TURN = .TRUE.
END IF
END IF
IF (TURN) THEN
VEC(1) = -VEC(1)
VEC(2) = -VEC(2)
VEC(3) = -VEC(3)
END IF
DO 35 I = 1, 3
ATMARR(NVEC,I+1) = -CRDMX*VEC(I)
ATMARR(NVEC,I+5) = 2.0D0*CRDMX*VEC(I)
35 CONTINUE
END IF
32 CONTINUE
CALL DRWVEC(LUVRML,INDX,NVEC,ATMARR,IORD)
30 CONTINUE
END IF
CALL VREND(LUVRML)
RETURN
END
--
Summary: internal compiler error: in gfc_add_modify
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: blocker
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ajs1 at cam dot ac dot uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38618