remove -fugly, other doc fixes

From-SVN: r26519
This commit is contained in:
Craig Burley 1999-04-17 14:09:21 +00:00 committed by Craig Burley
parent 8a19a44a1f
commit 4e6a144034
8 changed files with 298 additions and 248 deletions

View File

@ -1,3 +1,22 @@
Sat Apr 17 16:55:59 1999 Craig Burley <craig@jcb-sc.com>
* bugs.texi, ffe.texi, g77.texi, g77install.texi, news.texi:
Clean up @code{} vs. @samp{}.
Clean up dashes (`--') vs. @minus{} vs. `---'.
* ffe.texi: Add copyright header.
* g77.texi, lang-options.h, news.texi, top.c (ffe_decode_option):
Remove support for -fugly option.
Clarify that -fugly-logint is needed instead of -fugly
to work around using .EQ./.NE. on LOGICAL operands.
Explain more about why -fugly-logint is bad juju.
* g77.texi (Missing Features): Describe READONLY as a missing
feature. Describe AUTOMATIC better.
* news.texi: Mention libf2c upgrade.
Sat Apr 17 14:05:53 1999 Craig Burley <craig@jcb-sc.com>
Make a place for front-end internals documentation:

View File

@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. BUGS).
@set copyrights-bugs 1995-1999
@set last-update-bugs 1999-04-03
@set last-update-bugs 1999-04-17
@include root.texi
@ -111,8 +111,8 @@ e.g. not passed to other procedures as they should be.
@code{g77} fails to warn about
use of a ``live'' iterative-DO variable
as an implied-DO variable
in a @samp{WRITE} or @samp{PRINT} statement
(although it does warn about this in a @samp{READ} statement).
in a @code{WRITE} or @code{PRINT} statement
(although it does warn about this in a @code{READ} statement).
@item
Something about @code{g77}'s straightforward handling of
@ -210,8 +210,8 @@ for information on the @samp{-fdebug-kludge} option.
@item
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 @samp{MAIN__} (or @samp{MAIN___} or @samp{MAIN_} if
@samp{MAIN__} doesn't exist)
set a breakpoint at @code{MAIN__} (or @code{MAIN___} or @code{MAIN_} if
@code{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

View File

@ -1,3 +1,7 @@
@c Copyright (C) 1999 Free Software Foundation, Inc.
@c This is part of the G77 manual.
@c For copying conditions, see the file g77.texi.
@node Front End
@chapter Front End
@cindex GNU Fortran Front End (FFE)
@ -375,7 +379,7 @@ Whether @samp{Y} and @samp{Z} are local variables,
additional function entry points,
or dummy arguments to additional entry points
is not known
until the @samp{ENTRY} statement is parsed.
until the @code{ENTRY} statement is parsed.
@item
Similarly, whether @samp{TMP} is a local variable is not known
@ -383,7 +387,7 @@ until the @samp{READ *, TMP} statement is parsed.
@item
The initial values for @samp{EE} and @samp{PI}
are not known until after the @samp{DATA} statement is parsed.
are not known until after the @code{DATA} statement is parsed.
@item
Whether @samp{FRED} is a function returning type @code{REAL}
@ -404,7 +408,7 @@ especially when @code{ASSIGN}'ed.)
@item
That @samp{J} is a local variable is not known
until the first @samp{ASSIGN} statement is parsed.
until the first @code{ASSIGN} statement is parsed.
(This happens @emph{after} executable code has been seen.)
@end itemize
@ -678,17 +682,17 @@ END
The arguments to the two calls to @samp{LFUNC}
require dynamic allocation (at run time),
but are not required during execution of the @samp{CALL} statements.
but are not required during execution of the @code{CALL} statements.
So, the scopes of those temporaries must be within blocks inside
the block corresponding to the Fortran @code{IF} block.
This cannot be represented ``naturally''
in vanilla C, nor in GBEL.
The @samp{if}, @samp{elseif}, @samp{else},
and @samp{endif} constructs
The @code{if}, @code{elseif}, @code{else},
and @code{endif} constructs
provided by both languages must,
for a given @samp{if} block,
for a given @code{if} block,
share the same C/GBE block.
Therefore, any temporaries needed during evaluation of @samp{expr}
@ -793,7 +797,7 @@ as if @samp{SELECT CASE(temp0)} had been written.
Each corresponding @code{CASE} is replaced with @samp{CASE(@var{i})},
where @var{i} is the ordinal for that case,
determined while, or before,
generating the cascade of @samp{if}-related constructs
generating the cascade of @code{if}-related constructs
to cope with @code{CHARACTER} selection.
@item

View File

@ -2,7 +2,7 @@
@c %**start of header
@setfilename g77.info
@set last-update 1999-04-03
@set last-update 1999-04-17
@set copyrights-g77 1995-1999
@include root.texi
@ -1388,7 +1388,7 @@ by type. Explanations are in the following sections.
@item Shorthand Options
@xref{Shorthand Options}.
@smallexample
-ff66 -fno-f66 -ff77 -fno-f77 -fugly -fno-ugly
-ff66 -fno-f66 -ff77 -fno-f77 -fno-ugly
@end smallexample
@item Fortran Language Options
@ -1529,7 +1529,7 @@ Fortran source code that should not be preprocessed.
Such source code cannot contain any preprocessor directives, such
as @code{#include}, @code{#define}, @code{#if}, and so on.
You can force @samp{.f} files to be preprocessed by @samp{cpp} by using
You can force @samp{.f} files to be preprocessed by @code{cpp} by using
@samp{-x f77-cpp-input}.
@xref{LEX}.
@ -1656,7 +1656,7 @@ and when the resulting commands compile Fortran source files.
This option is obsolete in @code{egcs}
as of version 1.1.
The effect is instead achieved
by the @samp{lang_init_options} routine
by the @code{lang_init_options} routine
in @file{egcs/gcc/f/com.c}.
@cindex consistency checks
@ -1720,6 +1720,10 @@ for other options accepted by the compiler:
@item -fugly
@cindex ugly features
@cindex features, ugly
@emph{Note:} This option is no longer supported.
The information, below, is provided to aid
in the conversion of old scripts.
Specify that certain ``ugly'' constructs are to be quietly accepted.
Same as:
@ -1734,14 +1738,6 @@ or well-maintained portable Fortran code, but widely used
in old code.
@xref{Distensions}, for more information.
@emph{Note:} The @samp{-fugly} option is likely to
be removed in a future version.
Implicitly enabling all the @samp{-fugly-*} options
is unlikely to be feasible, or sensible, in the future,
so users should learn to specify only those
@samp{-fugly-*} options they really need for a
particular source file.
@cindex -fno-ugly option
@cindex options, -fno-ugly
@item -fno-ugly
@ -2733,7 +2729,7 @@ some machines, but might slow down a program that doesn't.
This option is effective when the floating-point unit is set to work in
IEEE 854 `extended precision'---as it typically is on x86 and m68k GNU
systems---rather than IEEE 754 double precision. @code{-ffloat-store}
systems---rather than IEEE 754 double precision. @samp{-ffloat-store}
tries to remove the extra precision by spilling data from floating-point
registers into memory and this typically involves a big performance
hit. However, it doesn't affect intermediate results, so that it is
@ -2852,7 +2848,7 @@ currently recognized as such. This option unrolls only iterative
@c DL: Check my understanding of -funroll-all-loops v. -funroll-loops is correct.
Probably improves performance on code using @code{DO WHILE} loops by
unrolling them in addition to iterative @code{DO} loops. In the absence
of @code{DO WHILE}, this option is equivalent to @code{-funroll-loops}
of @code{DO WHILE}, this option is equivalent to @samp{-funroll-loops}
but possibly slower.
@item -fno-move-all-movables
@ -3877,7 +3873,7 @@ For example: @samp{PRINT *, 'My name is Bob'}.
@item
A metasyntactic variable---that is, a name used in this document
to serve as a placeholder for whatever text is used by the
user or programmer--appears as shown in the following example:
user or programmer---appears as shown in the following example:
``The @code{INTEGER @var{ivar}} statement specifies that
@var{ivar} is a variable or array of type @code{INTEGER}.''
@ -5666,7 +5662,7 @@ These disagreements strongly suggest that Fortran programmers,
and certainly existing Fortran programs, disagree about the
meaning of such invocations.
The first version of @samp{JCB002} didn't accommodate some compilers'
The first version of @code{JCB002} didn't accommodate some compilers'
treatment of @samp{INT(I1-I2)} where @samp{I1} and @samp{I2} are
@code{INTEGER*2}.
In such a case, these compilers apparently convert both
@ -5678,7 +5674,7 @@ However, the results of the careful analyses done on the outputs
of programs compiled by these various compilers show that they
all implement either @samp{Interp 1} or @samp{Interp 2} above.
Specifically, it is believed that the new version of @samp{JCB002}
Specifically, it is believed that the new version of @code{JCB002}
above will confirm that:
@itemize @bullet
@ -6396,7 +6392,7 @@ but that seems to be overkill for a product in beta test.
Note 2: Rules for InitialCaps names are:
@itemize --
@itemize @minus
@item
Must be a single uppercase letter, @strong{or}
@item
@ -6409,7 +6405,7 @@ valid InitialCaps names, but @samp{AB}, @samp{A2}, and @samp{ABC} are
not.
Note that most, but not all, built-in names meet these
requirements---the exceptions are some of the two-letter format
specifiers, such as @samp{BN} and @samp{BZ}.
specifiers, such as @code{BN} and @code{BZ}.
Here are the names of the corresponding command-line options:
@ -6603,7 +6599,7 @@ meaning is to be assumed.
@code{g77} treats double-quote (@samp{"})
as beginning an octal constant of @code{INTEGER(KIND=1)} type
when the @code{-fvxt} option is specified.
when the @samp{-fvxt} option is specified.
The form of this octal constant is
@example
@ -6614,7 +6610,7 @@ The form of this octal constant is
where @var{octal-digits} is a nonempty string of characters in
the set @samp{01234567}.
For example, the @code{-fvxt} option permits this:
For example, the @samp{-fvxt} option permits this:
@example
PRINT *, "20
@ -6647,7 +6643,7 @@ a fixed-form source file
as a continuation character rather than
as the beginning of a comment
(as it does in any other column)
when the @code{-fvxt} option is specified.
when the @samp{-fvxt} option is specified.
The following program, when run, prints a message indicating
whether it is interpreted according to GNU Fortran (and Fortran 90)
@ -6758,7 +6754,7 @@ provided for by that standard.
Automatic conversion of numeric
expressions to @code{INTEGER(KIND=1)} in contexts such as:
@itemize --
@itemize @minus
@item
Array-reference indexes.
@item
@ -6877,18 +6873,6 @@ portable constructs, are accepted.
These are humorously referred to as ``distensions'',
extensions that just plain look ugly in the harsh light of day.
@emph{Note:} The @samp{-fugly} option, which currently serves
as shorthand to enable all of the distensions below, is likely to
be removed in a future version of @code{g77}.
That's because it's likely new distensions will be added that
conflict with existing ones in terms of assigning meaning to
a given chunk of code.
(Also, it's pretty clear that users should not use @samp{-fugly}
as shorthand when the next release of @code{g77} might add a
distension to that that causes their existing code, when recompiled,
to behave differently---perhaps even fail to compile or run
correctly.)
@menu
* Ugly Implicit Argument Conversion:: Disabled via @samp{-fno-ugly-args}.
* Ugly Assumed-Size Arrays:: Enabled via @samp{-fugly-assumed}.
@ -7182,7 +7166,7 @@ ASSIGN 10 TO I
Normally, for portability and improved diagnostics, @code{g77}
reserves distinct storage for a ``sibling'' of @samp{I}, used
only for @code{ASSIGN} statements to that variable (along with
the corresponding assigned-@code{GOTO} and assigned-@samp{FORMAT}-I/O
the corresponding assigned-@code{GOTO} and assigned-@code{FORMAT}-I/O
statements that reference the variable).
However, some code (that violates the ANSI FORTRAN 77 standard)
@ -7411,15 +7395,15 @@ on at least some systems:
The @code{libg2c} library
shipped with any @code{g77} that warns
about invocation of a non-Y2K-compliant intrinsic
has renamed the @samp{EXTERNAL} procedure names
has renamed the @code{EXTERNAL} procedure names
of those intrinsics.
This is done so that
the @code{libg2c} implementations of these intrinsics
cannot be directly linked to
as @samp{EXTERNAL} names
as @code{EXTERNAL} names
(which normally would avoid the non-Y2K-intrinsic warning).
The renamed forms of the @samp{EXTERNAL} names
The renamed forms of the @code{EXTERNAL} names
of these renamed procedures
may be linked to
by appending the string @samp{_y2kbug}
@ -7435,27 +7419,27 @@ CALL DATE_Y2KBUG (STR)
CALL VXTIDATE_Y2KBUG (MM, DD, YY)
@end smallexample
(Note that the @samp{EXTERNAL} statement
(Note that the @code{EXTERNAL} statement
is not actually required,
since the modified names are not recognized as intrinsics
by the current version of @code{g77}.
But it is shown in this specific case,
for purposes of illustration.)
The renaming of @samp{EXTERNAL} procedure names of these intrinsics
The renaming of @code{EXTERNAL} procedure names of these intrinsics
causes unresolved references at link time.
For example, @samp{EXTERNAL DATE; CALL DATE(STR)}
is normally compiled by @code{g77}
as, in C, @samp{date_(&str, 20);}.
This, in turn, links to the @samp{date_} procedure
in the @samp{libE77} portion of @code{libg2c},
This, in turn, links to the @code{date_} procedure
in the @code{libE77} portion of @code{libg2c},
which purposely calls a nonexistent procedure
named @samp{G77_date_y2kbuggy_0}.
named @code{G77_date_y2kbuggy_0}.
The resulting link-time error is designed, via this name,
to encourage the programmer to look up the
index entries to this portion of the @code{g77} documentation.
Generally, we recommend that the @samp{EXTERNAL} method
Generally, we recommend that the @code{EXTERNAL} method
of invoking procedures in @code{libg2c}
@emph{not} be used.
When used, some of the correctness checking
@ -7463,7 +7447,7 @@ normally performed by @code{g77}
is skipped.
In particular, it is probably better to use the
@samp{INTRINSIC} method of invoking
@code{INTRINSIC} method of invoking
non-Y2K-compliant procedures,
so anyone compiling the code
can quickly notice the potential Y2K problems
@ -7491,14 +7475,14 @@ So, linking newly-compiled code
(invoking one of the intrinsics in question)
to an old library
might yield an unresolved reference
to @samp{G77_date_y2kbug_0}.
(The old library calls it @samp{G77_date_0}.)
to @code{G77_date_y2kbug_0}.
(The old library calls it @code{G77_date_0}.)
Similarly, linking previously-compiled code
to a new library
might yield an unresolved reference
to @samp{G77_vxtidate_0}.
(The new library calls it @samp{G77_vxtidate_y2kbug_0}.)
to @code{G77_vxtidate_0}.
(The new library calls it @code{G77_vxtidate_y2kbug_0}.)
The proper fix for the above problems
is to obtain the latest release of @code{g77}
@ -8160,7 +8144,7 @@ options @code{g77} passes by running @samp{g77 -v}.
@pindex f2c
@cindex cfortran.h
@cindex Netlib
Even if you don't actually use it as a compiler, @samp{f2c} from
Even if you don't actually use it as a compiler, @code{f2c} from
@uref{ftp://ftp.netlib.org/f2c/src}, can be a useful tool when you're
interfacing (linking) Fortran and C@.
@xref{f2c Skeletons and Prototypes,,Generating Skeletons and Prototypes with @code{f2c}}.
@ -8187,7 +8171,7 @@ Generally, C code written to link with
called from Fortran---should @samp{#include <g2c.h>} to define the C
versions of the Fortran types.
Don't assume Fortran @code{INTEGER} types
correspond to C @samp{int}s, for instance; instead, declare them as
correspond to C @code{int}s, for instance; instead, declare them as
@code{integer}, a type defined by @file{g2c.h}.
@file{g2c.h} is installed where @code{gcc} will find it by
default, assuming you use a copy of @code{gcc} compatible with
@ -8202,7 +8186,7 @@ A simple and foolproof way to write @code{g77}-callable C routines---e.g.@: to
interface with an existing library---is to write a file (named, for
example, @file{fred.f}) of dummy Fortran
skeletons comprising just the declaration of the routine(s) and dummy
arguments plus @samp{END} statements.
arguments plus @code{END} statements.
Then run @code{f2c} on file @file{fred.f} to produce @file{fred.c}
into which you can edit
useful code, confident the calling sequence is correct, at least.
@ -8216,7 +8200,7 @@ as the return type of a @code{REAL} @code{FUNCTION}.)
@samp{-P} option to generate C prototypes appropriate for calling the
Fortran.@footnote{The files generated like this can also be used for
inter-unit consistency checking of dummy and actual arguments, although
the @samp{ftnchek} tool from @uref{ftp://ftp.netlib.org/fortran}
the @code{ftnchek} tool from @uref{ftp://ftp.netlib.org/fortran}
or @uref{ftp://ftp.dsm.fordham.edu} is
probably better for this purpose.}
If the Fortran code containing any
@ -8462,11 +8446,11 @@ described in this section.
@cindex statements, PROGRAM
When @code{g77} compiles a main program unit, it gives it the public
procedure name @samp{MAIN__}.
procedure name @code{MAIN__}.
The @code{libg2c} library has the actual @code{main()} procedure
as is typical of C-based environments, and
it is this procedure that performs some initial start-up
activity and then calls @samp{MAIN__}.
activity and then calls @code{MAIN__}.
Generally, @code{g77} and @code{libg2c} are designed so that you need not
include a main program unit written in Fortran in your program---it
@ -8508,7 +8492,7 @@ 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 @samp{MAIN__}, and then run the program.
the entrance to @code{MAIN__}, and then run the program.
A convenient way to do so is to add the @code{gdb} command
@example
@ -8525,7 +8509,7 @@ 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 @samp{MAIN__},
running, without first breaking at @code{MAIN__},
that should work fine.
@node Procedures
@ -9322,7 +9306,7 @@ Instead, make a separate @code{INCLUDE} file that defines
so you can more easily change the actual numbers in the future.
The information below is culled from the definition
of @samp{F_err} in @file{f/runtime/libI77/err.c} in the
of @code{F_err} in @file{f/runtime/libI77/err.c} in the
@code{g77} source tree.
@smallexample
@ -10234,7 +10218,7 @@ it provides either form of detection are welcome.
For several versions prior to 0.5.20, @code{g77} configured its
version of the @code{libf2c} run-time library so that one of
its configuration macros, @samp{ALWAYS_FLUSH}, was defined.
its configuration macros, @code{ALWAYS_FLUSH}, was defined.
This was done as a result of a belief that many programs expected
output to be flushed to the operating system (under UNIX, via
@ -10259,7 +10243,7 @@ non-flushing library routines.)
@xref{Always Flush Output}, for information on how to modify
the @code{g77} source tree so that a version of @code{libg2c}
can be built and installed with the @samp{ALWAYS_FLUSH} macro defined.
can be built and installed with the @code{ALWAYS_FLUSH} macro defined.
@node Large File Unit Numbers
@subsection Large File Unit Numbers
@ -10278,13 +10262,13 @@ file unit number that is out of the range accepted by
@code{libg2c}.
Normally, this range is 0 through 99, and the high end
of the range is controlled by a @code{libg2c} source-file
macro named @samp{MXUNIT}.
macro named @code{MXUNIT}.
If you can easily change your program to use unit numbers
in the range 0 through 99, you should do so.
Otherwise, see @ref{Larger File Unit Numbers}, for information on how
to change @samp{MXUNIT} in @code{libg2c} so you can build and
to change @code{MXUNIT} in @code{libg2c} so you can build and
install a new version of @code{libg2c} that supports the larger
unit numbers you need.
@ -10306,11 +10290,11 @@ in your system's documentation.
@cindex x86 floating-point
If your program depends on exact IEEE 754 floating-point handling it may
help on some systems---specifically x86 or m68k hardware---to use
the @code{-ffloat-store} option or to reset the precision flag on the
the @samp{-ffloat-store} option or to reset the precision flag on the
floating-point unit @xref{Optimize Options}.
However, it might be better simply to put the FPU into double precision
mode and not take the performance hit of @code{-ffloat-store}. On x86
mode and not take the performance hit of @samp{-ffloat-store}. On x86
and m68k GNU systems you can do this with a technique similar to that
for turning on floating-point exceptions @xref{Floating-point Exception
Handling}. The control word could be set to double precision by
@ -10430,15 +10414,6 @@ Currently, @code{g77} supports only automatic arrays, not
@code{RECURSIVE} procedures or other means of explicitly
specifying that variables or arrays are automatic.
@cindex -fugly option
@cindex options, -fugly
@item -fugly
Fix the source code so that @samp{-fno-ugly} will work.
Note that, for many programs, it is difficult to practically
avoid using the features enabled via @samp{-fugly-init}, and these
features pose the lowest risk of writing nonportable code, among the
various ``ugly'' features.
@cindex -f@var{group}-intrinsics-hide option
@cindex options, -f@var{group}-intrinsics-hide
@item -f@var{group}-intrinsics-hide
@ -10975,8 +10950,8 @@ simply too large for the system, or buggy.)
@subsection Nothing Happens
@cindex nothing happens
@cindex naming programs
@cindex @samp{test} programs
@cindex programs, @samp{test}
@cindex @code{test} programs
@cindex programs, @code{test}
It is occasionally reported that a ``simple'' program,
such as a ``Hello, World!'' program, does nothing when
it is run, even though the compiler reported no errors,
@ -10984,7 +10959,7 @@ despite the program containing nothing other than a
simple @code{PRINT} statement.
This most often happens because the program has been
compiled and linked on a UNIX system and named @samp{test},
compiled and linked on a UNIX system and named @code{test},
though other names can lead to similarly unexpected
run-time behavior on various systems.
@ -11151,7 +11126,7 @@ used by @code{g77}, handles only double-precision values.
Since @samp{0.2} in the program is a single-precision value, it
is converted to double precision (still in binary notation)
before being converted back to decimal.
The conversion to binary appends _binary_ zero digits to the
The conversion to binary appends @emph{binary} zero digits to the
original value---which, again, is an inexact approximation of
0.2---resulting in an approximation that is much less exact
than is connoted by the use of double precision.
@ -11196,7 +11171,7 @@ with that produced by some other Fortran implementations.
A useful source of information on floating-point computation is David
Goldberg, `What Every Computer Scientist Should Know About
Floating-Point Arithmetic', Computing Surveys, 23, March 1991, pp.@:
5--48.
5-48.
An online version is available at
@uref{http://docs.sun.com},
and there is a supplemented version, in PostScript form, at
@ -11259,6 +11234,7 @@ GNU Fortran language:
* Array Bounds Expressions::
* POINTER Statements::
* Sensible Non-standard Constructs::
* READONLY Keyword::
* FLUSH Statement::
* Expressions in FORMAT Statements::
* Explicit Assembler Code::
@ -11344,7 +11320,7 @@ 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 @code{-Wno-col73to80} option.
having to specify, say, a @samp{-Wno-col73to80} option.
@node Fortran 90 Support
@subsection Fortran 90 Support
@ -11587,6 +11563,34 @@ specification of an attribute), please submit a
bug report with an explanation, so we can consider
fixing @code{g77} just for cases like yours.
@node READONLY Keyword
@subsection @code{READONLY} Keyword
@cindex READONLY
Support for @code{READONLY}, in @code{OPEN} statements,
requires @code{libg2c} support,
to make sure that @samp{CLOSE(@dots{},STATUS='DELETE')}
does not delete a file opened on a unit
with the @code{READONLY} keyword,
and perhaps to trigger a fatal diagnostic
if a @code{WRITE} or @code{PRINT}
to such a unit is attempted.
@emph{Note:} It is not sufficient for @code{g77} and @code{libg2c}
(its version of @code{libf2c})
to assume that @code{READONLY} does not need some kind of explicit support
at run time,
due to UNIX systems not (generally) needing it.
@code{g77} is not just a UNIX-based compiler!
Further, mounting of non-UNIX filesystems on UNIX systems
(such as via NFS)
might require proper @code{READONLY} support.
@cindex SHARED
(Similar issues might be involved with supporting the @code{SHARED}
keyword.)
@node FLUSH Statement
@subsection @code{FLUSH} Statement
@ -11811,22 +11815,36 @@ be supported by a future version of @code{g77}.
@cindex automatic variables
@cindex variables, automatic
@code{g77} doesn't support the @code{AUTOMATIC} keyword that
@code{g77} doesn't support the @code{AUTOMATIC} statement that
@code{f2c} does.
It is not yet clear exactly what this statement would achieve.
The semantic equivalent would be provided by @code{RECURSIVE}
combined with lack of @code{SAVE}.
In that sense, perhaps all it would provide is an
overriding of an unadorned (blanket) @code{SAVE} statement
for specific variables.
@code{AUTOMATIC} would identify a variable or array
as not being @code{SAVE}'d, which is normally the default,
but which would be especially useful for code that, @emph{generally},
needed to be compiled with the @samp{-fno-automatic} option.
It might also serve as a hint to the compiler that placing
even a very large array on the stack is acceptable.
@code{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.
Perhaps it should disallow @code{DATA}
or other specification of any initial values
for affected variables as well.
@code{AUTOMATIC} would not, by itself, designate the containing procedure
as recursive.
@code{AUTOMATIC} should work syntactically like @code{SAVE},
in that @code{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 @code{AUTOMATIC}
would not be permitted to be initialized via @code{DATA}
or other specification of any initial values,
requiring explicit initialization,
such as via assignment statements.
@cindex UNSAVE
@cindex STATIC
Perhaps @code{UNSAVE} and @code{STATIC},
as strict semantic opposites to @code{SAVE} and @code{AUTOMATIC},
should be provided as well.
@node Suppressing Space Padding
@subsection Suppressing Space Padding of Source Lines
@ -11934,7 +11952,7 @@ A convenient trick is to compile this something like:
@smallexample
gcc -o libtrapfpe.a trapfpe.c
@end smallexample
and then use it by adding @code{-trapfpe} to the @code{g77} command line
and then use it by adding @samp{-trapfpe} to the @code{g77} command line
when linking.
@node Nonportable Conversions
@ -11949,7 +11967,7 @@ is type @code{REAL}), that other compilers might
quietly accept.
Some of these conversions are accepted by @code{g77}
when the @samp{-fugly} option is specified.
when the @samp{-fugly-logint} option is specified.
Perhaps it should accept more or all of them.
@node Large Automatic Arrays
@ -12625,7 +12643,7 @@ could be very helpful.
@cindex logical expressions, comparing
Use of @code{.EQ.} and @code{.NE.} on @code{LOGICAL} operands
is not supported, except via @samp{-fugly}, which is not
is not supported, except via @samp{-fugly-logint}, which is not
recommended except for legacy code (where the behavior expected
by the @emph{code} is assumed).
@ -12683,6 +12701,20 @@ that were well-designed in the first place.
you, without knowing more context, whether the @samp{&} and @samp{-}
operators are infix (binary) or unary!)
Most dangerous of all is the fact that,
even assuming consensus on its meaning,
an expression like @samp{L.AND.M.EQ.N},
if it is the result of a typographical error,
doesn't @emph{look} like it has such a typo.
Even experienced Fortran programmers would not likely notice that
@samp{L.AND.M.EQV.N} was, in fact, intended.
So, this is a prime example of a circumstance in which
a quality compiler diagnoses the code,
instead of leaving it up to someone debugging it
to know to turn on special compiler options
that might diagnose it.
@node Order of Side Effects
@subsection Order of Side Effects
@cindex side effects, order of evaluation
@ -13539,13 +13571,13 @@ when compiling most any kind of program.
which is used during the build of @code{gcc} to
build a list of all options that are accepted by
at least one language's compiler.
This list goes into the @samp{lang_options} array
This list goes into the @code{lang_options} array
in @file{gcc/toplev.c}, which uses this array to
determine whether a particular option should be
offered to the linked-in front end for processing
by calling @samp{lang_option_decode}, which, for
by calling @code{lang_option_decode}, which, for
@code{g77}, is in @file{@value{path-g77}/com.c} and just
calls @samp{ffe_decode_option}.
calls @code{ffe_decode_option}.
If the linked-in front end ``rejects'' a
particular option passed to it, @file{toplev.c}
@ -13555,7 +13587,7 @@ language's compiler is willing to accept it.
This allows commands like @samp{gcc -fno-asm foo.c bar.f}
to work, even though Fortran compilation does
not currently support the @samp{-fno-asm} option;
even though the @code{f771} version of @samp{lang_decode_option}
even though the @code{f771} version of @code{lang_decode_option}
rejects @samp{-fno-asm}, @file{toplev.c} doesn't
produce a diagnostic because some other language (C)
does accept it.
@ -13568,7 +13600,7 @@ a warning about this would be helpful if it were
possible.
Code that processes Fortran options is found in
@file{@value{path-g77}/top.c}, function @samp{ffe_decode_option}.
@file{@value{path-g77}/top.c}, function @code{ffe_decode_option}.
This code needs to check positive and negative forms
of each option.
@ -13588,9 +13620,9 @@ Accessor macros for Fortran options, used by code
in the @code{g77} FFE, are defined in @file{@value{path-g77}/top.h}.
@emph{Compiler options} are listed in @file{gcc/toplev.c}
in the array @samp{f_options}.
An option not listed in @samp{lang_options} is
looked up in @samp{f_options} and handled from there.
in the array @code{f_options}.
An option not listed in @code{lang_options} is
looked up in @code{f_options} and handled from there.
The defaults for compiler options are set in the
global definitions for the corresponding variables,
@ -13608,7 +13640,7 @@ Change the way @code{f771} handles the @samp{-fset-g77-defaults}
option, which is always provided as the first option when
called by @code{g77} or @code{gcc}.
This code is in @samp{ffe_decode_options} in @file{@value{path-g77}/top.c}.
This code is in @code{ffe_decode_options} in @file{@value{path-g77}/top.c}.
Have it change just the variables that you want to default
to a different setting for Fortran compiles compared to
compiles of other languages.
@ -13630,7 +13662,7 @@ are passed via this mechanism.
@item EGCS-1.1
@itemx EGCS-1.2
Change the @samp{lang_init_options} routine in @file{egcs/gcc/f/com.c}.
Change the @code{lang_init_options} routine in @file{egcs/gcc/f/com.c}.
(Note that these versions of @code{g77}
perform internal consistency checking automatically
@ -13670,7 +13702,7 @@ them show up only given certain kinds of (popular) input.
@itemize @bullet
@item
Improve @samp{malloc} package and its uses to specify more info about
Improve @code{malloc} package and its uses to specify more info about
memory pools and, where feasible, use obstacks to implement them.
@item
@ -13697,11 +13729,11 @@ unimplemented-statement catch-all.
@item
Throughout @code{g77}, don't pass line/column pairs where
a simple @samp{ffewhere} type, which points to the error as much as is
desired by the configuration, will do, and don't pass @samp{ffelexToken} types
where a simple @samp{ffewhere} type will do.
a simple @code{ffewhere} type, which points to the error as much as is
desired by the configuration, will do, and don't pass @code{ffelexToken} types
where a simple @code{ffewhere} type will do.
Then, allow new default
configuration of @samp{ffewhere} such that the source line text is not
configuration of @code{ffewhere} such that the source line text is not
preserved, and leave it to things like Emacs' next-error function
to point to them (now that @samp{next-error} supports column,
or, perhaps, character-offset, numbers).
@ -13751,7 +13783,7 @@ that are at all worth inlining.
@item
When doing @samp{CHAR_VAR = CHAR_FUNC(@dots{})},
and it's clear that types line up
and @samp{CHAR_VAR} is addressable or not a @samp{VAR_DECL},
and @samp{CHAR_VAR} is addressable or not a @code{VAR_DECL},
make @samp{CHAR_VAR}, not a
temporary, be the receiver for @samp{CHAR_FUNC}.
(This is now done for @code{COMPLEX} variables.)
@ -13799,7 +13831,7 @@ external names for @code{COMPLEX} functions in some cases once @code{g77} uses
@code{gcc} rather than @code{f2c} calling conventions.)
@item
Do something useful with @samp{doiter} references where possible.
Do something useful with @code{doiter} references where possible.
For example, @samp{CALL FOO(I)} cannot modify @samp{I} if within
a @code{DO} loop that uses @samp{I} as the
iteration variable, and the back end might find that info useful
@ -13963,7 +13995,7 @@ provides it via its configuration.
@itemize @bullet
@item
Switch to using @samp{REAL_VALUE_TYPE} to represent floating-point constants
Switch to using @code{REAL_VALUE_TYPE} to represent floating-point constants
exclusively so the target float format need not be required.
This
means changing the way @code{g77} handles initialization of aggregate areas
@ -14016,13 +14048,13 @@ Come up with better naming conventions for @samp{-D} to establish requirements
to achieve desired implementation dialect via @file{proj.h}.
@item
Clean up used tokens and @samp{ffewhere}s in @samp{ffeglobal_terminate_1}.
Clean up used tokens and @code{ffewhere}s in @code{ffeglobal_terminate_1}.
@item
Replace @file{sta.c} @samp{outpooldisp} mechanism with @samp{malloc_pool_use}.
Replace @file{sta.c} @code{outpooldisp} mechanism with @code{malloc_pool_use}.
@item
Check for @samp{opANY} in more places in @file{com.c}, @file{std.c},
Check for @code{opANY} in more places in @file{com.c}, @file{std.c},
and @file{ste.c}, and get rid of the @samp{opCONVERT(opANY)} kludge
(after determining if there is indeed no real need for it).
@ -14064,22 +14096,22 @@ to the official standard, or put documentation of the rules as used
in the code@dots{}uh@dots{}in the code.
@item
Some @samp{ffebld_new} calls (those outside of @file{ffeexpr.c} or
inside but invoked via paths not involving @samp{ffeexpr_lhs} or
@samp{ffeexpr_rhs}) might be creating things
Some @code{ffebld_new} calls (those outside of @file{ffeexpr.c} or
inside but invoked via paths not involving @code{ffeexpr_lhs} or
@code{ffeexpr_rhs}) might be creating things
in improper pools, leading to such things staying around too long or
(doubtful, but possible and dangerous) not long enough.
@item
Some @samp{ffebld_list_new} (or whatever) calls might not be matched by
@samp{ffebld_list_bottom} (or whatever) calls, which might someday matter.
Some @code{ffebld_list_new} (or whatever) calls might not be matched by
@code{ffebld_list_bottom} (or whatever) calls, which might someday matter.
(It definitely is not a problem just yet.)
@item
Probably not doing clean things when we fail to @code{EQUIVALENCE} something
due to alignment/mismatch or other problems---they end up without
@samp{ffestorag} objects, so maybe the backend (and other parts of the front
end) can notice that and handle like an @samp{opANY} (do what it wants, just
@code{ffestorag} objects, so maybe the backend (and other parts of the front
end) can notice that and handle like an @code{opANY} (do what it wants, just
don't complain or crash).
Most of this seems to have been addressed
by now, but a code review wouldn't hurt.
@ -14097,7 +14129,7 @@ clutter.
@item
When @code{FUNCTION} and @code{ENTRY} point types disagree (@code{CHARACTER}
lengths, type classes, and so on),
@samp{ANY}-ize the offending @code{ENTRY} point and any @emph{new} dummies
@code{ANY}-ize the offending @code{ENTRY} point and any @emph{new} dummies
it specifies.
@item
@ -14166,7 +14198,7 @@ as the above is just a sample, no such section exists.
* INTGLOB:: Intrinsic also used as name of global.
* LEX:: Various lexer messages
* GLOBALS:: Disagreements about globals.
* LINKFAIL:: When linking @samp{f771} fails.
* LINKFAIL:: When linking @code{f771} fails.
* Y2KBAD:: Use of non-Y2K-compliant intrinsic.
@end menu
@ -14285,8 +14317,8 @@ expects the Fortran 90 interpretation, you can:
@itemize @bullet
@item
Change it to @samp{DBLE(@var{expr})} (if @var{intrinsic} is
@samp{REAL}) or @samp{DIMAG(@var{expr})} (if @var{intrinsic}
is @samp{AIMAG})
@code{REAL}) or @samp{DIMAG(@var{expr})} (if @var{intrinsic}
is @code{AIMAG})
if it expected the Fortran 90 interpretation.
This assumes @var{expr} is @code{COMPLEX(KIND=2)}---if it is
@ -14574,13 +14606,13 @@ C On XYZZY systems, remove "C" on next line:
CALL XYZZY_RESET
@end smallexample
However, that leaves the first @samp{C} in the @samp{CALL}
However, that leaves the first @samp{C} in the @code{CALL}
statement in column 6, making it a comment line, which is
not really what the author intended, and which is likely
to result in one of the above-listed diagnostics.
@emph{Replacing} the @samp{C} in column 1 with a space
is the proper change to make, to ensure the @samp{CALL}
is the proper change to make, to ensure the @code{CALL}
keyword starts in or after column 7.
Another common mistake like this is to forget that fixed-form

View File

@ -423,9 +423,9 @@ These problems can occur on most or all systems.
* GNU C Required:: Why even ANSI C is not enough.
* Patching GNU CC:: Why @code{gcc} needn't be patched.
* Building GNU CC Necessary:: Why you can't build @emph{just} Fortran.
* Missing strtoul or bsearch:: When linking @samp{f771} fails.
* Missing strtoul or bsearch:: When linking @code{f771} fails.
* Cleanup Kills Stage Directories:: For @code{g77} developers.
* LANGUAGES Macro Ignored:: Sometimes @samp{LANGUAGES} is ignored.
* LANGUAGES Macro Ignored:: Sometimes @code{LANGUAGES} is ignored.
@end menu
@node GNU C Required
@ -490,11 +490,11 @@ This information does not apply to the
@ifclear OMIT-FSF-G77
On SunOS4 systems, linking the @code{f771} program used to
produce an error message concerning an undefined symbol named
@samp{_strtoul}, because the @samp{strtoul} library function
@samp{_strtoul}, because the @code{strtoul} library function
is not provided on that system.
Other systems have, in the past, been reported to not provide
their own @samp{strtoul} or @samp{bsearch} function.
their own @code{strtoul} or @code{bsearch} function.
Some versions @code{g77} tried to default to providing bare-bones
versions of @code{bsearch} and @code{strtoul} automatically,
@ -504,8 +504,8 @@ To limit the failures to those few systems actually missing the
required routines, the bare-bones versions are still provided,
in @file{@value{path-g77}/proj.c},
if the appropriate macros are defined.
These are @code{NEED_BSEARCH} for @samp{bsearch} and
@code{NEED_STRTOUL} for @samp{NEED_STRTOUL}.
These are @code{NEED_BSEARCH} for @code{bsearch} and
@code{NEED_STRTOUL} for @code{NEED_STRTOUL}.
Therefore, if you are sure your system is missing
@code{bsearch} or @code{strtoul} in its library,
@ -530,8 +530,8 @@ make bootstrap BOOT_CFLAGS='-O2 -g -DNEED_STRTOUL'
@end smallexample
If you then encounter problems compiling @file{@value{path-g77}/proj.c},
it might be due to a discrepancy between how @samp{bsearch}
or @samp{strtoul} are defined by that file and how they're
it might be due to a discrepancy between how @code{bsearch}
or @code{strtoul} are defined by that file and how they're
declared by your system's header files.
In that case, you'll have to use some basic knowledge of C
@ -559,14 +559,14 @@ that, on demand.
@node LANGUAGES Macro Ignored
@subsubsection LANGUAGES Macro Ignored
@cindex @samp{LANGUAGES} macro ignored
@cindex ignoring @samp{LANGUAGES} macro
@cindex @code{LANGUAGES} macro ignored
@cindex ignoring @code{LANGUAGES} macro
Prior to version 0.5.23 of @code{g77}
and version 1.1 of @code{egcs},
@code{g77} would sometimes ignore
the absence of @samp{f77} and @samp{F77} in the
@samp{LANGUAGES} macro definition used for the
the absence of @code{f77} and @code{F77} in the
@code{LANGUAGES} macro definition used for the
@code{make} command being processed.
As of @code{g77} version 0.5.23
@ -580,7 +580,7 @@ such as @code{g++},
are known to go ahead and perform various
language-specific activities when their
respective language strings do not appear
in the @samp{LANGUAGES} macro in effect
in the @code{LANGUAGES} macro in effect
during that invocation of @code{make}.
It is expected that these remaining problems will
@ -669,7 +669,7 @@ As such, none of the following information is expected to
be pertinent in future versions of @code{g77}.
@menu
* Larger File Unit Numbers:: Raising @samp{MXUNIT}.
* Larger File Unit Numbers:: Raising @code{MXUNIT}.
* Always Flush Output:: Synchronizing write errors.
* Maximum Stackable Size:: Large arrays forced off the stack.
* Floating-point Bit Patterns:: Possible programs building @code{g77}
@ -697,7 +697,7 @@ a run-time crash in @code{libf2c}, because the unit number,
If you know that Fortran programs at your installation require
the use of unit numbers higher than 99, you can change the
value of the @samp{MXUNIT} macro, which represents the maximum unit
value of the @code{MXUNIT} macro, which represents the maximum unit
number, to an appropriately higher value.
To do this, edit the file @file{@value{path-libf2c}/libI77/fio.h} in your
@ -707,12 +707,12 @@ To do this, edit the file @file{@value{path-libf2c}/libI77/fio.h} in your
#define MXUNIT 100
@end example
Change the line so that the value of @samp{MXUNIT} is defined to be
Change the line so that the value of @code{MXUNIT} is defined to be
at least one @emph{greater} than the maximum unit number used by
the Fortran programs on your system.
(For example, a program that does @samp{WRITE (UNIT=255)} would require
@samp{MXUNIT} set to at least 256 to avoid crashing.)
@code{MXUNIT} set to at least 256 to avoid crashing.)
Then build or rebuild @code{g77} as appropriate.
@ -753,7 +753,7 @@ asynchronous, or, more precisely, buffered error reporting
(detection of errors might be delayed).
@code{libg2c} supports flagging write errors immediately when
it is built with the @samp{ALWAYS_FLUSH} macro defined.
it is built with the @code{ALWAYS_FLUSH} macro defined.
This results in a @code{libg2c} that runs slower, sometimes
quite a bit slower, under certain circumstances---for example,
accessing files via the networked file system NFS---but the
@ -763,7 +763,7 @@ If you know that Fortran programs requiring this level of precision
of error reporting are to be compiled using the
version of @code{g77} you are building, you might wish to
modify the @code{g77} source tree so that the version of
@code{libg2c} is built with the @samp{ALWAYS_FLUSH} macro
@code{libg2c} is built with the @code{ALWAYS_FLUSH} macro
defined, enabling this behavior.
To do this, find this line in @file{@value{path-libf2c}/f2c.h} in
@ -788,7 +788,7 @@ Then build or rebuild @code{g77} as appropriate.
@cindex segmentation violation
@code{g77}, on most machines, puts many variables and arrays on the stack
where possible, and can be configured (by changing
@samp{FFECOM_sizeMAXSTACKITEM} in @file{@value{path-g77}/com.c}) to force
@code{FFECOM_sizeMAXSTACKITEM} in @file{@value{path-g77}/com.c}) to force
smaller-sized entities into static storage (saving
on stack space) or permit larger-sized entities to be put on the
stack (which can improve run-time performance, as it presents
@ -796,7 +796,7 @@ more opportunities for the GBE to optimize the generated code).
@emph{Note:} Putting more variables and arrays on the stack
might cause problems due to system-dependent limits on stack size.
Also, the value of @samp{FFECOM_sizeMAXSTACKITEM} has no
Also, the value of @code{FFECOM_sizeMAXSTACKITEM} has no
effect on automatic variables and arrays.
@xref{But-bugs}, for more information.
@ -837,7 +837,7 @@ This size currently is quite small, since @code{g77}
currently has a known bug requiring too much memory
and time to handle such cases.
In @file{@value{path-g77}/data.c}, the macro
@samp{FFEDATA_sizeTOO_BIG_INIT_} is defined
@code{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.
@ -1537,16 +1537,16 @@ issuing an explanatory diagnostic.
@cindex building @code{gcc}
@cindex building @code{g77}
@cindex @samp{LANGUAGES} macro
@cindex @code{LANGUAGES} macro
Building @code{g77} requires building enough of @code{gcc} that
these instructions assume you're going to build all of
@code{gcc}, including @code{g++}, @code{protoize}, and so on.
You can save a little time and disk space by changes the
@samp{LANGUAGES} macro definition in @code{gcc/Makefile.in}
@code{LANGUAGES} macro definition in @code{gcc/Makefile.in}
or @code{gcc/Makefile}, but if you do that, you're on your own.
One change is almost @emph{certainly} going to cause failures:
removing @samp{c} or @samp{f77} from the definition of the
@samp{LANGUAGES} macro.
removing @code{c} or @code{f77} from the definition of the
@code{LANGUAGES} macro.
After configuring @code{gcc}, which configures @code{g77} and
@code{libg2c} automatically, you're ready to start the actual
@ -1785,7 +1785,7 @@ make -k CC=gcc install
As described in @ref{Installation,,Installing GNU CC,
gcc,Using and Porting GNU CC}, the values for
the @samp{CC} and @samp{LANGUAGES} macros should
the @code{CC} and @code{LANGUAGES} macros should
be the same as those you supplied for the build
itself.
@ -1805,7 +1805,7 @@ make -k @dots{} install install-libf77
We don't know why some non-GNU versions of @code{make} sometimes
require this alternate command, but they do.
(Remember to supply the appropriate definition for @samp{CC}
(Remember to supply the appropriate definition for @code{CC}
where you see @samp{@dots{}} in the above command.)
Note that using the @samp{-k} option tells @code{make} to
@ -1939,10 +1939,10 @@ information for the derived files to work around the
problem of not having the appropriate tools installed.
On UNIX systems, the simplest way to update the date-time-modified
information of a file is to use the use the @samp{touch}
information of a file is to use the use the @code{touch}
command.
How to use @samp{touch} to update the derived files
How to use @code{touch} to update the derived files
updated by each of the tools is described below.
@emph{Note:} New versions of @code{g77} might change the set of
files it generates by invoking each of these tools.

View File

@ -59,8 +59,7 @@ FTNOPT( "-fpedantic", "Warn about use of (only a few for now) Fortran extensions
FTNOPT( "-fno-pedantic", "" )
FTNOPT( "-fvxt", "Program is written in VXT (Digital-like) FORTRAN" )
FTNOPT( "-fno-vxt", "" )
FTNOPT( "-fugly", "Obsolete; allow certain ugly features" )
FTNOPT( "-fno-ugly", "" )
FTNOPT( "-fno-ugly", "Disallow all ugly features" )
FTNOPT( "-fugly-args", "" )
FTNOPT( "-fno-ugly-args", "Hollerith and typeless constants not passed as arguments" )
FTNOPT( "-fugly-assign", "Allow ordinary copying of ASSIGN'ed vars" )

View File

@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995-1999
@set last-update-news 1999-04-03
@set last-update-news 1999-04-17
@include root.texi
@ -190,7 +190,7 @@ as if they ended in @samp{.for} and @samp{.fpp}, respectively.
that has an interface that is not Year 2000 (Y2K) compliant.
Also, the @code{libg2c} has been changed to increase the likelihood
of catching references to the implementations of these intrinsics
using the @samp{EXTERNAL} mechanism
using the @code{EXTERNAL} mechanism
(which would avoid the new warnings).
@ifset DOC-G77
@ -205,7 +205,7 @@ disagrees with the reference concerning the type of the function.
@end ifclear
@item
@code{-fno-emulate-complex} is now the default option.
@samp{-fno-emulate-complex} is now the default option.
This should result in improved performance
of code that uses the @code{COMPLEX} data type.
@ -213,15 +213,23 @@ of code that uses the @code{COMPLEX} data type.
@cindex double-precision performance
@cindex -malign-double
@item
The @code{-malign-double} option
The @samp{-malign-double} option
now reliably aligns @emph{all} double-precision variables and arrays
on Intel x86 targets.
@item
Support for the @samp{-fugly} option has been removed.
@ifclear USERVISONLY
@item
Improve documentation and indexing,
including information on Year 2000 (Y2K) compliance.
@end ifclear
@ifclear USERVISONLY
@item
Upgrade to @code{libf2c} as of 1999-03-17.
@end ifclear
@end itemize
@heading In 0.5.24 and @code{egcs} 1.1.2 (versus 0.5.23 and 1.1.1):
@ -230,7 +238,7 @@ including information on Year 2000 (Y2K) compliance.
@item
Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
so the returned year is in the documented, non-Y2K-compliant range
of 0--99,
of 0-99,
instead of being returned as 100 in the year 2000.
@ifset DOC-G77
@ -239,12 +247,12 @@ for more information.
@end ifset
@item
Fix the @samp{Date_and_Time} intrinsic (in @code{libg2c})
Fix the @code{Date_and_Time} intrinsic (in @code{libg2c})
to return the milliseconds value properly
in @var{Values}(8).
@item
Fix the @samp{LStat} intrinsic (in @code{libg2c})
Fix the @code{LStat} intrinsic (in @code{libg2c})
to return device-ID information properly
in @var{SArray}(7).
@ -273,13 +281,13 @@ upon doing any I/O following a direct formatted write.
@item
Fix @code{g77} so it no longer crashes compiling references
to the @samp{Rand} intrinsic on some systems.
to the @code{Rand} intrinsic on some systems.
@item
Fix @code{g77} portion of installation process so it works
better on some systems
(those with shells requiring @samp{else true} clauses
on @samp{if} constructs
on @code{if} constructs
for the completion code to be set properly).
@end itemize
@end ifclear
@ -310,7 +318,7 @@ involving @code{COMPLEX} arithmetic
Fix a code-generation bug that afflicted
Intel x86 targets when @samp{-O2} was specified
compiling, for example, an old version of
the @samp{DNRM2} routine.
the @code{DNRM2} routine.
The x87 coprocessor stack was being
mismanaged in cases involving assigned @code{GOTO}
@ -335,11 +343,11 @@ or given initial values via @code{DATA}.
@itemize @bullet
@ifclear USERVISONLY
@item
Fix bugs in the @code{libU77} intrinsic @samp{HostNm}
that wrote one byte beyond the end of its @samp{CHARACTER}
Fix bugs in the @code{libU77} intrinsic @code{HostNm}
that wrote one byte beyond the end of its @code{CHARACTER}
argument,
and in the @code{libU77} intrinsics
@samp{GMTime} and @samp{LTime}
@code{GMTime} and @code{LTime}
that overwrote their arguments.
@end ifclear
@ -385,7 +393,7 @@ compile-time constant @code{INTEGER} expression.
@item
Fix @code{g77} @samp{-g} option so procedures that
use @samp{ENTRY} can be stepped through, line by line,
use @code{ENTRY} can be stepped through, line by line,
in @code{gdb}.
@item
@ -503,7 +511,7 @@ Improve documentation and indexing.
@item
The upgrade to @code{libf2c} as of 1998-06-18
should fix a variety of problems, including
those involving some uses of the @samp{T} format
those involving some uses of the @code{T} format
specifier, and perhaps some build (porting) problems
as well.
@end ifclear
@ -515,7 +523,7 @@ as well.
@item
@code{g77} no longer produces incorrect code
and initial values
for @samp{EQUIVALENCE} and @samp{COMMON}
for @code{EQUIVALENCE} and @code{COMMON}
aggregates that, due to ``unnatural'' ordering of members
vis-a-vis their types, require initial padding.
@end ifclear
@ -562,20 +570,20 @@ in @code{libf2c} (@code{libg2c}).
This new information allows, for example,
@kbd{which __g77_length_a} to be used in @code{gdb}
to determine the type of the phantom length argument
supplied with @samp{CHARACTER} variables.
supplied with @code{CHARACTER} variables.
This information pertains to internally-generated
type, variable, and other information,
not to the longstanding deficiencies vis-a-vis
@samp{COMMON} and @samp{EQUIVALENCE}.
@code{COMMON} and @code{EQUIVALENCE}.
@item
The F90 @samp{Date_and_Time} intrinsic now is
The F90 @code{Date_and_Time} intrinsic now is
supported.
@item
The F90 @samp{System_Clock} intrinsic allows
the optional arguments (except for the @samp{Count}
The F90 @code{System_Clock} intrinsic allows
the optional arguments (except for the @code{Count}
argument) to be omitted.
@ifclear USERVISONLY
@ -617,7 +625,7 @@ of @code{g77} due to their being implemented
via @code{g77}-specific patches to the @code{gcc}
back end in previous releases include:
@itemize --
@itemize @minus
@item
Support for @code{__restrict__} keyword,
the options @samp{-fargument-alias}, @samp{-fargument-noalias},
@ -659,11 +667,11 @@ including patches for the @code{gcc} back end.
@ifclear USERVISONLY
@item
Fix bugs in the @code{libU77} intrinsic @samp{HostNm}
that wrote one byte beyond the end of its @samp{CHARACTER}
Fix bugs in the @code{libU77} intrinsic @code{HostNm}
that wrote one byte beyond the end of its @code{CHARACTER}
argument,
and in the @code{libU77} intrinsics
@samp{GMTime} and @samp{LTime}
@code{GMTime} and @code{LTime}
that overwrote their arguments.
@end ifclear
@ -800,7 +808,7 @@ Improve documentation and indexing.
Upgrade to @code{libf2c} as of 1998-04-20.
This should fix a variety of problems, including
those involving some uses of the @samp{T} format
those involving some uses of the @code{T} format
specifier, and perhaps some build (porting) problems
as well.
@end ifclear
@ -826,7 +834,7 @@ For example, @samp{DO 10 J=2,J} now is compiled correctly.
Fix a code-generation bug that afflicted
Intel x86 targets when @samp{-O2} was specified
compiling, for example, an old version of
the @samp{DNRM2} routine.
the @code{DNRM2} routine.
The x87 coprocessor stack was being
mismanaged in cases involving assigned @code{GOTO}
@ -856,7 +864,7 @@ Fix @code{g77} version of @code{libf2c} so it no longer
produces a spurious @samp{I/O recursion} diagnostic at run time
when an I/O operation (such as @samp{READ *,I}) is interrupted
in a manner that causes the program to be terminated
via the @samp{f_exit} routine (such as via @kbd{C-c}).
via the @code{f_exit} routine (such as via @kbd{C-c}).
@end ifclear
@ifclear USERVISONLY
@ -898,7 +906,7 @@ compile-time constant @code{INTEGER} expression.
@item
Fix @code{g77} @samp{-g} option so procedures that
use @samp{ENTRY} can be stepped through, line by line,
use @code{ENTRY} can be stepped through, line by line,
in @code{gdb}.
@ifclear USERVISONLY
@ -1070,7 +1078,7 @@ of @code{g77} due to their being implemented
via @code{g77}-specific patches to the @code{gcc}
back end in previous releases include:
@itemize --
@itemize @minus
@item
Support for the C-language @code{restrict} keyword.
@ -1233,8 +1241,8 @@ or assigned-@code{GOTO} statement.
@ifclear USERVISONLY
@item
Fix compiler crashes due to using the name of a some
non-standard intrinsics (such as @samp{FTELL} or
@samp{FPUTC}) as such and as the name of a procedure
non-standard intrinsics (such as @code{FTell} or
@code{FPutC}) as such and as the name of a procedure
or common block.
Such dual use of a name in a program is allowed by
the standard.
@ -1251,19 +1259,19 @@ the standard.
@c
@c For example, the intrinsic @code{FPUTC} previously was
@c implemented by @code{g77} as a call to the @code{libf2c}
@c routine @samp{fputc_}.
@c routine @code{fputc_}.
@c This would conflict with a Fortran procedure named @code{FPUTC}
@c (using default compiler options), and this conflict
@c would cause a crash under certain circumstances.
@c
@c Now, the intrinsic @code{FPUTC} calls @samp{G77_fputc_0},
@c which does not conflict with the @samp{fputc_} external
@c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
@c which does not conflict with the @code{fputc_} external
@c that implements a Fortran procedure named @code{FPUTC}.
@c
@c Programs that refer to @code{FPUTC} as an external procedure
@c without supplying their own implementation will link to
@c the new @code{libf2c} routine @samp{fputc_}, which is
@c simply a jacket routine that calls @samp{G77_fputc_0}.
@c the new @code{libf2c} routine @code{fputc_}, which is
@c simply a jacket routine that calls @code{G77_fputc_0}.
@ifclear USERVISONLY
@item
@ -1370,7 +1378,7 @@ that have embedded blanks, commas, and so on.
@item
Fix @code{SIGNAL} intrinsic so it accepts an
optional third @samp{Status} argument.
optional third @code{Status} argument.
@ifclear USERVISONLY
@item
@ -1478,7 +1486,7 @@ Support @samp{*f771} entry in @code{gcc} @file{specs} file.
@ifclear USERVISONLY
@item
Fix typo in @code{make} rule @samp{g77-cross}, used only for
Fix typo in @code{make} rule @code{g77-cross}, used only for
cross-compiling.
@end ifclear
@ -1600,12 +1608,12 @@ statements specifying that these names are not intended
to be names of intrinsics.
@item
The @samp{ALWAYS_FLUSH} macro is no longer defined when
The @code{ALWAYS_FLUSH} macro is no longer defined when
building @code{libf2c}, which should result in improved
I/O performance, especially over NFS.
@emph{Note:} If you have code that depends on the behavior
of @code{libf2c} when built with @samp{ALWAYS_FLUSH} defined,
of @code{libf2c} when built with @code{ALWAYS_FLUSH} defined,
you will have to modify @code{libf2c} accordingly before
building it from this and future versions of @code{g77}.
@ -1860,10 +1868,10 @@ These are @code{REALPART}, @code{IMAGPART},
@code{LONG}, and @code{SHORT}.
@item
A new group of intrinsics, @samp{gnu}, has been added
A new group of intrinsics, @code{gnu}, has been added
to contain the new @code{REALPART}, @code{IMAGPART},
and @code{COMPLEX} intrinsics.
An old group, @samp{dcp}, has been removed.
An old group, @code{dcp}, has been removed.
@item
Complain about industry-wide ambiguous references
@ -1891,8 +1899,8 @@ a new chapter containing information on one, later
more, diagnostics that users are directed to pull
up automatically via a message in the diagnostic itself.
(Hence the menu item @samp{M} for the node
@samp{Diagnostics} in the top-level menu of
(Hence the menu item @code{M} for the node
@code{Diagnostics} in the top-level menu of
the Info documentation.)
@end ifclear
@end itemize
@ -1902,7 +1910,7 @@ the Info documentation.)
Information on previous versions is archived
in @file{@value{path-g77}/news.texi}
following the test of the @samp{DOC-OLDNEWS} macro.
following the test of the @code{DOC-OLDNEWS} macro.
@end ifclear
@ifset DOC-OLDNEWS
@ -1917,14 +1925,14 @@ These bugs occurred when assigning the result of an
operation to a complex variable (or array element)
that also served as an input to that operation.
The operations affected by this bug were: @samp{CONJG()},
@samp{DCONJG()}, @samp{CCOS()}, @samp{CDCOS()},
@samp{CLOG()}, @samp{CDLOG()}, @samp{CSIN()}, @samp{CDSIN()},
@samp{CSQRT()}, @samp{CDSQRT()}, complex division, and
The operations affected by this bug were: @code{CONJG()},
@code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
@code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
@code{CSQRT()}, @code{CDSQRT()}, complex division, and
raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
power.
(The related generic and @samp{Z}-prefixed intrinsics,
such as @samp{ZSIN()}, also were affected.)
such as @code{ZSIN()}, also were affected.)
For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
(where @samp{C} is @code{COMPLEX} and @samp{Z} is
@ -1936,7 +1944,7 @@ For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
@itemize @bullet
@item
Fix @code{FORMAT} statement parsing so negative values for
specifiers such as @samp{P} (e.g. @samp{FORMAT(-1PF8.1)})
specifiers such as @code{P} (e.g. @samp{FORMAT(-1PF8.1)})
are correctly processed as negative.
@item
@ -2020,7 +2028,7 @@ procedures in @code{libf2c}.
@item
Modify @code{fseek_()} in @code{libf2c} to be more portable
(though, in practice, there might be no systems where this
matters) and to catch invalid @samp{whence} arguments.
matters) and to catch invalid @code{whence} arguments.
@item
Some useless warnings from the @samp{-Wunused} option have
@ -2032,7 +2040,7 @@ on AIX systems by linking with the @samp{-bbigtoc} option.
@item
Abort configuration if @code{gcc} has not been patched
using the patch file provided in the @samp{gcc/f/gbe/}
using the patch file provided in the @file{gcc/f/gbe/}
subdirectory.
@item
@ -2244,7 +2252,7 @@ maintainer's new address is @email{dmg@@bell-labs.com}.
@itemize @bullet
@item
@strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a
system's @file{/dev/null} special file if run by user @samp{root}.
system's @file{/dev/null} special file if run by user @code{root}.
@strong{All users} of version 0.5.16 should ensure that
they have not removed @file{/dev/null} or replaced it with an ordinary
@ -2283,7 +2291,7 @@ never happen).
@item
Make @code{libf2c} build procedures work on more systems again by
eliminating unnecessary invocations of @samp{ld -r -x} and @samp{mv}.
eliminating unnecessary invocations of @samp{ld -r -x} and @code{mv}.
@item
Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted
@ -2362,7 +2370,7 @@ This is known to fix code invoking @code{ERF()}, @code{ERFC()},
@item
Update @code{libf2c} to include netlib patches through 1995-08-16, and
@code{#define} @samp{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
@code{#define} @code{WANT_LEAD_0} to 1 to make @code{g77}-compiled code more
consistent with other Fortran implementations by outputting
leading zeros in formatted and list-directed output.
@ -2444,12 +2452,12 @@ and @code{SYSTEM}, append a final argument specifying an @code{INTEGER}
variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
@item
Add new intrinsic group named @samp{unix} to contain the new intrinsics,
Add new intrinsic group named @code{unix} to contain the new intrinsics,
and by default enable this new group.
@item
Move @code{LOC()} intrinsic out of the @samp{vxt} group to the new
@samp{unix} group.
Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
@code{unix} group.
@item
Improve @code{g77} so that @samp{g77 -v} by itself (or with
@ -2706,7 +2714,7 @@ Allow @code{RETURN} in main program unit.
Changes to Hollerith-constant support to obey Appendix C of the
standard:
@itemize --
@itemize @minus
@item
Now padded on the right with zeros, not spaces.
@ -2734,7 +2742,7 @@ to widen to @code{INTEGER}), essentially.
@item
Changes and fixes to typeless-constant support:
@itemize --
@itemize @minus
@item
Now treated as a typeless double-length @code{INTEGER} value.

View File

@ -235,18 +235,6 @@ ffe_decode_option (argc, argv)
warning ("%s no longer supported -- try -fvxt", opt);
else if (strcmp (&opt[2], "f90-not-vxt") == 0)
warning ("%s no longer supported -- try -fno-vxt -ff90", opt);
else if (strcmp (&opt[2], "ugly") == 0)
{
warning ("%s is overloaded with meanings and likely to be removed;", opt);
warning ("use only the specific -fugly-* options you need");
ffe_set_is_ugly_args (TRUE);
ffe_set_is_ugly_assign (TRUE);
ffe_set_is_ugly_assumed (TRUE);
ffe_set_is_ugly_comma (TRUE);
ffe_set_is_ugly_complex (TRUE);
ffe_set_is_ugly_init (TRUE);
ffe_set_is_ugly_logint (TRUE);
}
else if (strcmp (&opt[2], "no-ugly") == 0)
{
ffe_set_is_ugly_args (FALSE);