]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/f/g77.info-16
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / f / g77.info-16
diff --git a/gcc/f/g77.info-16 b/gcc/f/g77.info-16
deleted file mode 100644 (file)
index 0bc79de..0000000
+++ /dev/null
@@ -1,1283 +0,0 @@
-This is g77.info, produced by makeinfo version 4.5 from g77.texi.
-
-INFO-DIR-SECTION Programming
-START-INFO-DIR-ENTRY
-* g77: (g77).                  The GNU Fortran compiler.
-END-INFO-DIR-ENTRY
-   This file documents the use and the internals of the GNU Fortran
-(`g77') compiler.  It corresponds to the GCC-3.2.3 version of `g77'.
-
-   Published by the Free Software Foundation 59 Temple Place - Suite 330
-Boston, MA 02111-1307 USA
-
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Free Software
-Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being "GNU General Public License" and "Funding Free
-Software", the Front-Cover texts being (a) (see below), and with the
-Back-Cover Texts being (b) (see below).  A copy of the license is
-included in the section entitled "GNU Free Documentation License".
-
-   (a) The FSF's Front-Cover Text is:
-
-   A GNU Manual
-
-   (b) The FSF's Back-Cover Text is:
-
-   You have freedom to copy and modify this GNU Manual, like GNU
-software.  Copies published by the Free Software Foundation raise
-funds for GNU development.
-
-   Contributed by James Craig Burley (<craig@jcb-sc.com>).  Inspired by
-a first pass at translating `g77-0.5.16/f/DOC' that was contributed to
-Craig by David Ronis (<ronis@onsager.chem.mcgill.ca>).
-
-\1f
-File: g77.info,  Node: Known Bugs,  Next: Missing Features,  Prev: But-bugs,  Up: Trouble
-
-Known Bugs In GNU Fortran
-=========================
-
-   This section identifies bugs that `g77' _users_ might run into in
-the GCC-3.2.3 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 *Note News
-About GNU Fortran: News.  There, lists of bugs fixed in various
-versions of `g77' can help determine what bugs existed in prior
-versions.
-
-   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/Trouble.html'.
-Follow the "Known Bugs" link.
-
-   The following information was last updated on 2002-02-01:
-
-   * `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.
-
-   * `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.
-
-     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.  A warning message is issued
-     when `g77' sees code that provides initial values (e.g. via
-     `DATA') to an aggregate area (`COMMON' or `EQUIVALENCE', or even a
-     large enough array or `CHARACTER' variable) that is large enough
-     to increase `g77''s compile time by roughly a factor of 10.
-
-     This size currently is quite small, since `g77' currently has a
-     known bug requiring too much memory and time to handle such cases.
-     In `gcc/gcc/f/data.c', the macro `FFEDATA_sizeTOO_BIG_INIT_' is
-     defined to the minimum size for the warning to appear.  The size
-     is specified in storage units, which can be bytes, words, or
-     whatever, on a case-by-case basis.
-
-     After changing this macro definition, you must (of course) rebuild
-     and reinstall `g77' for the change to take effect.
-
-     Note that, as of version 0.5.18, improvements have reduced the
-     scope of the problem for _sparse_ initialization of large arrays,
-     especially those with large, contiguous uninitialized areas.
-     However, the warning is issued at a point prior to when `g77'
-     knows whether the initialization is sparse, and delaying the
-     warning could mean it is produced too late to be helpful.
-
-     Therefore, the macro definition should not be adjusted to reflect
-     sparse cases.  Instead, adjust it to generate the warning when
-     densely initialized arrays begin to cause responses noticeably
-     slower than linear performance would suggest.
-
-   * 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.
-
-   * `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.
-
-\1f
-File: g77.info,  Node: Missing Features,  Next: Disappointments,  Prev: Known Bugs,  Up: Trouble
-
-Missing Features
-================
-
-   This section lists features we know are missing from `g77', and
-which we want to add someday.  (There is no priority implied in the
-ordering below.)
-
-* Menu:
-
-GNU Fortran language:
-* Better Source Model::
-* Fortran 90 Support::
-* Intrinsics in PARAMETER Statements::
-* Arbitrary Concatenation::
-* SELECT CASE on CHARACTER Type::
-* RECURSIVE Keyword::
-* Popular Non-standard Types::
-* Full Support for Compiler Types::
-* Array Bounds Expressions::
-* POINTER Statements::
-* Sensible Non-standard Constructs::
-* READONLY Keyword::
-* FLUSH Statement::
-* Expressions in FORMAT Statements::
-* Explicit Assembler Code::
-* Q Edit Descriptor::
-
-GNU Fortran dialects:
-* Old-style PARAMETER Statements::
-* TYPE and ACCEPT I/O Statements::
-* STRUCTURE UNION RECORD MAP::
-* OPEN CLOSE and INQUIRE Keywords::
-* ENCODE and DECODE::
-* AUTOMATIC Statement::
-* Suppressing Space Padding::
-* Fortran Preprocessor::
-* Bit Operations on Floating-point Data::
-* Really Ugly Character Assignments::
-
-New facilities:
-* POSIX Standard::
-* Floating-point Exception Handling::
-* Nonportable Conversions::
-* Large Automatic Arrays::
-* Support for Threads::
-* Increasing Precision/Range::
-* Enabling Debug Lines::
-
-Better diagnostics:
-* Better Warnings::
-* Gracefully Handle Sensible Bad Code::
-* Non-standard Conversions::
-* Non-standard Intrinsics::
-* Modifying DO Variable::
-* Better Pedantic Compilation::
-* Warn About Implicit Conversions::
-* Invalid Use of Hollerith Constant::
-* Dummy Array Without Dimensioning Dummy::
-* Invalid FORMAT Specifiers::
-* Ambiguous Dialects::
-* Unused Labels::
-* Informational Messages::
-
-Run-time facilities:
-* Uninitialized Variables at Run Time::
-* Portable Unformatted Files::
-* Better List-directed I/O::
-* Default to Console I/O::
-
-Debugging:
-* Labels Visible to Debugger::
-
-\1f
-File: g77.info,  Node: Better Source Model,  Next: Fortran 90 Support,  Up: Missing Features
-
-Better Source Model
--------------------
-
-   `g77' needs to provide, as the default source-line model, a "pure
-visual" mode, where the interpretation of a source program in this mode
-can be accurately determined by a user looking at a traditionally
-displayed rendition of the program (assuming the user knows whether the
-program is fixed or free form).
-
-   The design should assume the user cannot tell tabs from spaces and
-cannot see trailing spaces on lines, but has canonical tab stops and,
-for fixed-form source, has the ability to always know exactly where
-column 72 is (since the Fortran standard itself requires this for
-fixed-form source).
-
-   This would change the default treatment of fixed-form source to not
-treat lines with tabs as if they were infinitely long--instead, they
-would end at column 72 just as if the tabs were replaced by spaces in
-the canonical way.
-
-   As part of this, provide common alternate models (Digital, `f2c',
-and so on) via command-line options.  This includes allowing
-arbitrarily long lines for free-form source as well as fixed-form
-source and providing various limits and diagnostics as appropriate.
-
-   Also, `g77' should offer, perhaps even default to, warnings when
-characters beyond the last valid column are anything other than spaces.
-This would mean code with "sequence numbers" in columns 73 through 80
-would be rejected, and there's a lot of that kind of code around, but
-one of the most frequent bugs encountered by new users is accidentally
-writing fixed-form source code into and beyond column 73.  So, maybe
-the users of old code would be able to more easily handle having to
-specify, say, a `-Wno-col73to80' option.
-
-\1f
-File: g77.info,  Node: Fortran 90 Support,  Next: Intrinsics in PARAMETER Statements,  Prev: Better Source Model,  Up: Missing Features
-
-Fortran 90 Support
-------------------
-
-   `g77' does not support many of the features that distinguish Fortran
-90 (and, now, Fortran 95) from ANSI FORTRAN 77.
-
-   Some Fortran 90 features are supported, because they make sense to
-offer even to die-hard users of F77.  For example, many of them codify
-various ways F77 has been extended to meet users' needs during its
-tenure, so `g77' might as well offer them as the primary way to meet
-those same needs, even if it offers compatibility with one or more of
-the ways those needs were met by other F77 compilers in the industry.
-
-   Still, many important F90 features are not supported, because no
-attempt has been made to research each and every feature and assess its
-viability in `g77'.  In the meantime, users who need those features must
-use Fortran 90 compilers anyway, and the best approach to adding some
-F90 features to GNU Fortran might well be to fund a comprehensive
-project to create GNU Fortran 95.
-
-\1f
-File: g77.info,  Node: Intrinsics in PARAMETER Statements,  Next: Arbitrary Concatenation,  Prev: Fortran 90 Support,  Up: Missing Features
-
-Intrinsics in `PARAMETER' Statements
-------------------------------------
-
-   `g77' doesn't allow intrinsics in `PARAMETER' statements.
-
-   Related to this, `g77' doesn't allow non-integral exponentiation in
-`PARAMETER' statements, such as `PARAMETER (R=2**.25)'.  It is unlikely
-`g77' will ever support this feature, as doing it properly requires
-complete emulation of a target computer's floating-point facilities when
-building `g77' as a cross-compiler.  But, if the `gcc' back end is
-enhanced to provide such a facility, `g77' will likely use that facility
-in implementing this feature soon afterwards.
-
-\1f
-File: g77.info,  Node: Arbitrary Concatenation,  Next: SELECT CASE on CHARACTER Type,  Prev: Intrinsics in PARAMETER Statements,  Up: Missing Features
-
-Arbitrary Concatenation
------------------------
-
-   `g77' doesn't support arbitrary operands for concatenation in
-contexts where run-time allocation is required.  For example:
-
-     SUBROUTINE X(A)
-     CHARACTER*(*) A
-     CALL FOO(A // 'suffix')
-
-\1f
-File: g77.info,  Node: SELECT CASE on CHARACTER Type,  Next: RECURSIVE Keyword,  Prev: Arbitrary Concatenation,  Up: Missing Features
-
-`SELECT CASE' on `CHARACTER' Type
----------------------------------
-
-   Character-type selector/cases for `SELECT CASE' currently are not
-supported.
-
-\1f
-File: g77.info,  Node: RECURSIVE Keyword,  Next: Popular Non-standard Types,  Prev: SELECT CASE on CHARACTER Type,  Up: Missing Features
-
-`RECURSIVE' Keyword
--------------------
-
-   `g77' doesn't support the `RECURSIVE' keyword that F90 compilers do.
-Nor does it provide any means for compiling procedures designed to do
-recursion.
-
-   All recursive code can be rewritten to not use recursion, but the
-result is not pretty.
-
-\1f
-File: g77.info,  Node: Increasing Precision/Range,  Next: Enabling Debug Lines,  Prev: Support for Threads,  Up: Missing Features
-
-Increasing Precision/Range
---------------------------
-
-   Some compilers, such as `f2c', have an option (`-r8', `-qrealsize=8'
-or similar) that provides automatic treatment of `REAL' entities such
-that they have twice the storage size, and a corresponding increase in
-the range and precision, of what would normally be the `REAL(KIND=1)'
-(default `REAL') type.  (This affects `COMPLEX' the same way.)
-
-   They also typically offer another option (`-i8') to increase
-`INTEGER' entities so they are twice as large (with roughly twice as
-much range).
-
-   (There are potential pitfalls in using these options.)
-
-   `g77' does not yet offer any option that performs these kinds of
-transformations.  Part of the problem is the lack of detailed
-specifications regarding exactly how these options affect the
-interpretation of constants, intrinsics, and so on.
-
-   Until `g77' addresses this need, programmers could improve the
-portability of their code by modifying it to not require compile-time
-options to produce correct results.  Some free tools are available
-which may help, specifically in Toolpack (which one would expect to be
-sound) and the `fortran' section of the Netlib repository.
-
-   Use of preprocessors can provide a fairly portable means to work
-around the lack of widely portable methods in the Fortran language
-itself (though increasing acceptance of Fortran 90 would alleviate this
-problem).
-
-\1f
-File: g77.info,  Node: Popular Non-standard Types,  Next: Full Support for Compiler Types,  Prev: RECURSIVE Keyword,  Up: Missing Features
-
-Popular Non-standard Types
---------------------------
-
-   `g77' doesn't fully support `INTEGER*2', `LOGICAL*1', and similar.
-In the meantime, version 0.5.18 provides rudimentary support for them.
-
-\1f
-File: g77.info,  Node: Full Support for Compiler Types,  Next: Array Bounds Expressions,  Prev: Popular Non-standard Types,  Up: Missing Features
-
-Full Support for Compiler Types
--------------------------------
-
-   `g77' doesn't support `INTEGER', `REAL', and `COMPLEX' equivalents
-for _all_ applicable back-end-supported types (`char', `short int',
-`int', `long int', `long long int', and `long double').  This means
-providing intrinsic support, and maybe constant support (using F90
-syntax) as well, and, for most machines will result in automatic
-support of `INTEGER*1', `INTEGER*2', `INTEGER*8', maybe even `REAL*16',
-and so on.
-
-\1f
-File: g77.info,  Node: Array Bounds Expressions,  Next: POINTER Statements,  Prev: Full Support for Compiler Types,  Up: Missing Features
-
-Array Bounds Expressions
-------------------------
-
-   `g77' doesn't support more general expressions to dimension arrays,
-such as array element references, function references, etc.
-
-   For example, `g77' currently does not accept the following:
-
-     SUBROUTINE X(M, N)
-     INTEGER N(10), M(N(2), N(1))
-
-\1f
-File: g77.info,  Node: POINTER Statements,  Next: Sensible Non-standard Constructs,  Prev: Array Bounds Expressions,  Up: Missing Features
-
-POINTER Statements
-------------------
-
-   `g77' doesn't support pointers or allocatable objects (other than
-automatic arrays).  This set of features is probably considered just
-behind intrinsics in `PARAMETER' statements on the list of large,
-important things to add to `g77'.
-
-   In the meantime, consider using the `INTEGER(KIND=7)' declaration to
-specify that a variable must be able to hold a pointer.  This construct
-is not portable to other non-GNU compilers, but it is portable to all
-machines GNU Fortran supports when `g77' is used.
-
-   *Note Functions and Subroutines::, for information on `%VAL()',
-`%REF()', and `%DESCR()' constructs, which are useful for passing
-pointers to procedures written in languages other than Fortran.
-
-\1f
-File: g77.info,  Node: Sensible Non-standard Constructs,  Next: READONLY Keyword,  Prev: POINTER Statements,  Up: Missing Features
-
-Sensible Non-standard Constructs
---------------------------------
-
-   `g77' rejects things other compilers accept, like `INTRINSIC
-SQRT,SQRT'.  As time permits in the future, some of these things that
-are easy for humans to read and write and unlikely to be intended to
-mean something else will be accepted by `g77' (though `-fpedantic'
-should trigger warnings about such non-standard constructs).
-
-   Until `g77' no longer gratuitously rejects sensible code, you might
-as well fix your code to be more standard-conforming and portable.
-
-   The kind of case that is important to except from the recommendation
-to change your code is one where following good coding rules would
-force you to write non-standard code that nevertheless has a clear
-meaning.
-
-   For example, when writing an `INCLUDE' file that defines a common
-block, it might be appropriate to include a `SAVE' statement for the
-common block (such as `SAVE /CBLOCK/'), so that variables defined in
-the common block retain their values even when all procedures declaring
-the common block become inactive (return to their callers).
-
-   However, putting `SAVE' statements in an `INCLUDE' file would
-prevent otherwise standard-conforming code from also specifying the
-`SAVE' statement, by itself, to indicate that all local variables and
-arrays are to have the `SAVE' attribute.
-
-   For this reason, `g77' already has been changed to allow this
-combination, because although the general problem of gratuitously
-rejecting unambiguous and "safe" constructs still exists in `g77', this
-particular construct was deemed useful enough that it was worth fixing
-`g77' for just this case.
-
-   So, while there is no need to change your code to avoid using this
-particular construct, there might be other, equally appropriate but
-non-standard constructs, that you shouldn't have to stop using just
-because `g77' (or any other compiler) gratuitously rejects it.
-
-   Until the general problem is solved, if you have any such construct
-you believe is worthwhile using (e.g. not just an arbitrary, redundant
-specification of an attribute), please submit a bug report with an
-explanation, so we can consider fixing `g77' just for cases like yours.
-
-\1f
-File: g77.info,  Node: READONLY Keyword,  Next: FLUSH Statement,  Prev: Sensible Non-standard Constructs,  Up: Missing Features
-
-`READONLY' Keyword
-------------------
-
-   Support for `READONLY', in `OPEN' statements, requires `libg2c'
-support, to make sure that `CLOSE(...,STATUS='DELETE')' does not delete
-a file opened on a unit with the `READONLY' keyword, and perhaps to
-trigger a fatal diagnostic if a `WRITE' or `PRINT' to such a unit is
-attempted.
-
-   _Note:_ It is not sufficient for `g77' and `libg2c' (its version of
-`libf2c') to assume that `READONLY' does not need some kind of explicit
-support at run time, due to UNIX systems not (generally) needing it.
-`g77' is not just a UNIX-based compiler!
-
-   Further, mounting of non-UNIX filesystems on UNIX systems (such as
-via NFS) might require proper `READONLY' support.
-
-   (Similar issues might be involved with supporting the `SHARED'
-keyword.)
-
-\1f
-File: g77.info,  Node: FLUSH Statement,  Next: Expressions in FORMAT Statements,  Prev: READONLY Keyword,  Up: Missing Features
-
-`FLUSH' Statement
------------------
-
-   `g77' could perhaps use a `FLUSH' statement that does what `CALL
-FLUSH' does, but that supports `*' as the unit designator (same unit as
-for `PRINT') and accepts `ERR=' and/or `IOSTAT=' specifiers.
-
-\1f
-File: g77.info,  Node: Expressions in FORMAT Statements,  Next: Explicit Assembler Code,  Prev: FLUSH Statement,  Up: Missing Features
-
-Expressions in `FORMAT' Statements
-----------------------------------
-
-   `g77' doesn't support `FORMAT(I<J>)' and the like.  Supporting this
-requires a significant redesign or replacement of `libg2c'.
-
-   However, `g77' does support this construct when the expression is
-constant (as of version 0.5.22).  For example:
-
-           PARAMETER (IWIDTH = 12)
-     10    FORMAT (I<IWIDTH>)
-
-   Otherwise, at least for output (`PRINT' and `WRITE'), Fortran code
-making use of this feature can be rewritten to avoid it by constructing
-the `FORMAT' string in a `CHARACTER' variable or array, then using that
-variable or array in place of the `FORMAT' statement label to do the
-original `PRINT' or `WRITE'.
-
-   Many uses of this feature on input can be rewritten this way as
-well, but not all can.  For example, this can be rewritten:
-
-           READ 20, I
-     20    FORMAT (I<J>)
-
-   However, this cannot, in general, be rewritten, especially when
-`ERR=' and `END=' constructs are employed:
-
-           READ 30, J, I
-     30    FORMAT (I<J>)
-
-\1f
-File: g77.info,  Node: Explicit Assembler Code,  Next: Q Edit Descriptor,  Prev: Expressions in FORMAT Statements,  Up: Missing Features
-
-Explicit Assembler Code
------------------------
-
-   `g77' needs to provide some way, a la `gcc', for `g77' code to
-specify explicit assembler code.
-
-\1f
-File: g77.info,  Node: Q Edit Descriptor,  Next: Old-style PARAMETER Statements,  Prev: Explicit Assembler Code,  Up: Missing Features
-
-Q Edit Descriptor
------------------
-
-   The `Q' edit descriptor in `FORMAT's isn't supported.  (This is
-meant to get the number of characters remaining in an input record.)
-Supporting this requires a significant redesign or replacement of
-`libg2c'.
-
-   A workaround might be using internal I/O or the stream-based
-intrinsics.  *Note FGetC Intrinsic (subroutine)::.
-
-\1f
-File: g77.info,  Node: Old-style PARAMETER Statements,  Next: TYPE and ACCEPT I/O Statements,  Prev: Q Edit Descriptor,  Up: Missing Features
-
-Old-style PARAMETER Statements
-------------------------------
-
-   `g77' doesn't accept `PARAMETER I=1'.  Supporting this obsolete form
-of the `PARAMETER' statement would not be particularly hard, as most of
-the parsing code is already in place and working.
-
-   Until time/money is spent implementing it, you might as well fix
-your code to use the standard form, `PARAMETER (I=1)' (possibly needing
-`INTEGER I' preceding the `PARAMETER' statement as well, otherwise, in
-the obsolete form of `PARAMETER', the type of the variable is set from
-the type of the constant being assigned to it).
-
-\1f
-File: g77.info,  Node: TYPE and ACCEPT I/O Statements,  Next: STRUCTURE UNION RECORD MAP,  Prev: Old-style PARAMETER Statements,  Up: Missing Features
-
-`TYPE' and `ACCEPT' I/O Statements
-----------------------------------
-
-   `g77' doesn't support the I/O statements `TYPE' and `ACCEPT'.  These
-are common extensions that should be easy to support, but also are
-fairly easy to work around in user code.
-
-   Generally, any `TYPE fmt,list' I/O statement can be replaced by
-`PRINT fmt,list'.  And, any `ACCEPT fmt,list' statement can be replaced
-by `READ fmt,list'.
-
-\1f
-File: g77.info,  Node: STRUCTURE UNION RECORD MAP,  Next: OPEN CLOSE and INQUIRE Keywords,  Prev: TYPE and ACCEPT I/O Statements,  Up: Missing Features
-
-`STRUCTURE', `UNION', `RECORD', `MAP'
--------------------------------------
-
-   `g77' doesn't support `STRUCTURE', `UNION', `RECORD', `MAP'.  This
-set of extensions is quite a bit lower on the list of large, important
-things to add to `g77', partly because it requires a great deal of work
-either upgrading or replacing `libg2c'.
-
-\1f
-File: g77.info,  Node: OPEN CLOSE and INQUIRE Keywords,  Next: ENCODE and DECODE,  Prev: STRUCTURE UNION RECORD MAP,  Up: Missing Features
-
-`OPEN', `CLOSE', and `INQUIRE' Keywords
----------------------------------------
-
-   `g77' doesn't have support for keywords such as `DISP='DELETE'' in
-the `OPEN', `CLOSE', and `INQUIRE' statements.  These extensions are
-easy to add to `g77' itself, but require much more work on `libg2c'.
-
-   `g77' doesn't support `FORM='PRINT'' or an equivalent to translate
-the traditional `carriage control' characters in column 1 of output to
-use backspaces, carriage returns and the like.  However programs exist
-to translate them in output files (or standard output).  These are
-typically called either `fpr' or `asa'.  You can get a version of `asa'
-from `ftp://sunsite.unc.edu/pub/Linux/devel/lang/fortran' for GNU
-systems which will probably build easily on other systems.
-Alternatively, `fpr' is in BSD distributions in various archive sites.
-
-\1f
-File: g77.info,  Node: ENCODE and DECODE,  Next: AUTOMATIC Statement,  Prev: OPEN CLOSE and INQUIRE Keywords,  Up: Missing Features
-
-`ENCODE' and `DECODE'
----------------------
-
-   `g77' doesn't support `ENCODE' or `DECODE'.
-
-   These statements are best replaced by READ and WRITE statements
-involving internal files (CHARACTER variables and arrays).
-
-   For example, replace a code fragment like
-
-           INTEGER*1 LINE(80)
-     ...
-           DECODE (80, 9000, LINE) A, B, C
-     ...
-     9000  FORMAT (1X, 3(F10.5))
-
-with:
-
-           CHARACTER*80 LINE
-     ...
-           READ (UNIT=LINE, FMT=9000) A, B, C
-     ...
-     9000  FORMAT (1X, 3(F10.5))
-
-   Similarly, replace a code fragment like
-
-           INTEGER*1 LINE(80)
-     ...
-           ENCODE (80, 9000, LINE) A, B, C
-     ...
-     9000  FORMAT (1X, 'OUTPUT IS ', 3(F10.5))
-
-with:
-
-           CHARACTER*80 LINE
-     ...
-           WRITE (UNIT=LINE, FMT=9000) A, B, C
-     ...
-     9000  FORMAT (1X, 'OUTPUT IS ', 3(F10.5))
-
-   It is entirely possible that `ENCODE' and `DECODE' will be supported
-by a future version of `g77'.
-
-\1f
-File: g77.info,  Node: AUTOMATIC Statement,  Next: Suppressing Space Padding,  Prev: ENCODE and DECODE,  Up: Missing Features
-
-`AUTOMATIC' Statement
----------------------
-
-   `g77' doesn't support the `AUTOMATIC' statement that `f2c' does.
-
-   `AUTOMATIC' would identify a variable or array as not being
-`SAVE''d, which is normally the default, but which would be especially
-useful for code that, _generally_, needed to be compiled with the
-`-fno-automatic' option.
-
-   `AUTOMATIC' also would serve as a hint to the compiler that placing
-the variable or array--even a very large array-on the stack is
-acceptable.
-
-   `AUTOMATIC' would not, by itself, designate the containing procedure
-as recursive.
-
-   `AUTOMATIC' should work syntactically like `SAVE', in that
-`AUTOMATIC' with no variables listed should apply to all pertinent
-variables and arrays (which would not include common blocks or their
-members).
-
-   Variables and arrays denoted as `AUTOMATIC' would not be permitted
-to be initialized via `DATA' or other specification of any initial
-values, requiring explicit initialization, such as via assignment
-statements.
-
-   Perhaps `UNSAVE' and `STATIC', as strict semantic opposites to
-`SAVE' and `AUTOMATIC', should be provided as well.
-
-\1f
-File: g77.info,  Node: Suppressing Space Padding,  Next: Fortran Preprocessor,  Prev: AUTOMATIC Statement,  Up: Missing Features
-
-Suppressing Space Padding of Source Lines
------------------------------------------
-
-   `g77' should offer VXT-Fortran-style suppression of virtual spaces
-at the end of a source line if an appropriate command-line option is
-specified.
-
-   This affects cases where a character constant is continued onto the
-next line in a fixed-form source file, as in the following example:
-
-     10    PRINT *,'HOW MANY
-          1 SPACES?'
-
-`g77', and many other compilers, virtually extend the continued line
-through column 72 with spaces that become part of the character
-constant, but Digital Fortran normally didn't, leaving only one space
-between `MANY' and `SPACES?' in the output of the above statement.
-
-   Fairly recently, at least one version of Digital Fortran was
-enhanced to provide the other behavior when a command-line option is
-specified, apparently due to demand from readers of the USENET group
-`comp.lang.fortran' to offer conformance to this widespread practice in
-the industry.  `g77' should return the favor by offering conformance to
-Digital's approach to handling the above example.
-
-\1f
-File: g77.info,  Node: Fortran Preprocessor,  Next: Bit Operations on Floating-point Data,  Prev: Suppressing Space Padding,  Up: Missing Features
-
-Fortran Preprocessor
---------------------
-
-   `g77' should offer a preprocessor designed specifically for Fortran
-to replace `cpp -traditional'.  There are several out there worth
-evaluating, at least.
-
-   Such a preprocessor would recognize Hollerith constants, properly
-parse comments and character constants, and so on.  It might also
-recognize, process, and thus preprocess files included via the
-`INCLUDE' directive.
-
-\1f
-File: g77.info,  Node: Bit Operations on Floating-point Data,  Next: Really Ugly Character Assignments,  Prev: Fortran Preprocessor,  Up: Missing Features
-
-Bit Operations on Floating-point Data
--------------------------------------
-
-   `g77' does not allow `REAL' and other non-integral types for
-arguments to intrinsics like `And', `Or', and `Shift'.
-
-   For example, this program is rejected by `g77', because the
-intrinsic `Iand' does not accept `REAL' arguments:
-
-     DATA A/7.54/, B/9.112/
-     PRINT *, IAND(A, B)
-     END
-
-\1f
-File: g77.info,  Node: Really Ugly Character Assignments,  Next: POSIX Standard,  Prev: Bit Operations on Floating-point Data,  Up: Missing Features
-
-Really Ugly Character Assignments
----------------------------------
-
-   An option such as `-fugly-char' should be provided to allow
-
-     REAL*8 A1
-     DATA A1 / '12345678' /
-
-   and:
-
-     REAL*8 A1
-     A1 = 'ABCDEFGH'
-
-\1f
-File: g77.info,  Node: POSIX Standard,  Next: Floating-point Exception Handling,  Prev: Really Ugly Character Assignments,  Up: Missing Features
-
-`POSIX' Standard
-----------------
-
-   `g77' should support the POSIX standard for Fortran.
-
-\1f
-File: g77.info,  Node: Floating-point Exception Handling,  Next: Nonportable Conversions,  Prev: POSIX Standard,  Up: Missing Features
-
-Floating-point Exception Handling
----------------------------------
-
-   The `gcc' backend and, consequently, `g77', currently provides no
-general control over whether or not floating-point exceptions are
-trapped or ignored.  (Ignoring them typically results in NaN values
-being propagated in systems that conform to IEEE 754.)  The behaviour
-is normally inherited from the system-dependent startup code, though
-some targets, such as the Alpha, have code generation options which
-change the behaviour.
-
-   Most systems provide some C-callable mechanism to change this; this
-can be invoked at startup using `gcc''s `constructor' attribute.  For
-example, just compiling and linking the following C code with your
-program will turn on exception trapping for the "common" exceptions on
-a GNU system using glibc 2.2 or newer:
-
-     #define _GNU_SOURCE 1
-     #include <fenv.h>
-     static void __attribute__ ((constructor))
-     trapfpe ()
-     {
-       /* Enable some exceptions.  At startup all exceptions are masked.  */
-     
-       feenableexcept (FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW);
-     }
-
-   A convenient trick is to compile this something like:
-     gcc -o libtrapfpe.a trapfpe.c
-   and then use it by adding `-trapfpe' to the `g77' command line when
-linking.
-
-\1f
-File: g77.info,  Node: Nonportable Conversions,  Next: Large Automatic Arrays,  Prev: Floating-point Exception Handling,  Up: Missing Features
-
-Nonportable Conversions
------------------------
-
-   `g77' doesn't accept some particularly nonportable, silent data-type
-conversions such as `LOGICAL' to `REAL' (as in `A=.FALSE.', where `A'
-is type `REAL'), that other compilers might quietly accept.
-
-   Some of these conversions are accepted by `g77' when the
-`-fugly-logint' option is specified.  Perhaps it should accept more or
-all of them.
-
-\1f
-File: g77.info,  Node: Large Automatic Arrays,  Next: Support for Threads,  Prev: Nonportable Conversions,  Up: Missing Features
-
-Large Automatic Arrays
-----------------------
-
-   Currently, automatic arrays always are allocated on the stack.  For
-situations where the stack cannot be made large enough, `g77' should
-offer a compiler option that specifies allocation of automatic arrays
-in heap storage.
-
-\1f
-File: g77.info,  Node: Support for Threads,  Next: Increasing Precision/Range,  Prev: Large Automatic Arrays,  Up: Missing Features
-
-Support for Threads
--------------------
-
-   Neither the code produced by `g77' nor the `libg2c' library are
-thread-safe, nor does `g77' have support for parallel processing (other
-than the instruction-level parallelism available on some processors).
-A package such as PVM might help here.
-
-\1f
-File: g77.info,  Node: Enabling Debug Lines,  Next: Better Warnings,  Prev: Increasing Precision/Range,  Up: Missing Features
-
-Enabling Debug Lines
---------------------
-
-   An option such as `-fdebug-lines' should be provided to turn
-fixed-form lines beginning with `D' to be treated as if they began with
-a space, instead of as if they began with a `C' (as comment lines).
-
-\1f
-File: g77.info,  Node: Better Warnings,  Next: Gracefully Handle Sensible Bad Code,  Prev: Enabling Debug Lines,  Up: Missing Features
-
-Better Warnings
----------------
-
-   Because of how `g77' generates code via the back end, it doesn't
-always provide warnings the user wants.  Consider:
-
-     PROGRAM X
-     PRINT *, A
-     END
-
-   Currently, the above is not flagged as a case of using an
-uninitialized variable, because `g77' generates a run-time library call
-that looks, to the GBE, like it might actually _modify_ `A' at run time.
-(And, in fact, depending on the previous run-time library call, it
-would!)
-
-   Fixing this requires one of the following:
-
-   * Switch to new library, `libg77', that provides a more "clean"
-     interface, vis-a-vis input, output, and modified arguments, so the
-     GBE can tell what's going on.
-
-     This would provide a pretty big performance improvement, at least
-     theoretically, and, ultimately, in practice, for some types of
-     code.
-
-   * Have `g77' pass a pointer to a temporary containing a copy of `A',
-     instead of to `A' itself.  The GBE would then complain about the
-     copy operation involving a potentially uninitialized variable.
-
-     This might also provide a performance boost for some code, because
-     `A' might then end up living in a register, which could help with
-     inner loops.
-
-   * Have `g77' use a GBE construct similar to `ADDR_EXPR' but with
-     extra information on the fact that the item pointed to won't be
-     modified (a la `const' in C).
-
-     Probably the best solution for now, but not quite trivial to
-     implement in the general case.
-
-\1f
-File: g77.info,  Node: Gracefully Handle Sensible Bad Code,  Next: Non-standard Conversions,  Prev: Better Warnings,  Up: Missing Features
-
-Gracefully Handle Sensible Bad Code
------------------------------------
-
-   `g77' generally should continue processing for warnings and
-recoverable (user) errors whenever possible--that is, it shouldn't
-gratuitously make bad or useless code.
-
-   For example:
-
-     INTRINSIC ZABS
-     CALL FOO(ZABS)
-     END
-
-When compiling the above with `-ff2c-intrinsics-disable', `g77' should
-indeed complain about passing `ZABS', but it still should compile,
-instead of rejecting the entire `CALL' statement.  (Some of this is
-related to improving the compiler internals to improve how statements
-are analyzed.)
-
-\1f
-File: g77.info,  Node: Non-standard Conversions,  Next: Non-standard Intrinsics,  Prev: Gracefully Handle Sensible Bad Code,  Up: Missing Features
-
-Non-standard Conversions
-------------------------
-
-   `-Wconversion' and related should flag places where non-standard
-conversions are found.  Perhaps much of this would be part of `-Wugly*'.
-
-\1f
-File: g77.info,  Node: Non-standard Intrinsics,  Next: Modifying DO Variable,  Prev: Non-standard Conversions,  Up: Missing Features
-
-Non-standard Intrinsics
------------------------
-
-   `g77' needs a new option, like `-Wintrinsics', to warn about use of
-non-standard intrinsics without explicit `INTRINSIC' statements for
-them.  This would help find code that might fail silently when ported
-to another compiler.
-
-\1f
-File: g77.info,  Node: Modifying DO Variable,  Next: Better Pedantic Compilation,  Prev: Non-standard Intrinsics,  Up: Missing Features
-
-Modifying `DO' Variable
------------------------
-
-   `g77' should warn about modifying `DO' variables via `EQUIVALENCE'.
-(The internal information gathered to produce this warning might also
-be useful in setting the internal "doiter" flag for a variable or even
-array reference within a loop, since that might produce faster code
-someday.)
-
-   For example, this code is invalid, so `g77' should warn about the
-invalid assignment to `NOTHER':
-
-     EQUIVALENCE (I, NOTHER)
-     DO I = 1, 100
-        IF (I.EQ. 10) NOTHER = 20
-     END DO
-
-\1f
-File: g77.info,  Node: Better Pedantic Compilation,  Next: Warn About Implicit Conversions,  Prev: Modifying DO Variable,  Up: Missing Features
-
-Better Pedantic Compilation
----------------------------
-
-   `g77' needs to support `-fpedantic' more thoroughly, and use it only
-to generate warnings instead of rejecting constructs outright.  Have it
-warn: if a variable that dimensions an array is not a dummy or placed
-explicitly in `COMMON' (F77 does not allow it to be placed in `COMMON'
-via `EQUIVALENCE'); if specification statements follow
-statement-function-definition statements; about all sorts of syntactic
-extensions.
-
-\1f
-File: g77.info,  Node: Warn About Implicit Conversions,  Next: Invalid Use of Hollerith Constant,  Prev: Better Pedantic Compilation,  Up: Missing Features
-
-Warn About Implicit Conversions
--------------------------------
-
-   `g77' needs a `-Wpromotions' option to warn if source code appears
-to expect automatic, silent, and somewhat dangerous compiler-assisted
-conversion of `REAL(KIND=1)' constants to `REAL(KIND=2)' based on
-context.
-
-   For example, it would warn about cases like this:
-
-     DOUBLE PRECISION FOO
-     PARAMETER (TZPHI = 9.435784839284958)
-     FOO = TZPHI * 3D0
-
-\1f
-File: g77.info,  Node: Invalid Use of Hollerith Constant,  Next: Dummy Array Without Dimensioning Dummy,  Prev: Warn About Implicit Conversions,  Up: Missing Features
-
-Invalid Use of Hollerith Constant
----------------------------------
-
-   `g77' should disallow statements like `RETURN 2HAB', which are
-invalid in both source forms (unlike `RETURN (2HAB)', which probably
-still makes no sense but at least can be reliably parsed).  Fixed-form
-processing rejects it, but not free-form, except in a way that is a bit
-difficult to understand.
-
-\1f
-File: g77.info,  Node: Dummy Array Without Dimensioning Dummy,  Next: Invalid FORMAT Specifiers,  Prev: Invalid Use of Hollerith Constant,  Up: Missing Features
-
-Dummy Array Without Dimensioning Dummy
---------------------------------------
-
-   `g77' should complain when a list of dummy arguments containing an
-adjustable dummy array does not also contain every variable listed in
-the dimension list of the adjustable array.
-
-   Currently, `g77' does complain about a variable that dimensions an
-array but doesn't appear in any dummy list or `COMMON' area, but this
-needs to be extended to catch cases where it doesn't appear in every
-dummy list that also lists any arrays it dimensions.
-
-   For example, `g77' should warn about the entry point `ALT' below,
-since it includes `ARRAY' but not `ISIZE' in its list of arguments:
-
-     SUBROUTINE PRIMARY(ARRAY, ISIZE)
-     REAL ARRAY(ISIZE)
-     ENTRY ALT(ARRAY)
-
-\1f
-File: g77.info,  Node: Invalid FORMAT Specifiers,  Next: Ambiguous Dialects,  Prev: Dummy Array Without Dimensioning Dummy,  Up: Missing Features
-
-Invalid FORMAT Specifiers
--------------------------
-
-   `g77' should check `FORMAT' specifiers for validity as it does
-`FORMAT' statements.
-
-   For example, a diagnostic would be produced for:
-
-     PRINT 'HI THERE!'  !User meant PRINT *, 'HI THERE!'
-
-\1f
-File: g77.info,  Node: Ambiguous Dialects,  Next: Unused Labels,  Prev: Invalid FORMAT Specifiers,  Up: Missing Features
-
-Ambiguous Dialects
-------------------
-
-   `g77' needs a set of options such as `-Wugly*', `-Wautomatic',
-`-Wvxt', `-Wf90', and so on.  These would warn about places in the
-user's source where ambiguities are found, helpful in resolving
-ambiguities in the program's dialect or dialects.
-
-\1f
-File: g77.info,  Node: Unused Labels,  Next: Informational Messages,  Prev: Ambiguous Dialects,  Up: Missing Features
-
-Unused Labels
--------------
-
-   `g77' should warn about unused labels when `-Wunused' is in effect.
-
-\1f
-File: g77.info,  Node: Informational Messages,  Next: Uninitialized Variables at Run Time,  Prev: Unused Labels,  Up: Missing Features
-
-Informational Messages
-----------------------
-
-   `g77' needs an option to suppress information messages (notes).
-`-w' does this but also suppresses warnings.  The default should be to
-suppress info messages.
-
-   Perhaps info messages should simply be eliminated.
-
-\1f
-File: g77.info,  Node: Uninitialized Variables at Run Time,  Next: Portable Unformatted Files,  Prev: Informational Messages,  Up: Missing Features
-
-Uninitialized Variables at Run Time
------------------------------------
-
-   `g77' needs an option to initialize everything (not otherwise
-explicitly initialized) to "weird" (machine-dependent) values, e.g.
-NaNs, bad (non-`NULL') pointers, and largest-magnitude integers, would
-help track down references to some kinds of uninitialized variables at
-run time.
-
-   Note that use of the options `-O -Wuninitialized' can catch many
-such bugs at compile time.
-
-\1f
-File: g77.info,  Node: Portable Unformatted Files,  Next: Better List-directed I/O,  Prev: Uninitialized Variables at Run Time,  Up: Missing Features
-
-Portable Unformatted Files
---------------------------
-
-   `g77' has no facility for exchanging unformatted files with systems
-using different number formats--even differing only in endianness (byte
-order)--or written by other compilers.  Some compilers provide
-facilities at least for doing byte-swapping during unformatted I/O.
-
-   It is unrealistic to expect to cope with exchanging unformatted files
-with arbitrary other compiler runtimes, but the `g77' runtime should at
-least be able to read files written by `g77' on systems with different
-number formats, particularly if they differ only in byte order.
-
-   In case you do need to write a program to translate to or from `g77'
-(`libf2c') unformatted files, they are written as follows:
-Sequential
-     Unformatted sequential records consist of
-       1. A number giving the length of the record contents;
-
-       2. the length of record contents again (for backspace).
-
-     The record length is of C type `long'; this means that it is 8
-     bytes on 64-bit systems such as Alpha GNU/Linux and 4 bytes on
-     other systems, such as x86 GNU/Linux.  Consequently such files
-     cannot be exchanged between 64-bit and 32-bit systems, even with
-     the same basic number format.
-
-Direct access
-     Unformatted direct access files form a byte stream of length
-     RECORDS*RECL bytes, where RECORDS is the maximum record number
-     (`REC=RECORDS') written and RECL is the record length in bytes
-     specified in the `OPEN' statement (`RECL=RECL').  Data appear in
-     the records as determined by the relevant `WRITE' statement.
-     Dummy records with arbitrary contents appear in the file in place
-     of records which haven't been written.
-
-   Thus for exchanging a sequential or direct access unformatted file
-between big- and little-endian 32-bit systems using IEEE 754 floating
-point it would be sufficient to reverse the bytes in consecutive words
-in the file if, and _only_ if, only `REAL*4', `COMPLEX', `INTEGER*4'
-and/or `LOGICAL*4' data have been written to it by `g77'.
-
-   If necessary, it is possible to do byte-oriented i/o with `g77''s
-`FGETC' and `FPUTC' intrinsics.  Byte-swapping can be done in Fortran
-by equivalencing larger sized variables to an `INTEGER*1' array or a
-set of scalars.
-
-   If you need to exchange binary data between arbitrary system and
-compiler variations, we recommend using a portable binary format with
-Fortran bindings, such as NCSA's HDF (`http://hdf.ncsa.uiuc.edu/') or
-PACT's PDB(1) (`http://www.llnl.gov/def_sci/pact/pact_homepage.html').
-(Unlike, say, CDF or XDR, HDF-like systems write in the native number
-formats and only incur overhead when they are read on a system with a
-different format.)  A future `g77' runtime library should use such
-techniques.
-
-   ---------- Footnotes ----------
-
-   (1) No, not _that_ one.
-
-\1f
-File: g77.info,  Node: Better List-directed I/O,  Next: Default to Console I/O,  Prev: Portable Unformatted Files,  Up: Missing Features
-
-Better List-directed I/O
-------------------------
-
-   Values output using list-directed I/O (`PRINT *, R, D') should be
-written with a field width, precision, and so on appropriate for the
-type (precision) of each value.
-
-   (Currently, no distinction is made between single-precision and
-double-precision values by `libf2c'.)
-
-   It is likely this item will require the `libg77' project to be
-undertaken.
-
-   In the meantime, use of formatted I/O is recommended.  While it
-might be of little consolation, `g77' does support
-`FORMAT(F<WIDTH>.4)', for example, as long as `WIDTH' is defined as a
-named constant (via `PARAMETER').  That at least allows some
-compile-time specification of the precision of a data type, perhaps
-controlled by preprocessing directives.
-
-\1f
-File: g77.info,  Node: Default to Console I/O,  Next: Labels Visible to Debugger,  Prev: Better List-directed I/O,  Up: Missing Features
-
-Default to Console I/O
-----------------------
-
-   The default I/O units, specified by `READ FMT', `READ (UNIT=*)',
-`WRITE (UNIT=*)', and `PRINT FMT', should not be units 5 (input) and 6
-(output), but, rather, unit numbers not normally available for use in
-statements such as `OPEN' and `CLOSE'.
-
-   Changing this would allow a program to connect units 5 and 6 to
-files via `OPEN', but still use `READ (UNIT=*)' and `PRINT' to do I/O
-to the "console".
-
-   This change probably requires the `libg77' project.
-
-\1f
-File: g77.info,  Node: Labels Visible to Debugger,  Prev: Default to Console I/O,  Up: Missing Features
-
-Labels Visible to Debugger
---------------------------
-
-   `g77' should output debugging information for statements labels, for
-use by debuggers that know how to support them.  Same with weirder
-things like construct names.  It is not yet known if any debug formats
-or debuggers support these.
-
-\1f
-File: g77.info,  Node: Disappointments,  Next: Non-bugs,  Prev: Missing Features,  Up: Trouble
-
-Disappointments and Misunderstandings
-=====================================
-
-   These problems are perhaps regrettable, but we don't know any
-practical way around them for now.
-
-* Menu:
-
-* Mangling of Names::                       `SUBROUTINE FOO' is given
-                                              external name `foo_'.
-* Multiple Definitions of External Names::  No doing both `COMMON /FOO/'
-                                              and `SUBROUTINE FOO'.
-* Limitation on Implicit Declarations::     No `IMPLICIT CHARACTER*(*)'.
-
-\1f
-File: g77.info,  Node: Mangling of Names,  Next: Multiple Definitions of External Names,  Up: Disappointments
-
-Mangling of Names in Source Code
---------------------------------
-
-   The current external-interface design, which includes naming of
-external procedures, COMMON blocks, and the library interface, has
-various usability problems, including things like adding underscores
-where not really necessary (and preventing easier inter-language
-operability) and yet not providing complete namespace freedom for user
-C code linked with Fortran apps (due to the naming of functions in the
-library, among other things).
-
-   Project GNU should at least get all this "right" for systems it
-fully controls, such as the Hurd, and provide defaults and options for
-compatibility with existing systems and interoperability with popular
-existing compilers.
-