Microsoft KB Archive/74220

= FIX: F1001: Grammar.c Line 91; Nested DO-Loops with Arrays =

Article ID: 74220

Article Last Modified on 12/1/2003

-

APPLIES TO


 * Microsoft FORTRAN Compiler 4.0
 * Microsoft FORTRAN Compiler 4.01
 * Microsoft FORTRAN Compiler 4.1
 * Microsoft FORTRAN Compiler 5.0
 * Microsoft FORTRAN Compiler 4.1
 * Microsoft FORTRAN Compiler 5.0

-



This article was previously published under Q74220



SYMPTOMS
Compiling code using Microsoft FORTRAN versions 4.0, 4.01, 4.1, and 5.0 under MS-DOS, and versions 4.1 and 5.0 under OS/2, when that code contains a subroutine with nested DO-loops in which arrays are indexed using a DO variable from an outer DO-loop, may generate the following error:

fatal error F1001: Internal Compiler Error

(compiler file '../../../P2/grammar.c', line 91)



RESOLUTION
The error can be suppressed by turning off loop optimization, using a temporary variable in place of the DO variable from the outer DO-loop, or by upgrading to FORTRAN 5.1.



STATUS
Microsoft has confirmed this to be a problem in Microsoft FORTRAN versions 4.0, 4.01, 4.1, and 5.0 for MS-DOS and versions 4.1 and 5.0 for OS/2. This problem was corrected in Microsoft FORTRAN 5.1.



MORE INFORMATION
This error is caused by a problem with loop optimization. The following code generates the F1001 error:

Sample code
subroutine test(a,b,n)

real*8 a(6,12), b(6,6)

do 20 i=1,n do 10 j=1,n a(i,j+n)=b(i,j) 10     continue 20   continue return end Compiling with the /Od option or with the /Odct options suppresses the error. Microsoft FORTRAN version 5.1 will not generate the error.

If a temporary variable is used in place of the DO variable &quot;i&quot; in the array subscript, the error will not generated. This allows full optimization to be used when compiling. The following code demonstrates this solution: subroutine test(a,b,n)

real*8 a(6,12), b(6,6)

do 20 i=1,n ii = i             ! Temporary variable assigned value of i       do 10 j=1,n a(ii,j+n)=b(ii,j) ! Temporary variable used in place of i 10     continue 20   continue return end

Additional query words: 4.00 4.01 4.10 5.00

Keywords: kbfix KB74220

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.