]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/f/g77.info-13
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / f / g77.info-13
diff --git a/gcc/f/g77.info-13 b/gcc/f/g77.info-13
deleted file mode 100644 (file)
index 12e59fc..0000000
+++ /dev/null
@@ -1,1245 +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: QExtD Intrinsic,  Next: QFloat Intrinsic,  Prev: QExt Intrinsic,  Up: Other Intrinsics
-
-QExtD Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QExtD' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QFloat Intrinsic,  Next: QInt Intrinsic,  Prev: QExtD Intrinsic,  Up: Other Intrinsics
-
-QFloat Intrinsic
-................
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QFloat' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QInt Intrinsic,  Next: QLog Intrinsic,  Prev: QFloat Intrinsic,  Up: Other Intrinsics
-
-QInt Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QInt' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QLog Intrinsic,  Next: QLog10 Intrinsic,  Prev: QInt Intrinsic,  Up: Other Intrinsics
-
-QLog Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QLog' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QLog10 Intrinsic,  Next: QMax1 Intrinsic,  Prev: QLog Intrinsic,  Up: Other Intrinsics
-
-QLog10 Intrinsic
-................
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QLog10' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QMax1 Intrinsic,  Next: QMin1 Intrinsic,  Prev: QLog10 Intrinsic,  Up: Other Intrinsics
-
-QMax1 Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QMax1' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QMin1 Intrinsic,  Next: QMod Intrinsic,  Prev: QMax1 Intrinsic,  Up: Other Intrinsics
-
-QMin1 Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QMin1' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QMod Intrinsic,  Next: QNInt Intrinsic,  Prev: QMin1 Intrinsic,  Up: Other Intrinsics
-
-QMod Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QMod' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QNInt Intrinsic,  Next: QSin Intrinsic,  Prev: QMod Intrinsic,  Up: Other Intrinsics
-
-QNInt Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QNInt' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QSin Intrinsic,  Next: QSinD Intrinsic,  Prev: QNInt Intrinsic,  Up: Other Intrinsics
-
-QSin Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QSin' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QSinD Intrinsic,  Next: QSinH Intrinsic,  Prev: QSin Intrinsic,  Up: Other Intrinsics
-
-QSinD Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QSinD' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QSinH Intrinsic,  Next: QSqRt Intrinsic,  Prev: QSinD Intrinsic,  Up: Other Intrinsics
-
-QSinH Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QSinH' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QSqRt Intrinsic,  Next: QTan Intrinsic,  Prev: QSinH Intrinsic,  Up: Other Intrinsics
-
-QSqRt Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QSqRt' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QTan Intrinsic,  Next: QTanD Intrinsic,  Prev: QSqRt Intrinsic,  Up: Other Intrinsics
-
-QTan Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QTan' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QTanD Intrinsic,  Next: QTanH Intrinsic,  Prev: QTan Intrinsic,  Up: Other Intrinsics
-
-QTanD Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QTanD' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: QTanH Intrinsic,  Next: Rename Intrinsic (function),  Prev: QTanD Intrinsic,  Up: Other Intrinsics
-
-QTanH Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL QTanH' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: Rename Intrinsic (function),  Next: Secnds Intrinsic,  Prev: QTanH Intrinsic,  Up: Other Intrinsics
-
-Rename Intrinsic (function)
-...........................
-
-     Rename(PATH1, PATH2)
-
-Rename: `INTEGER(KIND=1)' function.
-
-PATH1: `CHARACTER'; scalar; INTENT(IN).
-
-PATH2: `CHARACTER'; scalar; INTENT(IN).
-
-Intrinsic groups: `badu77'.
-
-Description:
-
-   Renames the file PATH1 to PATH2.  A null character (`CHAR(0)') marks
-the end of the names in PATH1 and PATH2--otherwise, trailing blanks in
-PATH1 and PATH2 are ignored.  See `rename(2)'.  Returns 0 on success or
-a non-zero error code.
-
-   Due to the side effects performed by this intrinsic, the function
-form is not recommended.
-
-   For information on other intrinsics with the same name: *Note Rename
-Intrinsic (subroutine)::.
-
-\1f
-File: g77.info,  Node: Secnds Intrinsic,  Next: Signal Intrinsic (function),  Prev: Rename Intrinsic (function),  Up: Other Intrinsics
-
-Secnds Intrinsic
-................
-
-     Secnds(T)
-
-Secnds: `REAL(KIND=1)' function.
-
-T: `REAL(KIND=1)'; scalar; INTENT(IN).
-
-Intrinsic groups: `vxt'.
-
-Description:
-
-   Returns the local time in seconds since midnight minus the value T.
-
-   This values returned by this intrinsic become numerically less than
-previous values (they wrap around) during a single run of the compiler
-program, under normal circumstances (such as running through the
-midnight hour).
-
-\1f
-File: g77.info,  Node: Signal Intrinsic (function),  Next: SinD Intrinsic,  Prev: Secnds Intrinsic,  Up: Other Intrinsics
-
-Signal Intrinsic (function)
-...........................
-
-     Signal(NUMBER, HANDLER)
-
-Signal: `INTEGER(KIND=7)' function.
-
-NUMBER: `INTEGER'; scalar; INTENT(IN).
-
-HANDLER: Signal handler (`INTEGER FUNCTION' or `SUBROUTINE') or
-dummy/global `INTEGER(KIND=1)' scalar.
-
-Intrinsic groups: `badu77'.
-
-Description:
-
-   If HANDLER is a an `EXTERNAL' routine, arranges for it to be invoked
-with a single integer argument (of system-dependent length) when signal
-NUMBER occurs.  If HANDLER is an integer, it can be used to turn off
-handling of signal NUMBER or revert to its default action.  See
-`signal(2)'.
-
-   Note that HANDLER will be called using C conventions, so the value
-of its argument in Fortran terms is obtained by applying `%LOC()' (or
-LOC()) to it.
-
-   The value returned by `signal(2)' is returned.
-
-   Due to the side effects performed by this intrinsic, the function
-form is not recommended.
-
-   _Warning:_ If the returned value is stored in an `INTEGER(KIND=1)'
-(default `INTEGER') argument, truncation of the original return value
-occurs on some systems (such as Alphas, which have 64-bit pointers but
-32-bit default integers), with no warning issued by `g77' under normal
-circumstances.
-
-   Therefore, the following code fragment might silently fail on some
-systems:
-
-     INTEGER RTN
-     EXTERNAL MYHNDL
-     RTN = SIGNAL(SIGNUM, MYHNDL)
-     ...
-     ! Restore original handler:
-     RTN = SIGNAL(SIGNUM, RTN)
-
-   The reason for the failure is that `RTN' might not hold all the
-information on the original handler for the signal, thus restoring an
-invalid handler.  This bug could manifest itself as a spurious run-time
-failure at an arbitrary point later during the program's execution, for
-example.
-
-   _Warning:_ Use of the `libf2c' run-time library function `signal_'
-directly (such as via `EXTERNAL SIGNAL') requires use of the `%VAL()'
-construct to pass an `INTEGER' value (such as `SIG_IGN' or `SIG_DFL')
-for the HANDLER argument.
-
-   However, while `RTN = SIGNAL(SIGNUM, %VAL(SIG_IGN))' works when
-`SIGNAL' is treated as an external procedure (and resolves, at link
-time, to `libf2c''s `signal_' routine), this construct is not valid
-when `SIGNAL' is recognized as the intrinsic of that name.
-
-   Therefore, for maximum portability and reliability, code such
-references to the `SIGNAL' facility as follows:
-
-     INTRINSIC SIGNAL
-     ...
-     RTN = SIGNAL(SIGNUM, SIG_IGN)
-
-   `g77' will compile such a call correctly, while other compilers will
-generally either do so as well or reject the `INTRINSIC SIGNAL'
-statement via a diagnostic, allowing you to take appropriate action.
-
-   For information on other intrinsics with the same name: *Note Signal
-Intrinsic (subroutine)::.
-
-\1f
-File: g77.info,  Node: SinD Intrinsic,  Next: SnglQ Intrinsic,  Prev: Signal Intrinsic (function),  Up: Other Intrinsics
-
-SinD Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL SinD' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: SnglQ Intrinsic,  Next: SymLnk Intrinsic (function),  Prev: SinD Intrinsic,  Up: Other Intrinsics
-
-SnglQ Intrinsic
-...............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL SnglQ' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: SymLnk Intrinsic (function),  Next: System Intrinsic (function),  Prev: SnglQ Intrinsic,  Up: Other Intrinsics
-
-SymLnk Intrinsic (function)
-...........................
-
-     SymLnk(PATH1, PATH2)
-
-SymLnk: `INTEGER(KIND=1)' function.
-
-PATH1: `CHARACTER'; scalar; INTENT(IN).
-
-PATH2: `CHARACTER'; scalar; INTENT(IN).
-
-Intrinsic groups: `badu77'.
-
-Description:
-
-   Makes a symbolic link from file PATH1 to PATH2.  A null character
-(`CHAR(0)') marks the end of the names in PATH1 and PATH2--otherwise,
-trailing blanks in PATH1 and PATH2 are ignored.  Returns 0 on success
-or a non-zero error code (`ENOSYS' if the system does not provide
-`symlink(2)').
-
-   Due to the side effects performed by this intrinsic, the function
-form is not recommended.
-
-   For information on other intrinsics with the same name: *Note SymLnk
-Intrinsic (subroutine)::.
-
-\1f
-File: g77.info,  Node: System Intrinsic (function),  Next: TanD Intrinsic,  Prev: SymLnk Intrinsic (function),  Up: Other Intrinsics
-
-System Intrinsic (function)
-...........................
-
-     System(COMMAND)
-
-System: `INTEGER(KIND=1)' function.
-
-COMMAND: `CHARACTER'; scalar; INTENT(IN).
-
-Intrinsic groups: `badu77'.
-
-Description:
-
-   Passes the command COMMAND to a shell (see `system(3)').  Returns
-the value returned by `system(3)', presumably 0 if the shell command
-succeeded.  Note that which shell is used to invoke the command is
-system-dependent and environment-dependent.
-
-   Due to the side effects performed by this intrinsic, the function
-form is not recommended.  However, the function form can be valid in
-cases where the actual side effects performed by the call are
-unimportant to the application.
-
-   For example, on a UNIX system, `SAME = SYSTEM('cmp a b')' does not
-perform any side effects likely to be important to the program, so the
-programmer would not care if the actual system call (and invocation of
-`cmp') was optimized away in a situation where the return value could
-be determined otherwise, or was not actually needed (`SAME' not
-actually referenced after the sample assignment statement).
-
-   For information on other intrinsics with the same name: *Note System
-Intrinsic (subroutine)::.
-
-\1f
-File: g77.info,  Node: TanD Intrinsic,  Next: Time Intrinsic (VXT),  Prev: System Intrinsic (function),  Up: Other Intrinsics
-
-TanD Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL TanD' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: Time Intrinsic (VXT),  Next: UMask Intrinsic (function),  Prev: TanD Intrinsic,  Up: Other Intrinsics
-
-Time Intrinsic (VXT)
-....................
-
-     CALL Time(TIME)
-
-TIME: `CHARACTER*8'; scalar; INTENT(OUT).
-
-Intrinsic groups: `vxt'.
-
-Description:
-
-   Returns in TIME a character representation of the current time as
-obtained from `ctime(3)'.
-
-   Programs making use of this intrinsic might not be Year 10000 (Y10K)
-compliant.  For example, the date might appear, to such programs, to
-wrap around (change from a larger value to a smaller one) as of the
-Year 10000.
-
-   *Note FDate Intrinsic (subroutine)::, for an equivalent routine.
-
-   For information on other intrinsics with the same name: *Note Time
-Intrinsic (UNIX)::.
-
-\1f
-File: g77.info,  Node: UMask Intrinsic (function),  Next: Unlink Intrinsic (function),  Prev: Time Intrinsic (VXT),  Up: Other Intrinsics
-
-UMask Intrinsic (function)
-..........................
-
-     UMask(MASK)
-
-UMask: `INTEGER(KIND=1)' function.
-
-MASK: `INTEGER'; scalar; INTENT(IN).
-
-Intrinsic groups: `badu77'.
-
-Description:
-
-   Sets the file creation mask to MASK and returns the old value.  See
-`umask(2)'.
-
-   Due to the side effects performed by this intrinsic, the function
-form is not recommended.
-
-   For information on other intrinsics with the same name: *Note UMask
-Intrinsic (subroutine)::.
-
-\1f
-File: g77.info,  Node: Unlink Intrinsic (function),  Next: ZExt Intrinsic,  Prev: UMask Intrinsic (function),  Up: Other Intrinsics
-
-Unlink Intrinsic (function)
-...........................
-
-     Unlink(FILE)
-
-Unlink: `INTEGER(KIND=1)' function.
-
-FILE: `CHARACTER'; scalar; INTENT(IN).
-
-Intrinsic groups: `badu77'.
-
-Description:
-
-   Unlink the file FILE.  A null character (`CHAR(0)') marks the end of
-the name in FILE--otherwise, trailing blanks in FILE are ignored.
-Returns 0 on success or a non-zero error code.  See `unlink(2)'.
-
-   Due to the side effects performed by this intrinsic, the function
-form is not recommended.
-
-   For information on other intrinsics with the same name: *Note Unlink
-Intrinsic (subroutine)::.
-
-\1f
-File: g77.info,  Node: ZExt Intrinsic,  Prev: Unlink Intrinsic (function),  Up: Other Intrinsics
-
-ZExt Intrinsic
-..............
-
-   This intrinsic is not yet implemented.  The name is, however,
-reserved as an intrinsic.  Use `EXTERNAL ZExt' to use this name for an
-external procedure.
-
-\1f
-File: g77.info,  Node: Other Compilers,  Next: Other Languages,  Prev: Other Dialects,  Up: Top
-
-Other Compilers
-***************
-
-   An individual Fortran source file can be compiled to an object
-(`*.o') file instead of to the final program executable.  This allows
-several portions of a program to be compiled at different times and
-linked together whenever a new version of the program is needed.
-However, it introduces the issue of "object compatibility" across the
-various object files (and libraries, or `*.a' files) that are linked
-together to produce any particular executable file.
-
-   Object compatibility is an issue when combining, in one program,
-Fortran code compiled by more than one compiler (or more than one
-configuration of a compiler).  If the compilers disagree on how to
-transform the names of procedures, there will normally be errors when
-linking such programs.  Worse, if the compilers agree on naming, but
-disagree on issues like how to pass parameters, return arguments, and
-lay out `COMMON' areas, the earliest detected errors might be the
-incorrect results produced by the program (and that assumes these
-errors are detected, which is not always the case).
-
-   Normally, `g77' generates code that is object-compatible with code
-generated by a version of `f2c' configured (with, for example, `f2c.h'
-definitions) to be generally compatible with `g77' as built by `gcc'.
-(Normally, `f2c' will, by default, conform to the appropriate
-configuration, but it is possible that older or perhaps even newer
-versions of `f2c', or versions having certain configuration changes to
-`f2c' internals, will produce object files that are incompatible with
-`g77'.)
-
-   For example, a Fortran string subroutine argument will become two
-arguments on the C side: a `char *' and an `int' length.
-
-   Much of this compatibility results from the fact that `g77' uses the
-same run-time library, `libf2c', used by `f2c', though `g77' gives its
-version the name `libg2c' so as to avoid conflicts when linking,
-installing them in the same directories, and so on.
-
-   Other compilers might or might not generate code that is
-object-compatible with `libg2c' and current `g77', and some might offer
-such compatibility only when explicitly selected via a command-line
-option to the compiler.
-
-   _Note: This portion of the documentation definitely needs a lot of
-work!_
-
-* Menu:
-
-* Dropping f2c Compatibility::  When speed is more important.
-* Compilers Other Than f2c::    Interoperation with code from other compilers.
-
-\1f
-File: g77.info,  Node: Dropping f2c Compatibility,  Next: Compilers Other Than f2c,  Up: Other Compilers
-
-Dropping `f2c' Compatibility
-============================
-
-   Specifying `-fno-f2c' allows `g77' to generate, in some cases,
-faster code, by not needing to allow to the possibility of linking with
-code compiled by `f2c'.
-
-   For example, this affects how `REAL(KIND=1)', `COMPLEX(KIND=1)', and
-`COMPLEX(KIND=2)' functions are called.  With `-fno-f2c', they are
-compiled as returning the appropriate `gcc' type (`float', `__complex__
-float', `__complex__ double', in many configurations).
-
-   With `-ff2c' in force, they are compiled differently (with perhaps
-slower run-time performance) to accommodate the restrictions inherent
-in `f2c''s use of K&R C as an intermediate language--`REAL(KIND=1)'
-functions return C's `double' type, while `COMPLEX' functions return
-`void' and use an extra argument pointing to a place for the functions
-to return their values.
-
-   It is possible that, in some cases, leaving `-ff2c' in force might
-produce faster code than using `-fno-f2c'.  Feel free to experiment,
-but remember to experiment with changing the way _entire programs and
-their Fortran libraries are compiled_ at a time, since this sort of
-experimentation affects the interface of code generated for a Fortran
-source file--that is, it affects object compatibility.
-
-   Note that `f2c' compatibility is a fairly static target to achieve,
-though not necessarily perfectly so, since, like `g77', it is still
-being improved.  However, specifying `-fno-f2c' causes `g77' to
-generate code that will probably be incompatible with code generated by
-future versions of `g77' when the same option is in force.  You should
-make sure you are always able to recompile complete programs from
-source code when upgrading to new versions of `g77' or `f2c',
-especially when using options such as `-fno-f2c'.
-
-   Therefore, if you are using `g77' to compile libraries and other
-object files for possible future use and you don't want to require
-recompilation for future use with subsequent versions of `g77', you
-might want to stick with `f2c' compatibility for now, and carefully
-watch for any announcements about changes to the `f2c'/`libf2c'
-interface that might affect existing programs (thus requiring
-recompilation).
-
-   It is probable that a future version of `g77' will not, by default,
-generate object files compatible with `f2c', and that version probably
-would no longer use `libf2c'.  If you expect to depend on this
-compatibility in the long term, use the options `-ff2c -ff2c-library'
-when compiling all of the applicable code.  This should cause future
-versions of `g77' either to produce compatible code (at the expense of
-the availability of some features and performance), or at the very
-least, to produce diagnostics.
-
-   (The library `g77' produces will no longer be named `libg2c' when it
-is no longer generally compatible with `libf2c'.  It will likely be
-referred to, and, if installed as a distinct library, named `libg77',
-or some other as-yet-unused name.)
-
-\1f
-File: g77.info,  Node: Compilers Other Than f2c,  Prev: Dropping f2c Compatibility,  Up: Other Compilers
-
-Compilers Other Than `f2c'
-==========================
-
-   On systems with Fortran compilers other than `f2c' and `g77', code
-compiled by `g77' is not expected to work well with code compiled by
-the native compiler.  (This is true for `f2c'-compiled objects as well.)
-Libraries compiled with the native compiler probably will have to be
-recompiled with `g77' to be used with `g77'-compiled code.
-
-   Reasons for such incompatibilities include:
-
-   * There might be differences in the way names of Fortran procedures
-     are translated for use in the system's object-file format.  For
-     example, the statement `CALL FOO' might be compiled by `g77' to
-     call a procedure the linker `ld' sees given the name `_foo_',
-     while the apparently corresponding statement `SUBROUTINE FOO'
-     might be compiled by the native compiler to define the
-     linker-visible name `_foo', or `_FOO_', and so on.
-
-   * There might be subtle type mismatches which cause subroutine
-     arguments and function return values to get corrupted.
-
-     This is why simply getting `g77' to transform procedure names the
-     same way a native compiler does is not usually a good idea--unless
-     some effort has been made to ensure that, aside from the way the
-     two compilers transform procedure names, everything else about the
-     way they generate code for procedure interfaces is identical.
-
-   * Native compilers use libraries of private I/O routines which will
-     not be available at link time unless you have the native
-     compiler--and you would have to explicitly ask for them.
-
-     For example, on the Sun you would have to add `-L/usr/lang/SCx.x
-     -lF77 -lV77' to the link command.
-
-\1f
-File: g77.info,  Node: Other Languages,  Next: Debugging and Interfacing,  Prev: Other Compilers,  Up: Top
-
-Other Languages
-***************
-
-   _Note: This portion of the documentation definitely needs a lot of
-work!_
-
-* Menu:
-
-* Interoperating with C and C++::
-
-\1f
-File: g77.info,  Node: Interoperating with C and C++,  Up: Other Languages
-
-Tools and advice for interoperating with C and C++
-==================================================
-
-   The following discussion assumes that you are running `g77' in `f2c'
-compatibility mode, i.e. not using `-fno-f2c'.  It provides some advice
-about quick and simple techniques for linking Fortran and C (or C++),
-the most common requirement.  For the full story consult the
-description of code generation.  *Note Debugging and Interfacing::.
-
-   When linking Fortran and C, it's usually best to use `g77' to do the
-linking so that the correct libraries are included (including the maths
-one).  If you're linking with C++ you will want to add `-lstdc++',
-`-lg++' or whatever.  If you need to use another driver program (or
-`ld' directly), you can find out what linkage options `g77' passes by
-running `g77 -v'.
-
-* Menu:
-
-* C Interfacing Tools::
-* C Access to Type Information::
-* f2c Skeletons and Prototypes::
-* C++ Considerations::
-* Startup Code::
-
-\1f
-File: g77.info,  Node: C Interfacing Tools,  Next: C Access to Type Information,  Up: Interoperating with C and C++
-
-C Interfacing Tools
--------------------
-
-   Even if you don't actually use it as a compiler, `f2c' from
-`ftp://ftp.netlib.org/f2c/src', can be a useful tool when you're
-interfacing (linking) Fortran and C.  *Note Generating Skeletons and
-Prototypes with `f2c': f2c Skeletons and Prototypes.
-
-   To use `f2c' for this purpose you only need retrieve and build the
-`src' directory from the distribution, consult the `README'
-instructions there for machine-specifics, and install the `f2c' program
-on your path.
-
-   Something else that might be useful is `cfortran.h' from
-`ftp://zebra.desy.de/cfortran'.  This is a fairly general tool which
-can be used to generate interfaces for calling in both directions
-between Fortran and C.  It can be used in `f2c' mode with
-`g77'--consult its documentation for details.
-
-\1f
-File: g77.info,  Node: C Access to Type Information,  Next: f2c Skeletons and Prototypes,  Prev: C Interfacing Tools,  Up: Interoperating with C and C++
-
-Accessing Type Information in C
--------------------------------
-
-   Generally, C code written to link with `g77' code--calling and/or
-being called from Fortran--should `#include <g2c.h>' to define the C
-versions of the Fortran types.  Don't assume Fortran `INTEGER' types
-correspond to C `int's, for instance; instead, declare them as
-`integer', a type defined by `g2c.h'.  `g2c.h' is installed where `gcc'
-will find it by default, assuming you use a copy of `gcc' compatible
-with `g77', probably built at the same time as `g77'.
-
-\1f
-File: g77.info,  Node: f2c Skeletons and Prototypes,  Next: C++ Considerations,  Prev: C Access to Type Information,  Up: Interoperating with C and C++
-
-Generating Skeletons and Prototypes with `f2c'
-----------------------------------------------
-
-   A simple and foolproof way to write `g77'-callable C routines--e.g.
-to interface with an existing library--is to write a file (named, for
-example, `fred.f') of dummy Fortran skeletons comprising just the
-declaration of the routine(s) and dummy arguments plus `END' statements.
-Then run `f2c' on file `fred.f' to produce `fred.c' into which you can
-edit useful code, confident the calling sequence is correct, at least.
-(There are some errors otherwise commonly made in generating C
-interfaces with `f2c' conventions, such as not using `doublereal' as
-the return type of a `REAL' `FUNCTION'.)
-
-   `f2c' also can help with calling Fortran from C, using its `-P'
-option to generate C prototypes appropriate for calling the Fortran.(1)
-If the Fortran code containing any routines to be called from C is in
-file `joe.f', use the command `f2c -P joe.f' to generate the file
-`joe.P' containing prototype information.  `#include' this in the C
-which has to call the Fortran routines to make sure you get it right.
-
-   *Note Arrays (DIMENSION): Arrays, for information on the differences
-between the way Fortran (including compilers like `g77') and C handle
-arrays.
-
-   ---------- Footnotes ----------
-
-   (1) The files generated like this can also be used for inter-unit
-consistency checking of dummy and actual arguments, although the
-`ftnchek' tool from `ftp://ftp.netlib.org/fortran' or
-`ftp://ftp.dsm.fordham.edu' is probably better for this purpose.
-
-\1f
-File: g77.info,  Node: C++ Considerations,  Next: Startup Code,  Prev: f2c Skeletons and Prototypes,  Up: Interoperating with C and C++
-
-C++ Considerations
-------------------
-
-   `f2c' can be used to generate suitable code for compilation with a
-C++ system using the `-C++' option.  The important thing about linking
-`g77'-compiled code with C++ is that the prototypes for the `g77'
-routines must specify C linkage to avoid name mangling.  So, use an
-`extern "C"' declaration.  `f2c''s `-C++' option will take care of this
-when generating skeletons or prototype files as above, and also avoid
-clashes with C++ reserved words in addition to those in C.
-
-\1f
-File: g77.info,  Node: Startup Code,  Prev: C++ Considerations,  Up: Interoperating with C and C++
-
-Startup Code
-------------
-
-   Unlike with some runtime systems, it shouldn't be necessary (unless
-there are bugs) to use a Fortran main program unit to ensure the
-runtime--specifically the I/O system--is initialized.
-
-   However, to use the `g77' intrinsics `GETARG' and `IARGC', either
-the `main' routine from the `libg2c' library must be used, or the
-`f_setarg' routine (new as of `egcs' version 1.1 and `g77' version
-0.5.23) must be called with the appropriate `argc' and `argv' arguments
-prior to the program calling `GETARG' or `IARGC'.
-
-   To provide more flexibility for mixed-language programming involving
-`g77' while allowing for shared libraries, as of `egcs' version 1.1 and
-`g77' version 0.5.23, `g77''s `main' routine in `libg2c' does the
-following, in order:
-
-  1. Calls `f_setarg' with the incoming `argc' and `argv' arguments, in
-     the same order as for `main' itself.
-
-     This sets up the command-line environment for `GETARG' and `IARGC'.
-
-  2. Calls `f_setsig' (with no arguments).
-
-     This sets up the signaling and exception environment.
-
-  3. Calls `f_init' (with no arguments).
-
-     This initializes the I/O environment, though that should not be
-     necessary, as all I/O functions in `libf2c' are believed to call
-     `f_init' automatically, if necessary.
-
-     (A future version of `g77' might skip this explicit step, to speed
-     up normal exit of a program.)
-
-  4. Arranges for `f_exit' to be called (with no arguments) when the
-     program exits.
-
-     This ensures that the I/O environment is properly shut down before
-     the program exits normally.  Otherwise, output buffers might not
-     be fully flushed, scratch files might not be deleted, and so on.
-
-     The simple way `main' does this is to call `f_exit' itself after
-     calling `MAIN__' (in the next step).
-
-     However, this does not catch the cases where the program might
-     call `exit' directly, instead of using the `EXIT' intrinsic
-     (implemented as `exit_' in `libf2c').
-
-     So, `main' attempts to use the operating environment's `onexit' or
-     `atexit' facility, if available, to cause `f_exit' to be called
-     automatically upon any invocation of `exit'.
-
-  5. Calls `MAIN__' (with no arguments).
-
-     This starts executing the Fortran main program unit for the
-     application.  (Both `g77' and `f2c' currently compile a main
-     program unit so that its global name is `MAIN__'.)
-
-  6. If no `onexit' or `atexit' is provided by the system, calls
-     `f_exit'.
-
-  7. Calls `exit' with a zero argument, to signal a successful program
-     termination.
-
-  8. Returns a zero value to the caller, to signal a successful program
-     termination, in case `exit' doesn't exit on the system.
-
-   All of the above names are C `extern' names, i.e. not mangled.
-
-   When using the `main' procedure provided by `g77' without a Fortran
-main program unit, you need to provide `MAIN__' as the entry point for
-your C code.  (Make sure you link the object file that defines that
-entry point with the rest of your program.)
-
-   To provide your own `main' procedure in place of `g77''s, make sure
-you specify the object file defining that procedure _before_ `-lg2c' on
-the `g77' command line.  Since the `-lg2c' option is implicitly
-provided, this is usually straightforward.  (Use the `--verbose' option
-to see how and where `g77' implicitly adds `-lg2c' in a command line
-that will link the program.  Feel free to specify `-lg2c' explicitly,
-as appropriate.)
-
-   However, when providing your own `main', make sure you perform the
-appropriate tasks in the appropriate order.  For example, if your
-`main' does not call `f_setarg', make sure the rest of your application
-does not call `GETARG' or `IARGC'.
-
-   And, if your `main' fails to ensure that `f_exit' is called upon
-program exit, some files might end up incompletely written, some
-scratch files might be left lying around, and some existing files being
-written might be left with old data not properly truncated at the end.
-
-   Note that, generally, the `g77' operating environment does not
-depend on a procedure named `MAIN__' actually being called prior to any
-other `g77'-compiled code.  That is, `MAIN__' does not, itself, set up
-any important operating-environment characteristics upon which other
-code might depend.  This might change in future versions of `g77', with
-appropriate notification in the release notes.
-
-   For more information, consult the source code for the above routines.
-These are in `gcc/libf2c/libF77/', named `main.c', `setarg.c',
-`setsig.c', `getarg_.c', and `iargc_.c'.
-
-   Also, the file `gcc/gcc/f/com.c' contains the code `g77' uses to
-open-code (inline) references to `IARGC'.
-
-\1f
-File: g77.info,  Node: Debugging and Interfacing,  Next: Collected Fortran Wisdom,  Prev: Other Languages,  Up: Top
-
-Debugging and Interfacing
-*************************
-
-   GNU Fortran currently generates code that is object-compatible with
-the `f2c' converter.  Also, it avoids limitations in the current GBE,
-such as the inability to generate a procedure with multiple entry
-points, by generating code that is structured differently (in terms of
-procedure names, scopes, arguments, and so on) than might be expected.
-
-   As a result, writing code in other languages that calls on, is
-called by, or shares in-memory data with `g77'-compiled code generally
-requires some understanding of the way `g77' compiles code for various
-constructs.
-
-   Similarly, using a debugger to debug `g77'-compiled code, even if
-that debugger supports native Fortran debugging, generally requires
-this sort of information.
-
-   This section describes some of the basic information on how `g77'
-compiles code for constructs involving interfaces to other languages
-and to debuggers.
-
-   _Caution:_ Much or all of this information pertains to only the
-current release of `g77', sometimes even to using certain compiler
-options with `g77' (such as `-fno-f2c').  Do not write code that
-depends on this information without clearly marking said code as
-nonportable and subject to review for every new release of `g77'.  This
-information is provided primarily to make debugging of code generated
-by this particular release of `g77' easier for the user, and partly to
-make writing (generally nonportable) interface code easier.  Both of
-these activities require tracking changes in new version of `g77' as
-they are installed, because new versions can change the behaviors
-described in this section.
-
-* Menu:
-
-* Main Program Unit::  How `g77' compiles a main program unit.
-* Procedures::         How `g77' constructs parameter lists
-                       for procedures.
-* Functions::          Functions returning floating-point or character data.
-* Names::              Naming of user-defined variables, procedures, etc.
-* Common Blocks::      Accessing common variables while debugging.
-* Local Equivalence Areas::  Accessing `EQUIVALENCE' while debugging.
-* Complex Variables::  How `g77' performs complex arithmetic.
-* Arrays::             Dealing with (possibly multi-dimensional) arrays.
-* Adjustable Arrays::  Special consideration for adjustable arrays.
-* Alternate Entry Points::  How `g77' implements alternate `ENTRY'.
-* Alternate Returns::  How `g77' handles alternate returns.
-* Assigned Statement Labels::  How `g77' handles `ASSIGN'.
-* Run-time Library Errors::  Meanings of some `IOSTAT=' values.
-
-\1f
-File: g77.info,  Node: Main Program Unit,  Next: Procedures,  Up: Debugging and Interfacing
-
-Main Program Unit (PROGRAM)
-===========================
-
-   When `g77' compiles a main program unit, it gives it the public
-procedure name `MAIN__'.  The `libg2c' library has the actual `main()'
-procedure as is typical of C-based environments, and it is this
-procedure that performs some initial start-up activity and then calls
-`MAIN__'.
-
-   Generally, `g77' and `libg2c' are designed so that you need not
-include a main program unit written in Fortran in your program--it can
-be written in C or some other language.  Especially for I/O handling,
-this is the case, although `g77' version 0.5.16 includes a bug fix for
-`libg2c' that solved a problem with using the `OPEN' statement as the
-first Fortran I/O activity in a program without a Fortran main program
-unit.
-
-   However, if you don't intend to use `g77' (or `f2c') to compile your
-main program unit--that is, if you intend to compile a `main()'
-procedure using some other language--you should carefully examine the
-code for `main()' in `libg2c', found in the source file
-`gcc/libf2c/libF77/main.c', to see what kinds of things might need to
-be done by your `main()' in order to provide the Fortran environment
-your Fortran code is expecting.
-
-   For example, `libg2c''s `main()' sets up the information used by the
-`IARGC' and `GETARG' intrinsics.  Bypassing `libg2c''s `main()' without
-providing a substitute for this activity would mean that invoking
-`IARGC' and `GETARG' would produce undefined results.
-
-   When debugging, one implication of the fact that `main()', which is
-the place where the debugged program "starts" from the debugger's point
-of view, is in `libg2c' is that you won't be starting your Fortran
-program at a point you recognize as your Fortran code.
-
-   The standard way to get around this problem is to set a break point
-(a one-time, or temporary, break point will do) at the entrance to
-`MAIN__', and then run the program.  A convenient way to do so is to
-add the `gdb' command
-
-     tbreak MAIN__
-
-to the file `.gdbinit' in the directory in which you're debugging
-(using `gdb').
-
-   After doing this, the debugger will see the current execution point
-of the program as at the beginning of the main program unit of your
-program.
-
-   Of course, if you really want to set a break point at some other
-place in your program and just start the program running, without first
-breaking at `MAIN__', that should work fine.
-
-\1f
-File: g77.info,  Node: Procedures,  Next: Functions,  Prev: Main Program Unit,  Up: Debugging and Interfacing
-
-Procedures (SUBROUTINE and FUNCTION)
-====================================
-
-   Currently, `g77' passes arguments via reference--specifically, by
-passing a pointer to the location in memory of a variable, array, array
-element, a temporary location that holds the result of evaluating an
-expression, or a temporary or permanent location that holds the value
-of a constant.
-
-   Procedures that accept `CHARACTER' arguments are implemented by
-`g77' so that each `CHARACTER' argument has two actual arguments.
-
-   The first argument occupies the expected position in the argument
-list and has the user-specified name.  This argument is a pointer to an
-array of characters, passed by the caller.
-
-   The second argument is appended to the end of the user-specified
-calling sequence and is named `__g77_length_X', where X is the
-user-specified name.  This argument is of the C type `ftnlen' (see
-`gcc/libf2c/g2c.h.in' for information on that type) and is the number
-of characters the caller has allocated in the array pointed to by the
-first argument.
-
-   A procedure will ignore the length argument if `X' is not declared
-`CHARACTER*(*)', because for other declarations, it knows the length.
-Not all callers necessarily "know" this, however, which is why they all
-pass the extra argument.
-
-   The contents of the `CHARACTER' argument are specified by the
-address passed in the first argument (named after it).  The procedure
-can read or write these contents as appropriate.
-
-   When more than one `CHARACTER' argument is present in the argument
-list, the length arguments are appended in the order the original
-arguments appear.  So `CALL FOO('HI','THERE')' is implemented in C as
-`foo("hi","there",2,5);', ignoring the fact that `g77' does not provide
-the trailing null bytes on the constant strings (`f2c' does provide
-them, but they are unnecessary in a Fortran environment, and you should
-not expect them to be there).
-
-   Note that the above information applies to `CHARACTER' variables and
-arrays *only*.  It does *not* apply to external `CHARACTER' functions
-or to intrinsic `CHARACTER' functions.  That is, no second length
-argument is passed to `FOO' in this case:
-
-     CHARACTER X
-     EXTERNAL X
-     CALL FOO(X)
-
-Nor does `FOO' expect such an argument in this case:
-
-     SUBROUTINE FOO(X)
-     CHARACTER X
-     EXTERNAL X
-
-   Because of this implementation detail, if a program has a bug such
-that there is disagreement as to whether an argument is a procedure,
-and the type of the argument is `CHARACTER', subtle symptoms might
-appear.
-
-\1f
-File: g77.info,  Node: Functions,  Next: Names,  Prev: Procedures,  Up: Debugging and Interfacing
-
-Functions (FUNCTION and RETURN)
-===============================
-
-   `g77' handles in a special way functions that return the following
-types:
-
-   * `CHARACTER'
-
-   * `COMPLEX'
-
-   * `REAL(KIND=1)'
-
-   For `CHARACTER', `g77' implements a subroutine (a C function
-returning `void') with two arguments prepended: `__g77_result', which
-the caller passes as a pointer to a `char' array expected to hold the
-return value, and `__g77_length', which the caller passes as an
-`ftnlen' value specifying the length of the return value as declared in
-the calling program.  For `CHARACTER*(*)', the called function uses
-`__g77_length' to determine the size of the array that `__g77_result'
-points to; otherwise, it ignores that argument.
-
-   For `COMPLEX', when `-ff2c' is in force, `g77' implements a
-subroutine with one argument prepended: `__g77_result', which the
-caller passes as a pointer to a variable of the type of the function.
-The called function writes the return value into this variable instead
-of returning it as a function value.  When `-fno-f2c' is in force,
-`g77' implements a `COMPLEX' function as `gcc''s `__complex__ float' or
-`__complex__ double' function (or an emulation thereof, when
-`-femulate-complex' is in effect), returning the result of the function
-in the same way as `gcc' would.
-
-   For `REAL(KIND=1)', when `-ff2c' is in force, `g77' implements a
-function that actually returns `REAL(KIND=2)' (typically C's `double'
-type).  When `-fno-f2c' is in force, `REAL(KIND=1)' functions return
-`float'.
-
-\1f
-File: g77.info,  Node: Names,  Next: Common Blocks,  Prev: Functions,  Up: Debugging and Interfacing
-
-Names
-=====
-
-   Fortran permits each implementation to decide how to represent names
-as far as how they're seen in other contexts, such as debuggers and
-when interfacing to other languages, and especially as far as how
-casing is handled.
-
-   External names--names of entities that are public, or "accessible",
-to all modules in a program--normally have an underscore (`_') appended
-by `g77', to generate code that is compatible with `f2c'.  External
-names include names of Fortran things like common blocks, external
-procedures (subroutines and functions, but not including statement
-functions, which are internal procedures), and entry point names.
-
-   However, use of the `-fno-underscoring' option disables this kind of
-transformation of external names (though inhibiting the transformation
-certainly improves the chances of colliding with incompatible externals
-written in other languages--but that might be intentional.
-
-   When `-funderscoring' is in force, any name (external or local) that
-already has at least one underscore in it is implemented by `g77' by
-appending two underscores.  (This second underscore can be disabled via
-the `-fno-second-underscore' option.)  External names are changed this
-way for `f2c' compatibility.  Local names are changed this way to avoid
-collisions with external names that are different in the source
-code--`f2c' does the same thing, but there's no compatibility issue
-there except for user expectations while debugging.
-
-   For example:
-
-     Max_Cost = 0
-
-Here, a user would, in the debugger, refer to this variable using the
-name `max_cost__' (or `MAX_COST__' or `Max_Cost__', as described below).
-(We hope to improve `g77' in this regard in the future--don't write
-scripts depending on this behavior!  Also, consider experimenting with
-the `-fno-underscoring' option to try out debugging without having to
-massage names by hand like this.)
-
-   `g77' provides a number of command-line options that allow the user
-to control how case mapping is handled for source files.  The default
-is the traditional UNIX model for Fortran compilers--names are mapped
-to lower case.  Other command-line options can be specified to map
-names to upper case, or to leave them exactly as written in the source
-file.
-
-   For example:
-
-     Foo = 9.436
-
-Here, it is normally the case that the variable assigned will be named
-`foo'.  This would be the name to enter when using a debugger to access
-the variable.
-
-   However, depending on the command-line options specified, the name
-implemented by `g77' might instead be `FOO' or even `Foo', thus
-affecting how debugging is done.
-
-   Also:
-
-     Call Foo
-
-This would normally call a procedure that, if it were in a separate C
-program, be defined starting with the line:
-
-     void foo_()
-
-However, `g77' command-line options could be used to change the casing
-of names, resulting in the name `FOO_' or `Foo_' being given to the
-procedure instead of `foo_', and the `-fno-underscoring' option could
-be used to inhibit the appending of the underscore to the name.
-
-\1f
-File: g77.info,  Node: Common Blocks,  Next: Local Equivalence Areas,  Prev: Names,  Up: Debugging and Interfacing
-
-Common Blocks (COMMON)
-======================
-
-   `g77' names and lays out `COMMON' areas the same way `f2c' does, for
-compatibility with `f2c'.
-
-\1f
-File: g77.info,  Node: Local Equivalence Areas,  Next: Complex Variables,  Prev: Common Blocks,  Up: Debugging and Interfacing
-
-Local Equivalence Areas (EQUIVALENCE)
-=====================================
-
-   `g77' treats storage-associated areas involving a `COMMON' block as
-explained in the section on common blocks.
-
-   A local `EQUIVALENCE' area is a collection of variables and arrays
-connected to each other in any way via `EQUIVALENCE', none of which are
-listed in a `COMMON' statement.
-
-   (_Note:_ `g77' version 0.5.18 and earlier chose the name for X using
-a different method when more than one name was in the list of names of
-entities placed at the beginning of the array.  Though the
-documentation specified that the first name listed in the `EQUIVALENCE'
-statements was chosen for X, `g77' in fact chose the name using a
-method that was so complicated, it seemed easier to change it to an
-alphabetical sort than to describe the previous method in the
-documentation.)
-
-\1f
-File: g77.info,  Node: Complex Variables,  Next: Arrays,  Prev: Local Equivalence Areas,  Up: Debugging and Interfacing
-
-Complex Variables (COMPLEX)
-===========================
-
-   As of 0.5.20, `g77' defaults to handling `COMPLEX' types (and
-related intrinsics, constants, functions, and so on) in a manner that
-makes direct debugging involving these types in Fortran language mode
-difficult.
-
-   Essentially, `g77' implements these types using an internal
-construct similar to C's `struct', at least as seen by the `gcc' back
-end.
-
-   Currently, the back end, when outputting debugging info with the
-compiled code for the assembler to digest, does not detect these
-`struct' types as being substitutes for Fortran complex.  As a result,
-the Fortran language modes of debuggers such as `gdb' see these types
-as C `struct' types, which they might or might not support.
-
-   Until this is fixed, switch to C language mode to work with entities
-of `COMPLEX' type and then switch back to Fortran language mode
-afterward.  (In `gdb', this is accomplished via `set lang c' and either
-`set lang fortran' or `set lang auto'.)
-