Commit 7e18e127 by Mark Mitchell Committed by Mark Mitchell

BUGS: Remove.

	* BUGS: Remove.
	* NEWS: Likewise.

From-SVN: r43340
parent b1b0700d
_Note:_ This file is automatically generated from the files
`bugs0.texi' and `bugs.texi'. `BUGS' is _not_ a source file, although
it is normally included within source distributions.
This file lists known bugs in the GCC-3.1 version of the GNU Fortran
compiler. Copyright (C) 1995,1996,1997,1998,1999,2000 Free Software
Foundation, Inc. You may copy, distribute, and modify it freely as
long as you preserve this copyright notice and permission notice.
Known Bugs In GNU Fortran
*************************
This section identifies bugs that `g77' _users_ might run into in
the GCC-3.1 version of `g77'. This includes bugs that are actually in
the `gcc' back end (GBE) or in `libf2c', because those sets of code are
at least somewhat under the control of (and necessarily intertwined
with) `g77', so it isn't worth separating them out.
For information on bugs in _other_ versions of `g77', see
`gcc/gcc/f/NEWS'. There, lists of bugs fixed in various versions of
`g77' can help determine what bugs existed in prior versions.
_Warning:_ The information below is still under development, and
might not accurately reflect the `g77' code base of which it is a part.
Efforts are made to keep it somewhat up-to-date, but they are
particularly concentrated on any version of this information that is
distributed as part of a _released_ `g77'.
In particular, while this information is intended to apply to the
GCC-3.1 version of `g77', only an official _release_ of that version is
expected to contain documentation that is most consistent with the
`g77' product in that version.
An online, "live" version of this document (derived directly from
the mainline, development version of `g77' within `gcc') is available
via `http://www.gnu.org/software/gcc/onlinedocs/g77_bugs.html'. Follow
the "Known Bugs" link.
For information on bugs that might afflict people who configure,
port, build, and install `g77', see "Problems Installing" in
`gcc/gcc/f/INSTALL'.
The following information was last updated on 2000-11-05:
* `g77' fails to warn about use of a "live" iterative-DO variable as
an implied-DO variable in a `WRITE' or `PRINT' statement (although
it does warn about this in a `READ' statement).
* Something about `g77''s straightforward handling of label
references and definitions sometimes prevents the GBE from
unrolling loops. Until this is solved, try inserting or removing
`CONTINUE' statements as the terminal statement, using the `END DO'
form instead, and so on.
* Some confusion in diagnostics concerning failing `INCLUDE'
statements from within `INCLUDE''d or `#include''d files.
* `g77' assumes that `INTEGER(KIND=1)' constants range from `-2**31'
to `2**31-1' (the range for two's-complement 32-bit values),
instead of determining their range from the actual range of the
type for the configuration (and, someday, for the constant).
Further, it generally doesn't implement the handling of constants
very well in that it makes assumptions about the configuration
that it no longer makes regarding variables (types).
Included with this item is the fact that `g77' doesn't recognize
that, on IEEE-754/854-compliant systems, `0./0.' should produce a
NaN and no warning instead of the value `0.' and a warning. This
is to be fixed in version 0.6, when `g77' will use the `gcc' back
end's constant-handling mechanisms to replace its own.
* `g77' uses way too much memory and CPU time to process large
aggregate areas having any initialized elements.
For example, `REAL A(1000000)' followed by `DATA A(1)/1/' takes up
way too much time and space, including the size of the generated
assembler file. This is to be mitigated somewhat in version 0.6.
Version 0.5.18 improves cases like this--specifically, cases of
_sparse_ initialization that leave large, contiguous areas
uninitialized--significantly. However, even with the
improvements, these cases still require too much memory and CPU
time.
(Version 0.5.18 also improves cases where the initial values are
zero to a much greater degree, so if the above example ends with
`DATA A(1)/0/', the compile-time performance will be about as good
as it will ever get, aside from unrelated improvements to the
compiler.)
Note that `g77' does display a warning message to notify the user
before the compiler appears to hang.
* Previous versions of `g77' didn't emit information on variable and
array members of common blocks and equivalences for use with a
debugger (the `-g' command-line option). As of the version of
`g77' shipped with version 3.0 of `GCC', this is corrected.
As of Version 0.5.19, a temporary kludge solution is provided
whereby some rudimentary information on a member is written as a
string that is the member's value as a character string.
* When debugging, after starting up the debugger but before being
able to see the source code for the main program unit, the user
must currently set a breakpoint at `MAIN__' (or `MAIN___' or
`MAIN_' if `MAIN__' doesn't exist) and run the program until it
hits the breakpoint. At that point, the main program unit is
activated and about to execute its first executable statement, but
that's the state in which the debugger should start up, as is the
case for languages like C.
* Debugging `g77'-compiled code using debuggers other than `gdb' is
likely not to work.
Getting `g77' and `gdb' to work together is a known
problem--getting `g77' to work properly with other debuggers, for
which source code often is unavailable to `g77' developers, seems
like a much larger, unknown problem, and is a lower priority than
making `g77' and `gdb' work together properly.
On the other hand, information about problems other debuggers have
with `g77' output might make it easier to properly fix `g77', and
perhaps even improve `gdb', so it is definitely welcome. Such
information might even lead to all relevant products working
together properly sooner.
* `g77' doesn't work perfectly on 64-bit configurations such as the
Digital Semiconductor ("DEC") Alpha.
This problem is largely resolved as of version 0.5.23. Version
0.6 should solve most or all remaining problems (such as
cross-compiling involving 64-bit machines).
* `g77' currently inserts needless padding for things like `COMMON
A,IPAD' where `A' is `CHARACTER*1' and `IPAD' is `INTEGER(KIND=1)'
on machines like x86, because the back end insists that `IPAD' be
aligned to a 4-byte boundary, but the processor has no such
requirement (though it is usually good for performance).
The `gcc' back end needs to provide a wider array of
specifications of alignment requirements and preferences for
targets, and front ends like `g77' should take advantage of this
when it becomes available.
* The `libf2c' routines that perform some run-time arithmetic on
`COMPLEX' operands were modified circa version 0.5.20 of `g77' to
work properly even in the presence of aliased operands.
While the `g77' and `netlib' versions of `libf2c' differ on how
this is accomplished, the main differences are that we believe the
`g77' version works properly even in the presence of _partially_
aliased operands.
However, these modifications have reduced performance on targets
such as x86, due to the extra copies of operands involved.
Wed Jun 13 11:22:39 2001 Mark Mitchell <mark@codesourcery.com>
* BUGS: Remove.
* NEWS: Likewise.
2001-06-10 Toon Moene <toon@moene.indiv.nluug.nl>
* g77install.texi: Remove.
......
_Note:_ This file is automatically generated from the files
`news0.texi' and `news.texi'. `NEWS' is _not_ a source file, although
it is normally included within source distributions.
This file lists news about the GCC-3.1 version (and some other
versions) of the GNU Fortran compiler. Copyright (C)
1995,1996,1997,1998,1999,2000 Free Software Foundation, Inc. You may
copy, distribute, and modify it freely as long as you preserve this
copyright notice and permission notice.
News About GNU Fortran
**********************
Changes made to recent versions of GNU Fortran are listed below,
with the most recent version first.
The changes are generally listed in order:
1. Code-generation and run-time-library bug-fixes
2. Compiler and run-time-library crashes involving valid code that
have been fixed
3. New features
4. Fixes and enhancements to existing features
5. New diagnostics
6. Internal improvements
7. Miscellany
This order is not strict--for example, some items involve a
combination of these elements.
Note that two variants of `g77' are tracked below. The `egcs'
variant is described vis-a-vis previous versions of `egcs' and/or an
official FSF version, as appropriate. Note that all such variants are
now obsolete - the information is retained here only for its historical
value.
Therefore, `egcs' versions sometimes have multiple listings to help
clarify how they differ from other versions, though this can make
getting a complete picture of what a particular `egcs' version contains
somewhat more difficult.
_Warning:_ The information below is still under development, and
might not accurately reflect the `g77' code base of which it is a part.
Efforts are made to keep it somewhat up-to-date, but they are
particularly concentrated on any version of this information that is
distributed as part of a _released_ `g77'.
In particular, while this information is intended to apply to the
GCC-3.1 version of `g77', only an official _release_ of that version is
expected to contain documentation that is most consistent with the
`g77' product in that version.
Nevertheless, information on _previous_ releases of `g77', below, is
likely to be more up-to-date and accurate than the equivalent
information that accompanied those releases, assuming the last-updated
date of the information below is later than the dates of those releases.
That's due to attempts to keep this development version of news
about previous `g77' versions up-to-date.
An online, "live" version of this document (derived directly from
the mainline, development version of `g77' within `gcc') is available at
`http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
The following information was last updated on 2000-11-05:
In development:
===============
* Using options `-g', `-ggdb' or `-gdwarf[-2]' (where appropriate
for your target) now also enables debugging information for COMMON
BLOCK and EQUIVALENCE items to be emitted.
* The `TtyNam' intrinsics now set NAME to all spaces (at run time)
if the system has no `ttyname' implementation available.
* Upgrade to `libf2c' as of 1999-06-28.
This fixes a bug whereby input to a `NAMELIST' read involving a
repeat count, such as `K(5)=10*3', was not properly handled by
`libf2c'. The first item was written to `K(5)', but the remaining
nine were written elsewhere (still within the array), not
necessarily starting at `K(6)'.
In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
=======================================================
* `g77' no longer generates bad code for assignments, or other
conversions, of `REAL' or `COMPLEX' constant expressions to type
`INTEGER(KIND=2)' (often referred to as `INTEGER*8').
For example, `INTEGER*8 J; J = 4E10' now works as documented.
* `g77' no longer truncates `INTEGER(KIND=2)' (usually `INTEGER*8')
subscript expressions when evaluating array references on systems
with pointers widers than `INTEGER(KIND=1)' (such as Alphas).
* `g77' no longer generates bad code for an assignment to a
`COMPLEX' variable or array that partially overlaps one or more of
the sources of the same assignment (a very rare construction). It
now assigns through a temporary, in cases where such partial
overlap is deemed possible.
* `libg2c' (`libf2c') no longer loses track of the file being worked
on during a `BACKSPACE' operation.
* `libg2c' (`libf2c') fixes a bug whereby input to a `NAMELIST' read
involving a repeat count, such as `K(5)=10*3', was not properly
handled by `libf2c'. The first item was written to `K(5)', but
the remaining nine were written elsewhere (still within the array),
not necessarily starting at `K(6)'.
* Automatic arrays now seem to be working on HP-UX systems.
* The `Date' intrinsic now returns the correct result on big-endian
systems.
* Fix `g77' so it no longer crashes when compiling I/O statements
using keywords that define `INTEGER' values, such as `IOSTAT=J',
where J is other than default `INTEGER' (such as `INTEGER*2').
Instead, it issues a diagnostic.
* Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
not default `INTEGER', such as `INTEGER*2', instead of producing a
spurious diagnostic. Also fix `DATA (A(I),I=1,N)', where `N' is
not default `INTEGER' to work instead of crashing `g77'.
* The `-ax' option is now obeyed when compiling Fortran programs.
(It is passed to the `f771' driver.)
* The new `-fbounds-check' option causes `g77' to compile run-time
bounds checks of array subscripts, as well as of substring start
and end points.
* `libg2c' now supports building as multilibbed library, which
provides better support for systems that require options such as
`-mieee' to work properly.
* Source file names with the suffixes `.FOR' and `.FPP' now are
recognized by `g77' as if they ended in `.for' and `.fpp',
respectively.
* The order of arguments to the _subroutine_ forms of the `CTime',
`DTime', `ETime', and `TtyNam' intrinsics has been swapped. The
argument serving as the returned value for the corresponding
function forms now is the _second_ argument, making these
consistent with the other subroutine forms of `libU77' intrinsics.
* `g77' now warns about a reference to an intrinsic that has an
interface that is not Year 2000 (Y2K) compliant. Also, `libg2c'
has been changed to increase the likelihood of catching references
to the implementations of these intrinsics using the `EXTERNAL'
mechanism (which would avoid the new warnings).
* `g77' now warns about a reference to a function when the
corresponding _subsequent_ function program unit disagrees with
the reference concerning the type of the function.
* `-fno-emulate-complex' is now the default option. This should
result in improved performance of code that uses the `COMPLEX'
data type.
* The `-malign-double' option now reliably aligns _all_
double-precision variables and arrays on Intel x86 targets.
* Even without the `-malign-double' option, `g77' reliably aligns
local double-precision variables that are not in `EQUIVALENCE'
areas and not `SAVE''d.
* `g77' now open-codes ("inlines") division of `COMPLEX' operands
instead of generating a run-time call to the `libf2c' routines
`c_div' or `z_div', unless the `-Os' option is specified.
* `g77' no longer generates code to maintain `errno', a C-language
concept, when performing operations such as the `SqRt' intrinsic.
* `g77' developers can temporarily use the `-fflatten-arrays' option
to compare how the compiler handles code generation using C-like
constructs as compared to the Fortran-like method constructs
normally used.
* A substantial portion of the `g77' front end's code-generation
component was rewritten. It now generates code using facilities
more robustly supported by the `gcc' back end. One effect of this
rewrite is that some codes no longer produce a spurious "label LAB
used before containing binding contour" message.
* Support for the `-fugly' option has been removed.
* Improve documentation and indexing, including information on Year
2000 (Y2K) compliance, and providing more information on internals
of the front end.
* Upgrade to `libf2c' as of 1999-05-10.
In 0.5.24 versus 0.5.23:
========================
There is no `g77' version 0.5.24 at this time, or planned. 0.5.24
is the version number designated for bug fixes and, perhaps, some new
features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as
0.5.24 was planned to require.
Due to `EGCS' becoming `GCC' (which is now an acronym for "GNU
Compiler Collection"), and `EGCS' 1.2 becoming officially designated
`GCC' 2.95, there seems to be no need for an actual 0.5.24 release.
To reduce the confusion already resulting from use of 0.5.24 to
designate `g77' versions within `EGCS' versions 1.0 and 1.1, as well as
in versions of `g77' documentation and notices during that period,
"mainline" `g77' version numbering resumes at 0.5.25 with `GCC' 2.95
(`EGCS' 1.2), skipping over 0.5.24 as a placeholder version number.
To repeat, there is no `g77' 0.5.24, but there is now a 0.5.25.
Please remain calm and return to your keypunch units.
In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
====================================
* Fix the `IDate' intrinsic (VXT) (in `libg2c') so the returned year
is in the documented, non-Y2K-compliant range of 0-99, instead of
being returned as 100 in the year 2000.
* Fix the `Date_and_Time' intrinsic (in `libg2c') to return the
milliseconds value properly in VALUES(8).
* Fix the `LStat' intrinsic (in `libg2c') to return device-ID
information properly in SARRAY(7).
* Improve documentation.
In `EGCS' 1.1.1 versus `EGCS' 1.1:
==================================
* Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
appropriate) whenever a `REWIND' is done.
(This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
version of `libf2c'.)
* Fix `libg2c' so it no longer crashes with a spurious diagnostic
upon doing any I/O following a direct formatted write.
(This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
version of `libf2c'.)
* Fix `g77' so it no longer crashes compiling references to the
`Rand' intrinsic on some systems.
* Fix `g77' portion of installation process so it works better on
some systems (those with shells requiring `else true' clauses on
`if' constructs for the completion code to be set properly).
In `EGCS' 1.1 versus `EGCS' 1.0.3:
==================================
* Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
beyond the end of its `CHARACTER' argument, and in the `libU77'
intrinsics `GMTime' and `LTime' that overwrote their arguments.
* Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
longer elicit spurious diagnostics from `g77', even on systems
with pointers having different sizes than integers.
This bug is not known to have existed in any recent version of
`gcc'. It was introduced in an early release of `egcs'.
* Valid combinations of `EXTERNAL', passing that external as a dummy
argument without explicitly giving it a type, and, in a subsequent
program unit, referencing that external as an external function
with a different type no longer crash `g77'.
* `CASE DEFAULT' no longer crashes `g77'.
* The `-Wunused' option no longer issues a spurious warning about
the "master" procedure generated by `g77' for procedures
containing `ENTRY' statements.
* Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
`INTEGER' expression.
* Fix `g77' `-g' option so procedures that use `ENTRY' can be
stepped through, line by line, in `gdb'.
* Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
* Use `tempnam', if available, to open scratch files (as in
`OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
variable, if present, is used.
* `g77''s version of `libf2c' separates out the setting of global
state (such as command-line arguments and signal handling) from
`main.o' into distinct, new library archive members.
This should make it easier to write portable applications that
have their own (non-Fortran) `main()' routine properly set up the
`libf2c' environment, even when `libf2c' (now `libg2c') is a
shared library.
* `g77' no longer installs the `f77' command and `f77.1' man page in
the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
file exists in the source or build directory. See the
installation documentation for more information.
* `g77' no longer installs the `libf2c.a' library and `f2c.h'
include file in the `/usr' or `/usr/local' heirarchy, even if the
`f2c-install-ok' or `f2c-exists-ok' files exist in the source or
build directory. See the installation documentation for more
information.
* The `libf2c.a' library produced by `g77' has been renamed to
`libg2c.a'. It is installed only in the `gcc' "private" directory
heirarchy, `gcc-lib'. This allows system administrators and users
to choose which version of the `libf2c' library from `netlib' they
wish to use on a case-by-case basis. See the installation
documentation for more information.
* The `f2c.h' include (header) file produced by `g77' has been
renamed to `g2c.h'. It is installed only in the `gcc' "private"
directory heirarchy, `gcc-lib'. This allows system administrators
and users to choose which version of the include file from
`netlib' they wish to use on a case-by-case basis. See the
installation documentation for more information.
* The `g77' command now expects the run-time library to be named
`libg2c.a' instead of `libf2c.a', to ensure that a version other
than the one built and installed as part of the same `g77' version
is picked up.
* During the configuration and build process, `g77' creates
subdirectories it needs only as it needs them. Other cleaning up
of the configuration and build process has been performed as well.
* `install-info' now used to update the directory of Info
documentation to contain an entry for `g77' (during installation).
* Some diagnostics have been changed from warnings to errors, to
prevent inadvertent use of the resulting, probably buggy, programs.
These mostly include diagnostics about use of unsupported features
in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
about truncations of various sorts of constants.
* Improve compilation of `FORMAT' expressions so that a null byte is
appended to the last operand if it is a constant. This provides a
cleaner run-time diagnostic as provided by `libf2c' for statements
like `PRINT '(I1', 42'.
* Improve documentation and indexing.
* The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
problems, including those involving some uses of the `T' format
specifier, and perhaps some build (porting) problems as well.
In `EGCS' 1.1 versus `g77' 0.5.23:
==================================
* Fix a code-generation bug that afflicted Intel x86 targets when
`-O2' was specified compiling, for example, an old version of the
`DNRM2' routine.
The x87 coprocessor stack was being mismanaged in cases involving
assigned `GOTO' and `ASSIGN'.
* `g77' no longer produces incorrect code and initial values for
`EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
ordering of members vis-a-vis their types, require initial padding.
* Fix `g77' crash compiling code containing the construct
`CMPLX(0.)' or similar.
* `g77' no longer crashes when compiling code containing
specification statements such as `INTEGER(KIND=7) PTR'.
* `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
2)'.
* `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
expressions when they are used as arguments in procedure calls.
This change applies only to global (filewide) analysis, making it
consistent with how `g77' actually generates code for these cases.
Previously, `g77' treated these expressions as denoting special
"pointer" arguments for the purposes of filewide analysis.
* Fix `g77' crash (or apparently infinite run-time) when compiling
certain complicated expressions involving `COMPLEX' arithmetic
(especially multiplication).
* Align static double-precision variables and arrays on Intel x86
targets regardless of whether `-malign-double' is specified.
Generally, this affects only local variables and arrays having the
`SAVE' attribute or given initial values via `DATA'.
* The `g77' driver now ensures that `-lg2c' is specified in the link
phase prior to any occurrence of `-lm'. This prevents
accidentally linking to a routine in the SunOS4 `-lm' library when
the generated code wants to link to the one in `libf2c' (`libg2c').
* `g77' emits more debugging information when `-g' is used.
This new information allows, for example, `which __g77_length_a'
to be used in `gdb' to determine the type of the phantom length
argument supplied with `CHARACTER' variables.
This information pertains to internally-generated type, variable,
and other information, not to the longstanding deficiencies
vis-a-vis `COMMON' and `EQUIVALENCE'.
* The F90 `Date_and_Time' intrinsic now is supported.
* The F90 `System_Clock' intrinsic allows the optional arguments
(except for the `Count' argument) to be omitted.
* Upgrade to `libf2c' as of 1998-06-18.
* Improve documentation and indexing.
In previous versions:
=====================
Information on previous versions is not provided in this
`gcc/gcc/f/NEWS' file, to keep it short. See `gcc/gcc/f/news.texi', or
any of its other derivations (Info, HTML, dvi forms) for such
information.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment