FRTN-OSF FORTAUE02041 F77 _ F90 Compiler DIGITAL UNIX ECO Summary
Copyright (c) Digital Equipment Corporation 1998. All rights reserved.
PRODUCT: DIGITAL Fortran for DIGITAL UNIX[R] V4.1
OP/SYS: DIGITAL UNIX V3.0, V3.2A, V3.2B, V3.2C, V3.2D-1/V3.2E-1,
V3.2D-2/V3.2E-2, V3.2F, V3.2G, V4.0
COMPONENTS: Fortran 77
Fortran 90
SOURCE: Digital Equipment Corporation
ECO INFORMATION:
ECO Kit Name: FORTAUE02041
ECO Kits Superseded by This ECO Kit: FORTAUE01041
ECO Kit Approximate Size: 21792 Blocks
Kit Applies To: Fortran V4.1
System/Cluster Reboot Necessary: No
ECO KIT SUMMARY:
An ECO kit exists for Fortran V4.1 on DIGITAL UNIX V3.0 through V4.0.
This kit addresses the following problems:
The following changes and corrections were made to the DIGITAL Fortran 90
compiler in FORTAUE02041:
o Cray pointees that were being allocated statically are
now correctly given no storage class.
o Using assumed shape array within a contained routine no
longer produces an internal compiler error.
o An error message is now given for invalid keyword values
given for an I/O statement's keyword.
o Declarations of the type "character, allocatable ::
field*7(:)", in which the array shape specifier comes
after the length specification in a deferred-shape
character array no longer produces an internal compiler
error.
o When assigning a derived type variable with a structure
constructor, if a character scalar is supplied to an
character array component, every elements of the array
is assigned with the character scalar value.
o The MVBITS intrinsic now gives correct result if its 4th
argument is a non-lowerbound subscripted array element.
o Reference of a character function, where the length
of its return value is dependent on one or more of
its arguments, no longer produces an internal compiler
error.
o Pointer assignment should now work properly when the
target is a component of an allocatable array with a
lower bound different of 1.
o Long NAMELISTs no longer causes a compiler internal
error.
o When initializing a derived type variable with a
structure constructor, if a scalar is supplied to
an array component, every elements of the array is
initialized with the scalar value.
o Allow %fill in STRUCTURE declarations using F90 syntax,
such as: integer :: %fill.
o Using unary "-" operator with record fields should now
give correct results.
o Use of NEAREST with two different KIND REAL arguments no
longer gets a nonstandard warning.
o Allow SIZEOF of assumed size record field.
o Module importing has been improved. If a module is USEd
in both the host and its internal procedure, the module
is now only imported once by the compiler.
o A module that contains "PRIVATE" followed by "PUBLIC
variable" no longer gets incorrect error message.
o Optional comma in DO with label, such as: label: DO, JJ
= 1, N, 1 no longer gets incorrect syntax error.
o Allow a dummy argument to have the same name as a
structure field.
o A module that contains USE module, ONLY : var no longer
gets internal compiler error.
o A component of a derived-type with a name that starts
with FILL no longer gets a syntax error.
o Allow a variable with '_' in its name to be used in a
variable format expression.
o No longer import any definitions if a module is used
with the "USE module_name, ONLY:" statement.
o Fix a compile time stack overflow problem.
o Fix a "$IF DEFINED()" problem when a routine is defined
between the conditional compilation.
o Put out error message for an invalid use of "TYPE (type_
name)" statement.
o Allow RECORD in a NAMELIST.
o Fix using "# line_number" in DATA statement.
o The -pad_source option now properly pads Hollerith
literals that are continued across source records.
o Add standards warning for using two consecutive
operators in an expression.
o Allow POINTER attribute for character entities whose
length is specified by a variable expression or an *
(assumed length character).
o Do not flag as nonstandard when all of the objects
in the EQUIVALENCE set are of type default integer,
default real, double precision, default complex, default
logical, or numeric sequence type.
o Add standards warning for assignment to the host
associated variable in a PURE function.
o Add standards warning for using a dummy argument in
a specification-expr as the argument of one of the
intrinsic functions BIT_SIZE, KIND, LEN, or the numeric
inquiry functions.
o Compiling BLOCK DATA with -recursive no longer causes a
compiler internal error.
o Fix a bug in a special usage of passing internal
procedure as argument.
o Using ASSOCIATED with f90 pointer now gives correct
answer.
o Using vector subscripts in MATMUL now gives correct
answer.
o Passing %REF argument to a routine with explicit
INTERFACE no longer gets an internal error.
o CSHIFT of an array pointer contained within a derived
type no longer gets an internal error.
o Compiling files that contain very long routine names
with -V no longer gets an internal error.
o Using assignments in a defined generic assignment
subroutine when the subroutine is not RECURSIVE now
gets an error.
o Parameter constant is allowed as argument of a LOC
intrinsic.
o Using UNION within derived type now gets correct result.
o Having EQUIVALENCEd character array elements within a
MODULE no longer gets internal error.
o Duplicate SAVE statement no longer gets an error.
o Parameter constant can be used as case-value in a SELECT
CASE statement.
o ALIAS attribute can now be specified in a cDEC$
ATTRIBUTE directive for a variable that has not been
declared EXTERNAL.
o Interface with optional function argument is now
resolved properly.
o Using record fields in multiply and add operations now
produces correct result.
o Using the following operators: ==, /=, <, >, <=, and >=
no longer get non-standard conforming warnings.
o Extra trailing blanks are now allowed and ignored
when used in specifier of OPEN statement, e.g.,
FORM='formatted '.
o Passing an array argument to a statement function now
gets an error.
o INTEGER*2 array now gets correct result when compiled
with -intger_size 16.
o Fix a bug related to module importing with modules that
contain PRIVATE statement.
o Parameter constant defined in a MODULE is now imported
when its use is only in a variable format expression.
o C attribute can be specified in a cDEC$ ATTRIBUTE
directive for module variables.
o Parameter constants is allowed in a structure
constructor.
o A derived type component having the same name as a
common block no longer gets an internal error.
o A non-standard warning is issued if the first argument
of a GENERIC assignment procedure is not INTENT(OUT) or
INTENT(INOUT).
o $PACK directive and the -align recNbyte option now
affect alignment of data items in a SEQUENCE derived-
type.
o Fix a bug related to module importing with modules that
contain a PRIVATE statement.
o Using a structure constructor to initialize a multi-
dimensional array component of a derive-type no longer
causes an internal error.
o The -fpconstant option now works correctly for
assignment to double complex variables.
o Having a D line as the first non-comment line after a
conditional $ENDIF directive no longer gets an error.
o No longer flag ES format as non-standard.
o Remove an internal limit on the number of entries of a
NAMELIST
o Using substring of a character array as argument of
ICHAR intrinsic no longer gets internal error
o Pointer assignment of an array of character substrings
(e.g. p=>a(:)(2:4)) now gets correct result
o Using array transformation intrinsics such as PACK,
SPREAD, and RESHAPE with array of derived-type as
argument in a PRINT statement now gets correct results
o Allow an array with a name of TYPE
o Specifying $NOFREEFORM in a .f90 file now set line size
to 72 columns
o Remove a limit of 256 number of arguments for
subroutines and functions
o An incorrect statement: "IF (ABS(I).GT 1) I=0" now gets
an error message
o An incorrect statement: "CHARACTER(LEN=1), PARAMETER ::
CPSCLR = '' ''" now gets an error message
o Using record fields in multiply and subtract operations
now produces correct results
o Having a PRIVATE, EQUIVALENCE variable in a module no
longer causes compile time segmentation violation
o Specifying ONLY on one variable in a COMMON block now
only declares the one variable not the entire variables
in the COMMON block
o Allow user defined operator to be used as the format
character expression in a PRINT or READ statement
o Using modules and the AUTOMATIC statement in the same
routine no longer gets internal error
o Module variables with EXTERN attributes now work
properly
o Increase an internal limit so that large programs no
longer get the "text handle table overflow" message
o Using record fields in exponentiation and subtract
operations now produce correct result
o Flag incorrect usage of an entry dummy argument in an
executable statement before its declaration in the entry
statement
o Disallow optional return dummy argument following other
OPTIONAL dummy arguments
o An invalid WRITE statement no longer gets an internal
error
o Allow passing NULL intrinsic function as argument to
other routines
o Allow AUTOMATIC variables to be used in an EQUIVALENCE
statement
o Using a structure constructor with scalar value to
assign an array element now produces correct result
o Using an array constructor with integer value to
initialize a real or complex array now produces correct
result
o Flag common block name and routine name conflict
o Fix elemental character function with varying length
The following changes and corrections were made to the DIGITAL Fortran 77
compiler in ECO 2:
o Fix "POINTER(P, ARRAY(COMMON_ARRAY(IDUMMY),IDUMMY2))".
o Prevent ASF name from being passed as actual argument.
o Warn when a statement function is passed an array as an actual
argument.
o Set "syntax" when "-stand semantics" is requested. Do not set
"mia" when "-stand all" is requested.
o Fix a random bug when a listing is requested.
o Fix a bug where a symbol is incorrectly listed as used before
defined.
o Give warning for assignment to an active DO loop index variable.
o Disallow %descr('foo') as I/O list element (check the mechanism).
o For REWRITE, make sure small constants are promoted to default
integer size.
o Attribute NAMELIST code to establish the block to the NAMELIST
statement (for debugging).
o Allow EXTERNAL foo where foo is a pointee (function/subroutine).
o Give better error message for asmsymdots.
o On Alpha platforms ASM support no longer requires switch fe_asm.
The following changes and corrections were made to the Run-Time Library
support in ECO 2:
o Access violation with read past end of internal file
o added support for cpu_time intrinsic
o RANDOM_SEED with no arguments uses clock based random seeds
o A bug involving an I/O list with multiple list items and a foreign
file was fixed - ONLY IN F77 compiler
The following changes and corrections were made to the DIGITAL Fortran 90
compiler in ECO 1:
o Fix SIGN intrinsic to handle -0.
o Fix LOC intrinsic and %LOC of a derived type field.
o Fixed debug information for dynamic character variable
(such as character*(i) c).
o Add debugging support for integer (Cray) pointers.
o Fix storing to the return value of a function returning
character in a containing internal routine.
o Fix Nullification of a character*n pointer argument.
o Fix using passed length argument in a containing
internal routine.
o Fix compiler abort when a source line is longer than
1024 characters in freeform source file.
o Fix using IOLENGTH in a INQUIRE statement.
o Fix FORALL problem of the form "X(X(I)) =."
o Fix contained functions returning a implicitly
initialized derived-type.
o Better diagnostics for invalid programs.
o Fix compiler abort when using Nullification of a pointer
in a MODULE.
o Fix a certain types of USE of a MODULE with rename list.
o Fix using -extend_source:80 and -pad_source.
o Fix compiler abort when using do-loop style implicitly
initialized derived-types in a MODULE.
o Sign-extending INTEGER*2 parameter constants.
o Flag invalid nested internal procedures.
o Fix compiler abort of USE of a MODULE with namelist
variables in rename list.
o Issue a warning message for a intrinsic with wrong
argument type and treat it as an external.
o Issue a warning message for having a SAVE common block
data object.
o Fix compiler abort of USE of a MODULE with namelists.
o Fix using SIZEOF(common_block_array) in a PARAMETER
statement.
o Fix using READONLY keyword as first keyword in an OPEN
statement.
o Allow record name to be the same as a structure name.
o Fix parameter character constant with embedded NULL
character.
o Fix compiler abort when same name used as a structure
and derived type.
o Allow BLOCKSIZE keyword in an INQUIRE statement.
o Allow a record in a SAVE statement.
o Allow a module to have the name "procedures".
o Do not flag IABS intrinsic function as nonstandard.
o Do not flag DOUBLE COMPLEX as nonstandard.
o Treat POPCNT, POPPAR, LEADZ as external functions.
o Put out an error message for ptr => pack(...).
o Treat C$DOACROSS as a comment.
o Issue an error message for invalid derived type
parameter constant.
o Fix compiler abort when passing an array constructor as
an actual argument.
o Fix using derived-type components that are same as
intrinsic names.
o Fix an incorrect warning about "explicit-shaped array
is being passed to a routine that expects a pointer or
assumed-shape array".
o Fix a problem with -warn:errors and -stand:f90 options.
Nonstandard messages should be error messages.
o Fix incorrect results when compiled a program with -
assume:dummy_aliasing.
o Do not flag BOZ constant as nonstandard.
o Do not flag Z format as nonstandard.
o Allow 511 continuation lines.
o Put out a standard warning for using character constant
in DATA statement.
o Fix using TRANSFER in initialization.
o Fix a problem with user defined assignment statement.
o Issue an error message when passing or receiving an
optional argument by value.
o Fix an invalid message about return value of a function
is not defined when the function returns an initialized
derived type.
o Fix a compiler abort with "text handle table overflow"
message.
o Fix a compiler abort using a SAVE statement.
o Fix a problem when an existing operator is overloaded.
o Fix argument checking of intrinsic subroutines.
o Fix generic interface of elemental functions.
o Issue an argument mismatch warning message for using
an integer with a statement function that takes real
argument.
o Fix compiler directives processing.
o Fix a compiler abort using an invalid PARAMETER array.
o Issue an error message for SAVE of an ENTRY result
variable.
o Fix using UNION within derive type.
o Fix a compiler internal error when using C and REFERENCE
attributes on a function name.
o Fix a compiler internal error when using ASSOCIATED of a
function returning a pointer.
o Add support for passing complex by value.
o Fix pointer assignment with a character substring.
o Allow using ICHAR in an array constructor within the
initialization part of an array declaration.
o Fix a problem with using UNION declaration within the
derived type.
o Allow exporting of a module procedure which has a name
that is the same as a generic name.
o Fix a problem with using user defined assignment
operation.
o Allow specifying NaNs in the PARAMETER statement.
o Allow D source line to continue a non-D source line.
o Fix a problem in array initialization processing.
The following changes and corrections were made to the DIGITAL Fortran 77
compiler in ECO 1:
o Deferred function argument expression can cause problems. Example
is: if(f(i,(.not.x).and.y))then.
o Allow main program to generate .s file (force MAIN__ symbol out).
o Be more tolerant of large untyped things like
SIZEOF(X'FFFFFFFFFFFFFFFFFFF').
o Do not delete adjustable arrays that are EQUIVALENCEd into COMMON.
o Allow CHARACTER C*10(20) syntax in addition to C(20)*10.
o Fix for large (integer*8 sized) constant subscripts.
o Fix f90 automatic and pointer arrays with variable bounds.
o Allow debugging with pointer to array in common.
o Allow sizeof(character_array(1)) - do runtime evaluation if
necessary.
o Be more selective on bounds checking on DATA statements (but
ALWAYS check that we are "inside" the array, even if individual
subscripts are not).
o Get 0**0 (and 0.0**0.0, etc.) correct with "-check [no]power".
o Allow INTRINSIC statement after PARAMETER statement using the
intrinsic name.
o Disambiguate local variable and label names in .s files.
o Do argument (type) checking for mechanism general (character array
as actual).
o Fix two bugs in "-warn argument". Check function types, even if n o
arguments. Get function type correct if declared AFTER the actual
function statement.
o Put out better message for function value not defined by end of
function.
o Fix prolog (and other) locators for main program with include file
(and no name).
The following changes and corrections were made to the Run-Time Library
support in ECO 1:
o On UNIX, doing an inquire EXISTS for a FILE which is a
null name gives an incorrect True.
o Fix bugs in G format editing of non-real types.
Problem occurs with a repeating format applied to a mix
of data types.
o VFE/array interaction bug.
o READ(ADVANCE='NO',IOSTAT=) returns wrong IOSTAT for EOR.
o An interaction problem when an iolist with a complex followed by an
item of different type is processed was uncoverd by algorithms
implemented in later compiler versions.
o Array section in NAMELIST input generates runtime error.
Add substring (m:n) support for all arrayed data types"
o Fix a multi-thread corruption bug. Multiple threads writing to the
same unit failed.
o Support STOPs from multiple threads.
o Fixed bug in intrinsic bjtest.
o Add support in for_set_reentrancy routine to return current
reentrancy mode for an argument of FOR_K_REENTRANCY_INFO.
Complete release notes, including those for the V4.1 release, are provided
by the kit in /usr/cmplrs/fort/relnotes and /usr/cmplrs/fort90/relnotes
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
dfa412.README
dfa412.CHKSUM
dfa412.CVRLET_TXT
dfa412.tar
|