Commit 4e6a1440 by Craig Burley Committed by Craig Burley

remove -fugly, other doc fixes

From-SVN: r26519
parent 8a19a44a
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> Sat Apr 17 14:05:53 1999 Craig Burley <craig@jcb-sc.com>
Make a place for front-end internals documentation: Make a place for front-end internals documentation:
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. BUGS). @c in the standalone derivations of this file (e.g. BUGS).
@set copyrights-bugs 1995-1999 @set copyrights-bugs 1995-1999
@set last-update-bugs 1999-04-03 @set last-update-bugs 1999-04-17
@include root.texi @include root.texi
...@@ -111,8 +111,8 @@ e.g. not passed to other procedures as they should be. ...@@ -111,8 +111,8 @@ e.g. not passed to other procedures as they should be.
@code{g77} fails to warn about @code{g77} fails to warn about
use of a ``live'' iterative-DO variable use of a ``live'' iterative-DO variable
as an implied-DO variable as an implied-DO variable
in a @samp{WRITE} or @samp{PRINT} statement in a @code{WRITE} or @code{PRINT} statement
(although it does warn about this in a @samp{READ} statement). (although it does warn about this in a @code{READ} statement).
@item @item
Something about @code{g77}'s straightforward handling of Something about @code{g77}'s straightforward handling of
...@@ -210,8 +210,8 @@ for information on the @samp{-fdebug-kludge} option. ...@@ -210,8 +210,8 @@ for information on the @samp{-fdebug-kludge} option.
@item @item
When debugging, after starting up the debugger but before being able 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 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 set a breakpoint at @code{MAIN__} (or @code{MAIN___} or @code{MAIN_} if
@samp{MAIN__} doesn't exist) @code{MAIN__} doesn't exist)
and run the program until it hits the breakpoint. and run the program until it hits the breakpoint.
At that point, the At that point, the
main program unit is activated and about to execute its first main program unit is activated and about to execute its first
......
@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 @node Front End
@chapter Front End @chapter Front End
@cindex GNU Fortran Front End (FFE) @cindex GNU Fortran Front End (FFE)
...@@ -375,7 +379,7 @@ Whether @samp{Y} and @samp{Z} are local variables, ...@@ -375,7 +379,7 @@ Whether @samp{Y} and @samp{Z} are local variables,
additional function entry points, additional function entry points,
or dummy arguments to additional entry points or dummy arguments to additional entry points
is not known is not known
until the @samp{ENTRY} statement is parsed. until the @code{ENTRY} statement is parsed.
@item @item
Similarly, whether @samp{TMP} is a local variable is not known Similarly, whether @samp{TMP} is a local variable is not known
...@@ -383,7 +387,7 @@ until the @samp{READ *, TMP} statement is parsed. ...@@ -383,7 +387,7 @@ until the @samp{READ *, TMP} statement is parsed.
@item @item
The initial values for @samp{EE} and @samp{PI} 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 @item
Whether @samp{FRED} is a function returning type @code{REAL} Whether @samp{FRED} is a function returning type @code{REAL}
...@@ -404,7 +408,7 @@ especially when @code{ASSIGN}'ed.) ...@@ -404,7 +408,7 @@ especially when @code{ASSIGN}'ed.)
@item @item
That @samp{J} is a local variable is not known 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.) (This happens @emph{after} executable code has been seen.)
@end itemize @end itemize
...@@ -678,17 +682,17 @@ END ...@@ -678,17 +682,17 @@ END
The arguments to the two calls to @samp{LFUNC} The arguments to the two calls to @samp{LFUNC}
require dynamic allocation (at run time), 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 So, the scopes of those temporaries must be within blocks inside
the block corresponding to the Fortran @code{IF} block. the block corresponding to the Fortran @code{IF} block.
This cannot be represented ``naturally'' This cannot be represented ``naturally''
in vanilla C, nor in GBEL. in vanilla C, nor in GBEL.
The @samp{if}, @samp{elseif}, @samp{else}, The @code{if}, @code{elseif}, @code{else},
and @samp{endif} constructs and @code{endif} constructs
provided by both languages must, provided by both languages must,
for a given @samp{if} block, for a given @code{if} block,
share the same C/GBE block. share the same C/GBE block.
Therefore, any temporaries needed during evaluation of @samp{expr} Therefore, any temporaries needed during evaluation of @samp{expr}
...@@ -793,7 +797,7 @@ as if @samp{SELECT CASE(temp0)} had been written. ...@@ -793,7 +797,7 @@ as if @samp{SELECT CASE(temp0)} had been written.
Each corresponding @code{CASE} is replaced with @samp{CASE(@var{i})}, Each corresponding @code{CASE} is replaced with @samp{CASE(@var{i})},
where @var{i} is the ordinal for that case, where @var{i} is the ordinal for that case,
determined while, or before, 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. to cope with @code{CHARACTER} selection.
@item @item
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
@c %**start of header @c %**start of header
@setfilename g77.info @setfilename g77.info
@set last-update 1999-04-03 @set last-update 1999-04-17
@set copyrights-g77 1995-1999 @set copyrights-g77 1995-1999
@include root.texi @include root.texi
...@@ -1388,7 +1388,7 @@ by type. Explanations are in the following sections. ...@@ -1388,7 +1388,7 @@ by type. Explanations are in the following sections.
@item Shorthand Options @item Shorthand Options
@xref{Shorthand Options}. @xref{Shorthand Options}.
@smallexample @smallexample
-ff66 -fno-f66 -ff77 -fno-f77 -fugly -fno-ugly -ff66 -fno-f66 -ff77 -fno-f77 -fno-ugly
@end smallexample @end smallexample
@item Fortran Language Options @item Fortran Language Options
...@@ -1529,7 +1529,7 @@ Fortran source code that should not be preprocessed. ...@@ -1529,7 +1529,7 @@ Fortran source code that should not be preprocessed.
Such source code cannot contain any preprocessor directives, such Such source code cannot contain any preprocessor directives, such
as @code{#include}, @code{#define}, @code{#if}, and so on. 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}. @samp{-x f77-cpp-input}.
@xref{LEX}. @xref{LEX}.
...@@ -1656,7 +1656,7 @@ and when the resulting commands compile Fortran source files. ...@@ -1656,7 +1656,7 @@ and when the resulting commands compile Fortran source files.
This option is obsolete in @code{egcs} This option is obsolete in @code{egcs}
as of version 1.1. as of version 1.1.
The effect is instead achieved 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}. in @file{egcs/gcc/f/com.c}.
@cindex consistency checks @cindex consistency checks
...@@ -1720,6 +1720,10 @@ for other options accepted by the compiler: ...@@ -1720,6 +1720,10 @@ for other options accepted by the compiler:
@item -fugly @item -fugly
@cindex ugly features @cindex ugly features
@cindex features, ugly @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. Specify that certain ``ugly'' constructs are to be quietly accepted.
Same as: Same as:
...@@ -1734,14 +1738,6 @@ or well-maintained portable Fortran code, but widely used ...@@ -1734,14 +1738,6 @@ or well-maintained portable Fortran code, but widely used
in old code. in old code.
@xref{Distensions}, for more information. @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 -fno-ugly option
@cindex options, -fno-ugly @cindex options, -fno-ugly
@item -fno-ugly @item -fno-ugly
...@@ -2733,7 +2729,7 @@ some machines, but might slow down a program that doesn't. ...@@ -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 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 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 tries to remove the extra precision by spilling data from floating-point
registers into memory and this typically involves a big performance registers into memory and this typically involves a big performance
hit. However, it doesn't affect intermediate results, so that it is 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 ...@@ -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. @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 Probably improves performance on code using @code{DO WHILE} loops by
unrolling them in addition to iterative @code{DO} loops. In the absence 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. but possibly slower.
@item -fno-move-all-movables @item -fno-move-all-movables
...@@ -3877,7 +3873,7 @@ For example: @samp{PRINT *, 'My name is Bob'}. ...@@ -3877,7 +3873,7 @@ For example: @samp{PRINT *, 'My name is Bob'}.
@item @item
A metasyntactic variable---that is, a name used in this document A metasyntactic variable---that is, a name used in this document
to serve as a placeholder for whatever text is used by the 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 ``The @code{INTEGER @var{ivar}} statement specifies that
@var{ivar} is a variable or array of type @code{INTEGER}.'' @var{ivar} is a variable or array of type @code{INTEGER}.''
...@@ -5666,7 +5662,7 @@ These disagreements strongly suggest that Fortran programmers, ...@@ -5666,7 +5662,7 @@ These disagreements strongly suggest that Fortran programmers,
and certainly existing Fortran programs, disagree about the and certainly existing Fortran programs, disagree about the
meaning of such invocations. 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 treatment of @samp{INT(I1-I2)} where @samp{I1} and @samp{I2} are
@code{INTEGER*2}. @code{INTEGER*2}.
In such a case, these compilers apparently convert both In such a case, these compilers apparently convert both
...@@ -5678,7 +5674,7 @@ However, the results of the careful analyses done on the outputs ...@@ -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 of programs compiled by these various compilers show that they
all implement either @samp{Interp 1} or @samp{Interp 2} above. 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: above will confirm that:
@itemize @bullet @itemize @bullet
...@@ -6396,7 +6392,7 @@ but that seems to be overkill for a product in beta test. ...@@ -6396,7 +6392,7 @@ but that seems to be overkill for a product in beta test.
Note 2: Rules for InitialCaps names are: Note 2: Rules for InitialCaps names are:
@itemize -- @itemize @minus
@item @item
Must be a single uppercase letter, @strong{or} Must be a single uppercase letter, @strong{or}
@item @item
...@@ -6409,7 +6405,7 @@ valid InitialCaps names, but @samp{AB}, @samp{A2}, and @samp{ABC} are ...@@ -6409,7 +6405,7 @@ valid InitialCaps names, but @samp{AB}, @samp{A2}, and @samp{ABC} are
not. not.
Note that most, but not all, built-in names meet these Note that most, but not all, built-in names meet these
requirements---the exceptions are some of the two-letter format 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: Here are the names of the corresponding command-line options:
...@@ -6603,7 +6599,7 @@ meaning is to be assumed. ...@@ -6603,7 +6599,7 @@ meaning is to be assumed.
@code{g77} treats double-quote (@samp{"}) @code{g77} treats double-quote (@samp{"})
as beginning an octal constant of @code{INTEGER(KIND=1)} type 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 The form of this octal constant is
@example @example
...@@ -6614,7 +6610,7 @@ The form of this octal constant is ...@@ -6614,7 +6610,7 @@ The form of this octal constant is
where @var{octal-digits} is a nonempty string of characters in where @var{octal-digits} is a nonempty string of characters in
the set @samp{01234567}. the set @samp{01234567}.
For example, the @code{-fvxt} option permits this: For example, the @samp{-fvxt} option permits this:
@example @example
PRINT *, "20 PRINT *, "20
...@@ -6647,7 +6643,7 @@ a fixed-form source file ...@@ -6647,7 +6643,7 @@ a fixed-form source file
as a continuation character rather than as a continuation character rather than
as the beginning of a comment as the beginning of a comment
(as it does in any other column) (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 The following program, when run, prints a message indicating
whether it is interpreted according to GNU Fortran (and Fortran 90) whether it is interpreted according to GNU Fortran (and Fortran 90)
...@@ -6758,7 +6754,7 @@ provided for by that standard. ...@@ -6758,7 +6754,7 @@ provided for by that standard.
Automatic conversion of numeric Automatic conversion of numeric
expressions to @code{INTEGER(KIND=1)} in contexts such as: expressions to @code{INTEGER(KIND=1)} in contexts such as:
@itemize -- @itemize @minus
@item @item
Array-reference indexes. Array-reference indexes.
@item @item
...@@ -6877,18 +6873,6 @@ portable constructs, are accepted. ...@@ -6877,18 +6873,6 @@ portable constructs, are accepted.
These are humorously referred to as ``distensions'', These are humorously referred to as ``distensions'',
extensions that just plain look ugly in the harsh light of day. 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 @menu
* Ugly Implicit Argument Conversion:: Disabled via @samp{-fno-ugly-args}. * Ugly Implicit Argument Conversion:: Disabled via @samp{-fno-ugly-args}.
* Ugly Assumed-Size Arrays:: Enabled via @samp{-fugly-assumed}. * Ugly Assumed-Size Arrays:: Enabled via @samp{-fugly-assumed}.
...@@ -7182,7 +7166,7 @@ ASSIGN 10 TO I ...@@ -7182,7 +7166,7 @@ ASSIGN 10 TO I
Normally, for portability and improved diagnostics, @code{g77} Normally, for portability and improved diagnostics, @code{g77}
reserves distinct storage for a ``sibling'' of @samp{I}, used reserves distinct storage for a ``sibling'' of @samp{I}, used
only for @code{ASSIGN} statements to that variable (along with 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). statements that reference the variable).
However, some code (that violates the ANSI FORTRAN 77 standard) However, some code (that violates the ANSI FORTRAN 77 standard)
...@@ -7411,15 +7395,15 @@ on at least some systems: ...@@ -7411,15 +7395,15 @@ on at least some systems:
The @code{libg2c} library The @code{libg2c} library
shipped with any @code{g77} that warns shipped with any @code{g77} that warns
about invocation of a non-Y2K-compliant intrinsic 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. of those intrinsics.
This is done so that This is done so that
the @code{libg2c} implementations of these intrinsics the @code{libg2c} implementations of these intrinsics
cannot be directly linked to cannot be directly linked to
as @samp{EXTERNAL} names as @code{EXTERNAL} names
(which normally would avoid the non-Y2K-intrinsic warning). (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 of these renamed procedures
may be linked to may be linked to
by appending the string @samp{_y2kbug} by appending the string @samp{_y2kbug}
...@@ -7435,27 +7419,27 @@ CALL DATE_Y2KBUG (STR) ...@@ -7435,27 +7419,27 @@ CALL DATE_Y2KBUG (STR)
CALL VXTIDATE_Y2KBUG (MM, DD, YY) CALL VXTIDATE_Y2KBUG (MM, DD, YY)
@end smallexample @end smallexample
(Note that the @samp{EXTERNAL} statement (Note that the @code{EXTERNAL} statement
is not actually required, is not actually required,
since the modified names are not recognized as intrinsics since the modified names are not recognized as intrinsics
by the current version of @code{g77}. by the current version of @code{g77}.
But it is shown in this specific case, But it is shown in this specific case,
for purposes of illustration.) 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. causes unresolved references at link time.
For example, @samp{EXTERNAL DATE; CALL DATE(STR)} For example, @samp{EXTERNAL DATE; CALL DATE(STR)}
is normally compiled by @code{g77} is normally compiled by @code{g77}
as, in C, @samp{date_(&str, 20);}. as, in C, @samp{date_(&str, 20);}.
This, in turn, links to the @samp{date_} procedure This, in turn, links to the @code{date_} procedure
in the @samp{libE77} portion of @code{libg2c}, in the @code{libE77} portion of @code{libg2c},
which purposely calls a nonexistent procedure 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, The resulting link-time error is designed, via this name,
to encourage the programmer to look up the to encourage the programmer to look up the
index entries to this portion of the @code{g77} documentation. 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} of invoking procedures in @code{libg2c}
@emph{not} be used. @emph{not} be used.
When used, some of the correctness checking When used, some of the correctness checking
...@@ -7463,7 +7447,7 @@ normally performed by @code{g77} ...@@ -7463,7 +7447,7 @@ normally performed by @code{g77}
is skipped. is skipped.
In particular, it is probably better to use the In particular, it is probably better to use the
@samp{INTRINSIC} method of invoking @code{INTRINSIC} method of invoking
non-Y2K-compliant procedures, non-Y2K-compliant procedures,
so anyone compiling the code so anyone compiling the code
can quickly notice the potential Y2K problems can quickly notice the potential Y2K problems
...@@ -7491,14 +7475,14 @@ So, linking newly-compiled code ...@@ -7491,14 +7475,14 @@ So, linking newly-compiled code
(invoking one of the intrinsics in question) (invoking one of the intrinsics in question)
to an old library to an old library
might yield an unresolved reference might yield an unresolved reference
to @samp{G77_date_y2kbug_0}. to @code{G77_date_y2kbug_0}.
(The old library calls it @samp{G77_date_0}.) (The old library calls it @code{G77_date_0}.)
Similarly, linking previously-compiled code Similarly, linking previously-compiled code
to a new library to a new library
might yield an unresolved reference might yield an unresolved reference
to @samp{G77_vxtidate_0}. to @code{G77_vxtidate_0}.
(The new library calls it @samp{G77_vxtidate_y2kbug_0}.) (The new library calls it @code{G77_vxtidate_y2kbug_0}.)
The proper fix for the above problems The proper fix for the above problems
is to obtain the latest release of @code{g77} is to obtain the latest release of @code{g77}
...@@ -8160,7 +8144,7 @@ options @code{g77} passes by running @samp{g77 -v}. ...@@ -8160,7 +8144,7 @@ options @code{g77} passes by running @samp{g77 -v}.
@pindex f2c @pindex f2c
@cindex cfortran.h @cindex cfortran.h
@cindex Netlib @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 @uref{ftp://ftp.netlib.org/f2c/src}, can be a useful tool when you're
interfacing (linking) Fortran and C@. interfacing (linking) Fortran and C@.
@xref{f2c Skeletons and Prototypes,,Generating Skeletons and Prototypes with @code{f2c}}. @xref{f2c Skeletons and Prototypes,,Generating Skeletons and Prototypes with @code{f2c}}.
...@@ -8187,7 +8171,7 @@ Generally, C code written to link with ...@@ -8187,7 +8171,7 @@ Generally, C code written to link with
called from Fortran---should @samp{#include <g2c.h>} to define the C called from Fortran---should @samp{#include <g2c.h>} to define the C
versions of the Fortran types. versions of the Fortran types.
Don't assume Fortran @code{INTEGER} 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}. @code{integer}, a type defined by @file{g2c.h}.
@file{g2c.h} is installed where @code{gcc} will find it by @file{g2c.h} is installed where @code{gcc} will find it by
default, assuming you use a copy of @code{gcc} compatible with 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 ...@@ -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 interface with an existing library---is to write a file (named, for
example, @file{fred.f}) of dummy Fortran example, @file{fred.f}) of dummy Fortran
skeletons comprising just the declaration of the routine(s) and dummy 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} Then run @code{f2c} on file @file{fred.f} to produce @file{fred.c}
into which you can edit into which you can edit
useful code, confident the calling sequence is correct, at least. useful code, confident the calling sequence is correct, at least.
...@@ -8216,7 +8200,7 @@ as the return type of a @code{REAL} @code{FUNCTION}.) ...@@ -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 @samp{-P} option to generate C prototypes appropriate for calling the
Fortran.@footnote{The files generated like this can also be used for Fortran.@footnote{The files generated like this can also be used for
inter-unit consistency checking of dummy and actual arguments, although 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 or @uref{ftp://ftp.dsm.fordham.edu} is
probably better for this purpose.} probably better for this purpose.}
If the Fortran code containing any If the Fortran code containing any
...@@ -8462,11 +8446,11 @@ described in this section. ...@@ -8462,11 +8446,11 @@ described in this section.
@cindex statements, PROGRAM @cindex statements, PROGRAM
When @code{g77} compiles a main program unit, it gives it the public 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 The @code{libg2c} library has the actual @code{main()} procedure
as is typical of C-based environments, and as is typical of C-based environments, and
it is this procedure that performs some initial start-up 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 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 include a main program unit written in Fortran in your program---it
...@@ -8508,7 +8492,7 @@ Fortran code. ...@@ -8508,7 +8492,7 @@ Fortran code.
The standard way to get around this problem is to set a break The standard way to get around this problem is to set a break
point (a one-time, or temporary, break point will do) at 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 A convenient way to do so is to add the @code{gdb} command
@example @example
...@@ -8525,7 +8509,7 @@ unit of your program. ...@@ -8525,7 +8509,7 @@ unit of your program.
Of course, if you really want to set a break point at some Of course, if you really want to set a break point at some
other place in your program and just start the program 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. that should work fine.
@node Procedures @node Procedures
...@@ -9322,7 +9306,7 @@ Instead, make a separate @code{INCLUDE} file that defines ...@@ -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. so you can more easily change the actual numbers in the future.
The information below is culled from the definition 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. @code{g77} source tree.
@smallexample @smallexample
...@@ -10234,7 +10218,7 @@ it provides either form of detection are welcome. ...@@ -10234,7 +10218,7 @@ it provides either form of detection are welcome.
For several versions prior to 0.5.20, @code{g77} configured its For several versions prior to 0.5.20, @code{g77} configured its
version of the @code{libf2c} run-time library so that one of 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 This was done as a result of a belief that many programs expected
output to be flushed to the operating system (under UNIX, via output to be flushed to the operating system (under UNIX, via
...@@ -10259,7 +10243,7 @@ non-flushing library routines.) ...@@ -10259,7 +10243,7 @@ non-flushing library routines.)
@xref{Always Flush Output}, for information on how to modify @xref{Always Flush Output}, for information on how to modify
the @code{g77} source tree so that a version of @code{libg2c} 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 @node Large File Unit Numbers
@subsection Large File Unit Numbers @subsection Large File Unit Numbers
...@@ -10278,13 +10262,13 @@ file unit number that is out of the range accepted by ...@@ -10278,13 +10262,13 @@ file unit number that is out of the range accepted by
@code{libg2c}. @code{libg2c}.
Normally, this range is 0 through 99, and the high end Normally, this range is 0 through 99, and the high end
of the range is controlled by a @code{libg2c} source-file 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 If you can easily change your program to use unit numbers
in the range 0 through 99, you should do so. in the range 0 through 99, you should do so.
Otherwise, see @ref{Larger File Unit Numbers}, for information on how 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 install a new version of @code{libg2c} that supports the larger
unit numbers you need. unit numbers you need.
...@@ -10306,11 +10290,11 @@ in your system's documentation. ...@@ -10306,11 +10290,11 @@ in your system's documentation.
@cindex x86 floating-point @cindex x86 floating-point
If your program depends on exact IEEE 754 floating-point handling it may If your program depends on exact IEEE 754 floating-point handling it may
help on some systems---specifically x86 or m68k hardware---to use 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}. floating-point unit @xref{Optimize Options}.
However, it might be better simply to put the FPU into double precision 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 and m68k GNU systems you can do this with a technique similar to that
for turning on floating-point exceptions @xref{Floating-point Exception for turning on floating-point exceptions @xref{Floating-point Exception
Handling}. The control word could be set to double precision by Handling}. The control word could be set to double precision by
...@@ -10430,15 +10414,6 @@ Currently, @code{g77} supports only automatic arrays, not ...@@ -10430,15 +10414,6 @@ Currently, @code{g77} supports only automatic arrays, not
@code{RECURSIVE} procedures or other means of explicitly @code{RECURSIVE} procedures or other means of explicitly
specifying that variables or arrays are automatic. 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 -f@var{group}-intrinsics-hide option
@cindex options, -f@var{group}-intrinsics-hide @cindex options, -f@var{group}-intrinsics-hide
@item -f@var{group}-intrinsics-hide @item -f@var{group}-intrinsics-hide
...@@ -10975,8 +10950,8 @@ simply too large for the system, or buggy.) ...@@ -10975,8 +10950,8 @@ simply too large for the system, or buggy.)
@subsection Nothing Happens @subsection Nothing Happens
@cindex nothing happens @cindex nothing happens
@cindex naming programs @cindex naming programs
@cindex @samp{test} programs @cindex @code{test} programs
@cindex programs, @samp{test} @cindex programs, @code{test}
It is occasionally reported that a ``simple'' program, It is occasionally reported that a ``simple'' program,
such as a ``Hello, World!'' program, does nothing when such as a ``Hello, World!'' program, does nothing when
it is run, even though the compiler reported no errors, it is run, even though the compiler reported no errors,
...@@ -10984,7 +10959,7 @@ despite the program containing nothing other than a ...@@ -10984,7 +10959,7 @@ despite the program containing nothing other than a
simple @code{PRINT} statement. simple @code{PRINT} statement.
This most often happens because the program has been 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 though other names can lead to similarly unexpected
run-time behavior on various systems. run-time behavior on various systems.
...@@ -11151,7 +11126,7 @@ used by @code{g77}, handles only double-precision values. ...@@ -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 Since @samp{0.2} in the program is a single-precision value, it
is converted to double precision (still in binary notation) is converted to double precision (still in binary notation)
before being converted back to decimal. 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 original value---which, again, is an inexact approximation of
0.2---resulting in an approximation that is much less exact 0.2---resulting in an approximation that is much less exact
than is connoted by the use of double precision. than is connoted by the use of double precision.
...@@ -11196,7 +11171,7 @@ with that produced by some other Fortran implementations. ...@@ -11196,7 +11171,7 @@ with that produced by some other Fortran implementations.
A useful source of information on floating-point computation is David A useful source of information on floating-point computation is David
Goldberg, `What Every Computer Scientist Should Know About Goldberg, `What Every Computer Scientist Should Know About
Floating-Point Arithmetic', Computing Surveys, 23, March 1991, pp.@: Floating-Point Arithmetic', Computing Surveys, 23, March 1991, pp.@:
5--48. 5-48.
An online version is available at An online version is available at
@uref{http://docs.sun.com}, @uref{http://docs.sun.com},
and there is a supplemented version, in PostScript form, at and there is a supplemented version, in PostScript form, at
...@@ -11259,6 +11234,7 @@ GNU Fortran language: ...@@ -11259,6 +11234,7 @@ GNU Fortran language:
* Array Bounds Expressions:: * Array Bounds Expressions::
* POINTER Statements:: * POINTER Statements::
* Sensible Non-standard Constructs:: * Sensible Non-standard Constructs::
* READONLY Keyword::
* FLUSH Statement:: * FLUSH Statement::
* Expressions in FORMAT Statements:: * Expressions in FORMAT Statements::
* Explicit Assembler Code:: * Explicit Assembler Code::
...@@ -11344,7 +11320,7 @@ but one of the most frequent bugs encountered by new users is ...@@ -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 accidentally writing fixed-form source code into and beyond
column 73. column 73.
So, maybe the users of old code would be able to more easily handle 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 @node Fortran 90 Support
@subsection Fortran 90 Support @subsection Fortran 90 Support
...@@ -11587,6 +11563,34 @@ specification of an attribute), please submit a ...@@ -11587,6 +11563,34 @@ specification of an attribute), please submit a
bug report with an explanation, so we can consider bug report with an explanation, so we can consider
fixing @code{g77} just for cases like yours. 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 @node FLUSH Statement
@subsection @code{FLUSH} Statement @subsection @code{FLUSH} Statement
...@@ -11811,22 +11815,36 @@ be supported by a future version of @code{g77}. ...@@ -11811,22 +11815,36 @@ be supported by a future version of @code{g77}.
@cindex automatic variables @cindex automatic variables
@cindex variables, automatic @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. @code{f2c} does.
It is not yet clear exactly what this statement would achieve. @code{AUTOMATIC} would identify a variable or array
The semantic equivalent would be provided by @code{RECURSIVE} as not being @code{SAVE}'d, which is normally the default,
combined with lack of @code{SAVE}. but which would be especially useful for code that, @emph{generally},
In that sense, perhaps all it would provide is an needed to be compiled with the @samp{-fno-automatic} option.
overriding of an unadorned (blanket) @code{SAVE} statement
for specific variables. @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.
@code{AUTOMATIC} would not, by itself, designate the containing procedure
as recursive.
It might also serve as a hint to the compiler that placing @code{AUTOMATIC} should work syntactically like @code{SAVE},
even a very large array on the stack is acceptable. 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).
Perhaps it should disallow @code{DATA} Variables and arrays denoted as @code{AUTOMATIC}
or other specification of any initial values would not be permitted to be initialized via @code{DATA}
for affected variables as well. 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 @node Suppressing Space Padding
@subsection Suppressing Space Padding of Source Lines @subsection Suppressing Space Padding of Source Lines
...@@ -11934,7 +11952,7 @@ A convenient trick is to compile this something like: ...@@ -11934,7 +11952,7 @@ A convenient trick is to compile this something like:
@smallexample @smallexample
gcc -o libtrapfpe.a trapfpe.c gcc -o libtrapfpe.a trapfpe.c
@end smallexample @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. when linking.
@node Nonportable Conversions @node Nonportable Conversions
...@@ -11949,7 +11967,7 @@ is type @code{REAL}), that other compilers might ...@@ -11949,7 +11967,7 @@ is type @code{REAL}), that other compilers might
quietly accept. quietly accept.
Some of these conversions are accepted by @code{g77} 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. Perhaps it should accept more or all of them.
@node Large Automatic Arrays @node Large Automatic Arrays
...@@ -12625,7 +12643,7 @@ could be very helpful. ...@@ -12625,7 +12643,7 @@ could be very helpful.
@cindex logical expressions, comparing @cindex logical expressions, comparing
Use of @code{.EQ.} and @code{.NE.} on @code{LOGICAL} operands 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 recommended except for legacy code (where the behavior expected
by the @emph{code} is assumed). by the @emph{code} is assumed).
...@@ -12683,6 +12701,20 @@ that were well-designed in the first place. ...@@ -12683,6 +12701,20 @@ that were well-designed in the first place.
you, without knowing more context, whether the @samp{&} and @samp{-} you, without knowing more context, whether the @samp{&} and @samp{-}
operators are infix (binary) or unary!) 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 @node Order of Side Effects
@subsection Order of Side Effects @subsection Order of Side Effects
@cindex side effects, order of evaluation @cindex side effects, order of evaluation
...@@ -13539,13 +13571,13 @@ when compiling most any kind of program. ...@@ -13539,13 +13571,13 @@ when compiling most any kind of program.
which is used during the build of @code{gcc} to which is used during the build of @code{gcc} to
build a list of all options that are accepted by build a list of all options that are accepted by
at least one language's compiler. 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 in @file{gcc/toplev.c}, which uses this array to
determine whether a particular option should be determine whether a particular option should be
offered to the linked-in front end for processing 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 @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 If the linked-in front end ``rejects'' a
particular option passed to it, @file{toplev.c} particular option passed to it, @file{toplev.c}
...@@ -13555,7 +13587,7 @@ language's compiler is willing to accept it. ...@@ -13555,7 +13587,7 @@ language's compiler is willing to accept it.
This allows commands like @samp{gcc -fno-asm foo.c bar.f} This allows commands like @samp{gcc -fno-asm foo.c bar.f}
to work, even though Fortran compilation does to work, even though Fortran compilation does
not currently support the @samp{-fno-asm} option; 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 rejects @samp{-fno-asm}, @file{toplev.c} doesn't
produce a diagnostic because some other language (C) produce a diagnostic because some other language (C)
does accept it. does accept it.
...@@ -13568,7 +13600,7 @@ a warning about this would be helpful if it were ...@@ -13568,7 +13600,7 @@ a warning about this would be helpful if it were
possible. possible.
Code that processes Fortran options is found in 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 This code needs to check positive and negative forms
of each option. of each option.
...@@ -13588,9 +13620,9 @@ Accessor macros for Fortran options, used by code ...@@ -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}. in the @code{g77} FFE, are defined in @file{@value{path-g77}/top.h}.
@emph{Compiler options} are listed in @file{gcc/toplev.c} @emph{Compiler options} are listed in @file{gcc/toplev.c}
in the array @samp{f_options}. in the array @code{f_options}.
An option not listed in @samp{lang_options} is An option not listed in @code{lang_options} is
looked up in @samp{f_options} and handled from there. looked up in @code{f_options} and handled from there.
The defaults for compiler options are set in the The defaults for compiler options are set in the
global definitions for the corresponding variables, global definitions for the corresponding variables,
...@@ -13608,7 +13640,7 @@ Change the way @code{f771} handles the @samp{-fset-g77-defaults} ...@@ -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 option, which is always provided as the first option when
called by @code{g77} or @code{gcc}. 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 Have it change just the variables that you want to default
to a different setting for Fortran compiles compared to to a different setting for Fortran compiles compared to
compiles of other languages. compiles of other languages.
...@@ -13630,7 +13662,7 @@ are passed via this mechanism. ...@@ -13630,7 +13662,7 @@ are passed via this mechanism.
@item EGCS-1.1 @item EGCS-1.1
@itemx EGCS-1.2 @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} (Note that these versions of @code{g77}
perform internal consistency checking automatically perform internal consistency checking automatically
...@@ -13670,7 +13702,7 @@ them show up only given certain kinds of (popular) input. ...@@ -13670,7 +13702,7 @@ them show up only given certain kinds of (popular) input.
@itemize @bullet @itemize @bullet
@item @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. memory pools and, where feasible, use obstacks to implement them.
@item @item
...@@ -13697,11 +13729,11 @@ unimplemented-statement catch-all. ...@@ -13697,11 +13729,11 @@ unimplemented-statement catch-all.
@item @item
Throughout @code{g77}, don't pass line/column pairs where Throughout @code{g77}, don't pass line/column pairs where
a simple @samp{ffewhere} type, which points to the error as much as is a simple @code{ffewhere} type, which points to the error as much as is
desired by the configuration, will do, and don't pass @samp{ffelexToken} types desired by the configuration, will do, and don't pass @code{ffelexToken} types
where a simple @samp{ffewhere} type will do. where a simple @code{ffewhere} type will do.
Then, allow new default 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 preserved, and leave it to things like Emacs' next-error function
to point to them (now that @samp{next-error} supports column, to point to them (now that @samp{next-error} supports column,
or, perhaps, character-offset, numbers). or, perhaps, character-offset, numbers).
...@@ -13751,7 +13783,7 @@ that are at all worth inlining. ...@@ -13751,7 +13783,7 @@ that are at all worth inlining.
@item @item
When doing @samp{CHAR_VAR = CHAR_FUNC(@dots{})}, When doing @samp{CHAR_VAR = CHAR_FUNC(@dots{})},
and it's clear that types line up 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 make @samp{CHAR_VAR}, not a
temporary, be the receiver for @samp{CHAR_FUNC}. temporary, be the receiver for @samp{CHAR_FUNC}.
(This is now done for @code{COMPLEX} variables.) (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 ...@@ -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.) @code{gcc} rather than @code{f2c} calling conventions.)
@item @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 For example, @samp{CALL FOO(I)} cannot modify @samp{I} if within
a @code{DO} loop that uses @samp{I} as the a @code{DO} loop that uses @samp{I} as the
iteration variable, and the back end might find that info useful iteration variable, and the back end might find that info useful
...@@ -13963,7 +13995,7 @@ provides it via its configuration. ...@@ -13963,7 +13995,7 @@ provides it via its configuration.
@itemize @bullet @itemize @bullet
@item @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. exclusively so the target float format need not be required.
This This
means changing the way @code{g77} handles initialization of aggregate areas 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 ...@@ -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}. to achieve desired implementation dialect via @file{proj.h}.
@item @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 @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 @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 and @file{ste.c}, and get rid of the @samp{opCONVERT(opANY)} kludge
(after determining if there is indeed no real need for it). (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 ...@@ -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. in the code@dots{}uh@dots{}in the code.
@item @item
Some @samp{ffebld_new} calls (those outside of @file{ffeexpr.c} or Some @code{ffebld_new} calls (those outside of @file{ffeexpr.c} or
inside but invoked via paths not involving @samp{ffeexpr_lhs} or inside but invoked via paths not involving @code{ffeexpr_lhs} or
@samp{ffeexpr_rhs}) might be creating things @code{ffeexpr_rhs}) might be creating things
in improper pools, leading to such things staying around too long or in improper pools, leading to such things staying around too long or
(doubtful, but possible and dangerous) not long enough. (doubtful, but possible and dangerous) not long enough.
@item @item
Some @samp{ffebld_list_new} (or whatever) calls might not be matched by Some @code{ffebld_list_new} (or whatever) calls might not be matched by
@samp{ffebld_list_bottom} (or whatever) calls, which might someday matter. @code{ffebld_list_bottom} (or whatever) calls, which might someday matter.
(It definitely is not a problem just yet.) (It definitely is not a problem just yet.)
@item @item
Probably not doing clean things when we fail to @code{EQUIVALENCE} something Probably not doing clean things when we fail to @code{EQUIVALENCE} something
due to alignment/mismatch or other problems---they end up without due to alignment/mismatch or other problems---they end up without
@samp{ffestorag} objects, so maybe the backend (and other parts of the front @code{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 end) can notice that and handle like an @code{opANY} (do what it wants, just
don't complain or crash). don't complain or crash).
Most of this seems to have been addressed Most of this seems to have been addressed
by now, but a code review wouldn't hurt. by now, but a code review wouldn't hurt.
...@@ -14097,7 +14129,7 @@ clutter. ...@@ -14097,7 +14129,7 @@ clutter.
@item @item
When @code{FUNCTION} and @code{ENTRY} point types disagree (@code{CHARACTER} When @code{FUNCTION} and @code{ENTRY} point types disagree (@code{CHARACTER}
lengths, type classes, and so on), 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. it specifies.
@item @item
...@@ -14166,7 +14198,7 @@ as the above is just a sample, no such section exists. ...@@ -14166,7 +14198,7 @@ as the above is just a sample, no such section exists.
* INTGLOB:: Intrinsic also used as name of global. * INTGLOB:: Intrinsic also used as name of global.
* LEX:: Various lexer messages * LEX:: Various lexer messages
* GLOBALS:: Disagreements about globals. * GLOBALS:: Disagreements about globals.
* LINKFAIL:: When linking @samp{f771} fails. * LINKFAIL:: When linking @code{f771} fails.
* Y2KBAD:: Use of non-Y2K-compliant intrinsic. * Y2KBAD:: Use of non-Y2K-compliant intrinsic.
@end menu @end menu
...@@ -14285,8 +14317,8 @@ expects the Fortran 90 interpretation, you can: ...@@ -14285,8 +14317,8 @@ expects the Fortran 90 interpretation, you can:
@itemize @bullet @itemize @bullet
@item @item
Change it to @samp{DBLE(@var{expr})} (if @var{intrinsic} is Change it to @samp{DBLE(@var{expr})} (if @var{intrinsic} is
@samp{REAL}) or @samp{DIMAG(@var{expr})} (if @var{intrinsic} @code{REAL}) or @samp{DIMAG(@var{expr})} (if @var{intrinsic}
is @samp{AIMAG}) is @code{AIMAG})
if it expected the Fortran 90 interpretation. if it expected the Fortran 90 interpretation.
This assumes @var{expr} is @code{COMPLEX(KIND=2)}---if it is 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: ...@@ -14574,13 +14606,13 @@ C On XYZZY systems, remove "C" on next line:
CALL XYZZY_RESET CALL XYZZY_RESET
@end smallexample @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 statement in column 6, making it a comment line, which is
not really what the author intended, and which is likely not really what the author intended, and which is likely
to result in one of the above-listed diagnostics. to result in one of the above-listed diagnostics.
@emph{Replacing} the @samp{C} in column 1 with a space @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. keyword starts in or after column 7.
Another common mistake like this is to forget that fixed-form Another common mistake like this is to forget that fixed-form
......
...@@ -423,9 +423,9 @@ These problems can occur on most or all systems. ...@@ -423,9 +423,9 @@ These problems can occur on most or all systems.
* GNU C Required:: Why even ANSI C is not enough. * GNU C Required:: Why even ANSI C is not enough.
* Patching GNU CC:: Why @code{gcc} needn't be patched. * Patching GNU CC:: Why @code{gcc} needn't be patched.
* Building GNU CC Necessary:: Why you can't build @emph{just} Fortran. * 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. * 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 @end menu
@node GNU C Required @node GNU C Required
...@@ -490,11 +490,11 @@ This information does not apply to the ...@@ -490,11 +490,11 @@ This information does not apply to the
@ifclear OMIT-FSF-G77 @ifclear OMIT-FSF-G77
On SunOS4 systems, linking the @code{f771} program used to On SunOS4 systems, linking the @code{f771} program used to
produce an error message concerning an undefined symbol named 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. is not provided on that system.
Other systems have, in the past, been reported to not provide 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 Some versions @code{g77} tried to default to providing bare-bones
versions of @code{bsearch} and @code{strtoul} automatically, versions of @code{bsearch} and @code{strtoul} automatically,
...@@ -504,8 +504,8 @@ To limit the failures to those few systems actually missing the ...@@ -504,8 +504,8 @@ To limit the failures to those few systems actually missing the
required routines, the bare-bones versions are still provided, required routines, the bare-bones versions are still provided,
in @file{@value{path-g77}/proj.c}, in @file{@value{path-g77}/proj.c},
if the appropriate macros are defined. if the appropriate macros are defined.
These are @code{NEED_BSEARCH} for @samp{bsearch} and These are @code{NEED_BSEARCH} for @code{bsearch} and
@code{NEED_STRTOUL} for @samp{NEED_STRTOUL}. @code{NEED_STRTOUL} for @code{NEED_STRTOUL}.
Therefore, if you are sure your system is missing Therefore, if you are sure your system is missing
@code{bsearch} or @code{strtoul} in its library, @code{bsearch} or @code{strtoul} in its library,
...@@ -530,8 +530,8 @@ make bootstrap BOOT_CFLAGS='-O2 -g -DNEED_STRTOUL' ...@@ -530,8 +530,8 @@ make bootstrap BOOT_CFLAGS='-O2 -g -DNEED_STRTOUL'
@end smallexample @end smallexample
If you then encounter problems compiling @file{@value{path-g77}/proj.c}, If you then encounter problems compiling @file{@value{path-g77}/proj.c},
it might be due to a discrepancy between how @samp{bsearch} it might be due to a discrepancy between how @code{bsearch}
or @samp{strtoul} are defined by that file and how they're or @code{strtoul} are defined by that file and how they're
declared by your system's header files. declared by your system's header files.
In that case, you'll have to use some basic knowledge of C In that case, you'll have to use some basic knowledge of C
...@@ -559,14 +559,14 @@ that, on demand. ...@@ -559,14 +559,14 @@ that, on demand.
@node LANGUAGES Macro Ignored @node LANGUAGES Macro Ignored
@subsubsection LANGUAGES Macro Ignored @subsubsection LANGUAGES Macro Ignored
@cindex @samp{LANGUAGES} macro ignored @cindex @code{LANGUAGES} macro ignored
@cindex ignoring @samp{LANGUAGES} macro @cindex ignoring @code{LANGUAGES} macro
Prior to version 0.5.23 of @code{g77} Prior to version 0.5.23 of @code{g77}
and version 1.1 of @code{egcs}, and version 1.1 of @code{egcs},
@code{g77} would sometimes ignore @code{g77} would sometimes ignore
the absence of @samp{f77} and @samp{F77} in the the absence of @code{f77} and @code{F77} in the
@samp{LANGUAGES} macro definition used for the @code{LANGUAGES} macro definition used for the
@code{make} command being processed. @code{make} command being processed.
As of @code{g77} version 0.5.23 As of @code{g77} version 0.5.23
...@@ -580,7 +580,7 @@ such as @code{g++}, ...@@ -580,7 +580,7 @@ such as @code{g++},
are known to go ahead and perform various are known to go ahead and perform various
language-specific activities when their language-specific activities when their
respective language strings do not appear 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}. during that invocation of @code{make}.
It is expected that these remaining problems will It is expected that these remaining problems will
...@@ -669,7 +669,7 @@ As such, none of the following information is expected to ...@@ -669,7 +669,7 @@ As such, none of the following information is expected to
be pertinent in future versions of @code{g77}. be pertinent in future versions of @code{g77}.
@menu @menu
* Larger File Unit Numbers:: Raising @samp{MXUNIT}. * Larger File Unit Numbers:: Raising @code{MXUNIT}.
* Always Flush Output:: Synchronizing write errors. * Always Flush Output:: Synchronizing write errors.
* Maximum Stackable Size:: Large arrays forced off the stack. * Maximum Stackable Size:: Large arrays forced off the stack.
* Floating-point Bit Patterns:: Possible programs building @code{g77} * Floating-point Bit Patterns:: Possible programs building @code{g77}
...@@ -697,7 +697,7 @@ a run-time crash in @code{libf2c}, because the unit number, ...@@ -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 If you know that Fortran programs at your installation require
the use of unit numbers higher than 99, you can change the 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. number, to an appropriately higher value.
To do this, edit the file @file{@value{path-libf2c}/libI77/fio.h} in your 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 ...@@ -707,12 +707,12 @@ To do this, edit the file @file{@value{path-libf2c}/libI77/fio.h} in your
#define MXUNIT 100 #define MXUNIT 100
@end example @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 at least one @emph{greater} than the maximum unit number used by
the Fortran programs on your system. the Fortran programs on your system.
(For example, a program that does @samp{WRITE (UNIT=255)} would require (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. Then build or rebuild @code{g77} as appropriate.
...@@ -753,7 +753,7 @@ asynchronous, or, more precisely, buffered error reporting ...@@ -753,7 +753,7 @@ asynchronous, or, more precisely, buffered error reporting
(detection of errors might be delayed). (detection of errors might be delayed).
@code{libg2c} supports flagging write errors immediately when @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 This results in a @code{libg2c} that runs slower, sometimes
quite a bit slower, under certain circumstances---for example, quite a bit slower, under certain circumstances---for example,
accessing files via the networked file system NFS---but the 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 ...@@ -763,7 +763,7 @@ If you know that Fortran programs requiring this level of precision
of error reporting are to be compiled using the of error reporting are to be compiled using the
version of @code{g77} you are building, you might wish to version of @code{g77} you are building, you might wish to
modify the @code{g77} source tree so that the version of 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. defined, enabling this behavior.
To do this, find this line in @file{@value{path-libf2c}/f2c.h} in 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. ...@@ -788,7 +788,7 @@ Then build or rebuild @code{g77} as appropriate.
@cindex segmentation violation @cindex segmentation violation
@code{g77}, on most machines, puts many variables and arrays on the stack @code{g77}, on most machines, puts many variables and arrays on the stack
where possible, and can be configured (by changing 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 smaller-sized entities into static storage (saving
on stack space) or permit larger-sized entities to be put on the on stack space) or permit larger-sized entities to be put on the
stack (which can improve run-time performance, as it presents stack (which can improve run-time performance, as it presents
...@@ -796,7 +796,7 @@ more opportunities for the GBE to optimize the generated code). ...@@ -796,7 +796,7 @@ more opportunities for the GBE to optimize the generated code).
@emph{Note:} Putting more variables and arrays on the stack @emph{Note:} Putting more variables and arrays on the stack
might cause problems due to system-dependent limits on stack size. 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. effect on automatic variables and arrays.
@xref{But-bugs}, for more information. @xref{But-bugs}, for more information.
...@@ -837,7 +837,7 @@ This size currently is quite small, since @code{g77} ...@@ -837,7 +837,7 @@ This size currently is quite small, since @code{g77}
currently has a known bug requiring too much memory currently has a known bug requiring too much memory
and time to handle such cases. and time to handle such cases.
In @file{@value{path-g77}/data.c}, the macro 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. to the minimum size for the warning to appear.
The size is specified in storage units, The size is specified in storage units,
which can be bytes, words, or whatever, on a case-by-case basis. which can be bytes, words, or whatever, on a case-by-case basis.
...@@ -1537,16 +1537,16 @@ issuing an explanatory diagnostic. ...@@ -1537,16 +1537,16 @@ issuing an explanatory diagnostic.
@cindex building @code{gcc} @cindex building @code{gcc}
@cindex building @code{g77} @cindex building @code{g77}
@cindex @samp{LANGUAGES} macro @cindex @code{LANGUAGES} macro
Building @code{g77} requires building enough of @code{gcc} that Building @code{g77} requires building enough of @code{gcc} that
these instructions assume you're going to build all of these instructions assume you're going to build all of
@code{gcc}, including @code{g++}, @code{protoize}, and so on. @code{gcc}, including @code{g++}, @code{protoize}, and so on.
You can save a little time and disk space by changes the 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. or @code{gcc/Makefile}, but if you do that, you're on your own.
One change is almost @emph{certainly} going to cause failures: One change is almost @emph{certainly} going to cause failures:
removing @samp{c} or @samp{f77} from the definition of the removing @code{c} or @code{f77} from the definition of the
@samp{LANGUAGES} macro. @code{LANGUAGES} macro.
After configuring @code{gcc}, which configures @code{g77} and After configuring @code{gcc}, which configures @code{g77} and
@code{libg2c} automatically, you're ready to start the actual @code{libg2c} automatically, you're ready to start the actual
...@@ -1785,7 +1785,7 @@ make -k CC=gcc install ...@@ -1785,7 +1785,7 @@ make -k CC=gcc install
As described in @ref{Installation,,Installing GNU CC, As described in @ref{Installation,,Installing GNU CC,
gcc,Using and Porting GNU CC}, the values for 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 be the same as those you supplied for the build
itself. itself.
...@@ -1805,7 +1805,7 @@ make -k @dots{} install install-libf77 ...@@ -1805,7 +1805,7 @@ make -k @dots{} install install-libf77
We don't know why some non-GNU versions of @code{make} sometimes We don't know why some non-GNU versions of @code{make} sometimes
require this alternate command, but they do. 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.) where you see @samp{@dots{}} in the above command.)
Note that using the @samp{-k} option tells @code{make} to Note that using the @samp{-k} option tells @code{make} to
...@@ -1939,10 +1939,10 @@ information for the derived files to work around the ...@@ -1939,10 +1939,10 @@ information for the derived files to work around the
problem of not having the appropriate tools installed. problem of not having the appropriate tools installed.
On UNIX systems, the simplest way to update the date-time-modified 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. 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. updated by each of the tools is described below.
@emph{Note:} New versions of @code{g77} might change the set of @emph{Note:} New versions of @code{g77} might change the set of
files it generates by invoking each of these tools. files it generates by invoking each of these tools.
......
...@@ -59,8 +59,7 @@ FTNOPT( "-fpedantic", "Warn about use of (only a few for now) Fortran extensions ...@@ -59,8 +59,7 @@ FTNOPT( "-fpedantic", "Warn about use of (only a few for now) Fortran extensions
FTNOPT( "-fno-pedantic", "" ) FTNOPT( "-fno-pedantic", "" )
FTNOPT( "-fvxt", "Program is written in VXT (Digital-like) FORTRAN" ) FTNOPT( "-fvxt", "Program is written in VXT (Digital-like) FORTRAN" )
FTNOPT( "-fno-vxt", "" ) FTNOPT( "-fno-vxt", "" )
FTNOPT( "-fugly", "Obsolete; allow certain ugly features" ) FTNOPT( "-fno-ugly", "Disallow all ugly features" )
FTNOPT( "-fno-ugly", "" )
FTNOPT( "-fugly-args", "" ) FTNOPT( "-fugly-args", "" )
FTNOPT( "-fno-ugly-args", "Hollerith and typeless constants not passed as arguments" ) FTNOPT( "-fno-ugly-args", "Hollerith and typeless constants not passed as arguments" )
FTNOPT( "-fugly-assign", "Allow ordinary copying of ASSIGN'ed vars" ) FTNOPT( "-fugly-assign", "Allow ordinary copying of ASSIGN'ed vars" )
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. NEWS). @c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995-1999 @set copyrights-news 1995-1999
@set last-update-news 1999-04-03 @set last-update-news 1999-04-17
@include root.texi @include root.texi
...@@ -190,7 +190,7 @@ as if they ended in @samp{.for} and @samp{.fpp}, respectively. ...@@ -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. that has an interface that is not Year 2000 (Y2K) compliant.
Also, the @code{libg2c} has been changed to increase the likelihood Also, the @code{libg2c} has been changed to increase the likelihood
of catching references to the implementations of these intrinsics 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). (which would avoid the new warnings).
@ifset DOC-G77 @ifset DOC-G77
...@@ -205,7 +205,7 @@ disagrees with the reference concerning the type of the function. ...@@ -205,7 +205,7 @@ disagrees with the reference concerning the type of the function.
@end ifclear @end ifclear
@item @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 This should result in improved performance
of code that uses the @code{COMPLEX} data type. of code that uses the @code{COMPLEX} data type.
...@@ -213,15 +213,23 @@ 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 double-precision performance
@cindex -malign-double @cindex -malign-double
@item @item
The @code{-malign-double} option The @samp{-malign-double} option
now reliably aligns @emph{all} double-precision variables and arrays now reliably aligns @emph{all} double-precision variables and arrays
on Intel x86 targets. on Intel x86 targets.
@item
Support for the @samp{-fugly} option has been removed.
@ifclear USERVISONLY @ifclear USERVISONLY
@item @item
Improve documentation and indexing, Improve documentation and indexing,
including information on Year 2000 (Y2K) compliance. including information on Year 2000 (Y2K) compliance.
@end ifclear @end ifclear
@ifclear USERVISONLY
@item
Upgrade to @code{libf2c} as of 1999-03-17.
@end ifclear
@end itemize @end itemize
@heading In 0.5.24 and @code{egcs} 1.1.2 (versus 0.5.23 and 1.1.1): @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. ...@@ -230,7 +238,7 @@ including information on Year 2000 (Y2K) compliance.
@item @item
Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c}) Fix the @code{IDate} intrinsic (VXT) (in @code{libg2c})
so the returned year is in the documented, non-Y2K-compliant range 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. instead of being returned as 100 in the year 2000.
@ifset DOC-G77 @ifset DOC-G77
...@@ -239,12 +247,12 @@ for more information. ...@@ -239,12 +247,12 @@ for more information.
@end ifset @end ifset
@item @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 to return the milliseconds value properly
in @var{Values}(8). in @var{Values}(8).
@item @item
Fix the @samp{LStat} intrinsic (in @code{libg2c}) Fix the @code{LStat} intrinsic (in @code{libg2c})
to return device-ID information properly to return device-ID information properly
in @var{SArray}(7). in @var{SArray}(7).
...@@ -273,13 +281,13 @@ upon doing any I/O following a direct formatted write. ...@@ -273,13 +281,13 @@ upon doing any I/O following a direct formatted write.
@item @item
Fix @code{g77} so it no longer crashes compiling references 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 @item
Fix @code{g77} portion of installation process so it works Fix @code{g77} portion of installation process so it works
better on some systems better on some systems
(those with shells requiring @samp{else true} clauses (those with shells requiring @samp{else true} clauses
on @samp{if} constructs on @code{if} constructs
for the completion code to be set properly). for the completion code to be set properly).
@end itemize @end itemize
@end ifclear @end ifclear
...@@ -310,7 +318,7 @@ involving @code{COMPLEX} arithmetic ...@@ -310,7 +318,7 @@ involving @code{COMPLEX} arithmetic
Fix a code-generation bug that afflicted Fix a code-generation bug that afflicted
Intel x86 targets when @samp{-O2} was specified Intel x86 targets when @samp{-O2} was specified
compiling, for example, an old version of compiling, for example, an old version of
the @samp{DNRM2} routine. the @code{DNRM2} routine.
The x87 coprocessor stack was being The x87 coprocessor stack was being
mismanaged in cases involving assigned @code{GOTO} mismanaged in cases involving assigned @code{GOTO}
...@@ -335,11 +343,11 @@ or given initial values via @code{DATA}. ...@@ -335,11 +343,11 @@ or given initial values via @code{DATA}.
@itemize @bullet @itemize @bullet
@ifclear USERVISONLY @ifclear USERVISONLY
@item @item
Fix bugs in the @code{libU77} intrinsic @samp{HostNm} Fix bugs in the @code{libU77} intrinsic @code{HostNm}
that wrote one byte beyond the end of its @samp{CHARACTER} that wrote one byte beyond the end of its @code{CHARACTER}
argument, argument,
and in the @code{libU77} intrinsics and in the @code{libU77} intrinsics
@samp{GMTime} and @samp{LTime} @code{GMTime} and @code{LTime}
that overwrote their arguments. that overwrote their arguments.
@end ifclear @end ifclear
...@@ -385,7 +393,7 @@ compile-time constant @code{INTEGER} expression. ...@@ -385,7 +393,7 @@ compile-time constant @code{INTEGER} expression.
@item @item
Fix @code{g77} @samp{-g} option so procedures that 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}. in @code{gdb}.
@item @item
...@@ -503,7 +511,7 @@ Improve documentation and indexing. ...@@ -503,7 +511,7 @@ Improve documentation and indexing.
@item @item
The upgrade to @code{libf2c} as of 1998-06-18 The upgrade to @code{libf2c} as of 1998-06-18
should fix a variety of problems, including 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 specifier, and perhaps some build (porting) problems
as well. as well.
@end ifclear @end ifclear
...@@ -515,7 +523,7 @@ as well. ...@@ -515,7 +523,7 @@ as well.
@item @item
@code{g77} no longer produces incorrect code @code{g77} no longer produces incorrect code
and initial values and initial values
for @samp{EQUIVALENCE} and @samp{COMMON} for @code{EQUIVALENCE} and @code{COMMON}
aggregates that, due to ``unnatural'' ordering of members aggregates that, due to ``unnatural'' ordering of members
vis-a-vis their types, require initial padding. vis-a-vis their types, require initial padding.
@end ifclear @end ifclear
...@@ -562,20 +570,20 @@ in @code{libf2c} (@code{libg2c}). ...@@ -562,20 +570,20 @@ in @code{libf2c} (@code{libg2c}).
This new information allows, for example, This new information allows, for example,
@kbd{which __g77_length_a} to be used in @code{gdb} @kbd{which __g77_length_a} to be used in @code{gdb}
to determine the type of the phantom length argument 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 This information pertains to internally-generated
type, variable, and other information, type, variable, and other information,
not to the longstanding deficiencies vis-a-vis not to the longstanding deficiencies vis-a-vis
@samp{COMMON} and @samp{EQUIVALENCE}. @code{COMMON} and @code{EQUIVALENCE}.
@item @item
The F90 @samp{Date_and_Time} intrinsic now is The F90 @code{Date_and_Time} intrinsic now is
supported. supported.
@item @item
The F90 @samp{System_Clock} intrinsic allows The F90 @code{System_Clock} intrinsic allows
the optional arguments (except for the @samp{Count} the optional arguments (except for the @code{Count}
argument) to be omitted. argument) to be omitted.
@ifclear USERVISONLY @ifclear USERVISONLY
...@@ -617,7 +625,7 @@ of @code{g77} due to their being implemented ...@@ -617,7 +625,7 @@ of @code{g77} due to their being implemented
via @code{g77}-specific patches to the @code{gcc} via @code{g77}-specific patches to the @code{gcc}
back end in previous releases include: back end in previous releases include:
@itemize -- @itemize @minus
@item @item
Support for @code{__restrict__} keyword, Support for @code{__restrict__} keyword,
the options @samp{-fargument-alias}, @samp{-fargument-noalias}, the options @samp{-fargument-alias}, @samp{-fargument-noalias},
...@@ -659,11 +667,11 @@ including patches for the @code{gcc} back end. ...@@ -659,11 +667,11 @@ including patches for the @code{gcc} back end.
@ifclear USERVISONLY @ifclear USERVISONLY
@item @item
Fix bugs in the @code{libU77} intrinsic @samp{HostNm} Fix bugs in the @code{libU77} intrinsic @code{HostNm}
that wrote one byte beyond the end of its @samp{CHARACTER} that wrote one byte beyond the end of its @code{CHARACTER}
argument, argument,
and in the @code{libU77} intrinsics and in the @code{libU77} intrinsics
@samp{GMTime} and @samp{LTime} @code{GMTime} and @code{LTime}
that overwrote their arguments. that overwrote their arguments.
@end ifclear @end ifclear
...@@ -800,7 +808,7 @@ Improve documentation and indexing. ...@@ -800,7 +808,7 @@ Improve documentation and indexing.
Upgrade to @code{libf2c} as of 1998-04-20. Upgrade to @code{libf2c} as of 1998-04-20.
This should fix a variety of problems, including 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 specifier, and perhaps some build (porting) problems
as well. as well.
@end ifclear @end ifclear
...@@ -826,7 +834,7 @@ For example, @samp{DO 10 J=2,J} now is compiled correctly. ...@@ -826,7 +834,7 @@ For example, @samp{DO 10 J=2,J} now is compiled correctly.
Fix a code-generation bug that afflicted Fix a code-generation bug that afflicted
Intel x86 targets when @samp{-O2} was specified Intel x86 targets when @samp{-O2} was specified
compiling, for example, an old version of compiling, for example, an old version of
the @samp{DNRM2} routine. the @code{DNRM2} routine.
The x87 coprocessor stack was being The x87 coprocessor stack was being
mismanaged in cases involving assigned @code{GOTO} mismanaged in cases involving assigned @code{GOTO}
...@@ -856,7 +864,7 @@ Fix @code{g77} version of @code{libf2c} so it no longer ...@@ -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 produces a spurious @samp{I/O recursion} diagnostic at run time
when an I/O operation (such as @samp{READ *,I}) is interrupted when an I/O operation (such as @samp{READ *,I}) is interrupted
in a manner that causes the program to be terminated 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 @end ifclear
@ifclear USERVISONLY @ifclear USERVISONLY
...@@ -898,7 +906,7 @@ compile-time constant @code{INTEGER} expression. ...@@ -898,7 +906,7 @@ compile-time constant @code{INTEGER} expression.
@item @item
Fix @code{g77} @samp{-g} option so procedures that 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}. in @code{gdb}.
@ifclear USERVISONLY @ifclear USERVISONLY
...@@ -1070,7 +1078,7 @@ of @code{g77} due to their being implemented ...@@ -1070,7 +1078,7 @@ of @code{g77} due to their being implemented
via @code{g77}-specific patches to the @code{gcc} via @code{g77}-specific patches to the @code{gcc}
back end in previous releases include: back end in previous releases include:
@itemize -- @itemize @minus
@item @item
Support for the C-language @code{restrict} keyword. Support for the C-language @code{restrict} keyword.
...@@ -1233,8 +1241,8 @@ or assigned-@code{GOTO} statement. ...@@ -1233,8 +1241,8 @@ or assigned-@code{GOTO} statement.
@ifclear USERVISONLY @ifclear USERVISONLY
@item @item
Fix compiler crashes due to using the name of a some Fix compiler crashes due to using the name of a some
non-standard intrinsics (such as @samp{FTELL} or non-standard intrinsics (such as @code{FTell} or
@samp{FPUTC}) as such and as the name of a procedure @code{FPutC}) as such and as the name of a procedure
or common block. or common block.
Such dual use of a name in a program is allowed by Such dual use of a name in a program is allowed by
the standard. the standard.
...@@ -1251,19 +1259,19 @@ the standard. ...@@ -1251,19 +1259,19 @@ the standard.
@c @c
@c For example, the intrinsic @code{FPUTC} previously was @c For example, the intrinsic @code{FPUTC} previously was
@c implemented by @code{g77} as a call to the @code{libf2c} @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 This would conflict with a Fortran procedure named @code{FPUTC}
@c (using default compiler options), and this conflict @c (using default compiler options), and this conflict
@c would cause a crash under certain circumstances. @c would cause a crash under certain circumstances.
@c @c
@c Now, the intrinsic @code{FPUTC} calls @samp{G77_fputc_0}, @c Now, the intrinsic @code{FPUTC} calls @code{G77_fputc_0},
@c which does not conflict with the @samp{fputc_} external @c which does not conflict with the @code{fputc_} external
@c that implements a Fortran procedure named @code{FPUTC}. @c that implements a Fortran procedure named @code{FPUTC}.
@c @c
@c Programs that refer to @code{FPUTC} as an external procedure @c Programs that refer to @code{FPUTC} as an external procedure
@c without supplying their own implementation will link to @c without supplying their own implementation will link to
@c the new @code{libf2c} routine @samp{fputc_}, which is @c the new @code{libf2c} routine @code{fputc_}, which is
@c simply a jacket routine that calls @samp{G77_fputc_0}. @c simply a jacket routine that calls @code{G77_fputc_0}.
@ifclear USERVISONLY @ifclear USERVISONLY
@item @item
...@@ -1370,7 +1378,7 @@ that have embedded blanks, commas, and so on. ...@@ -1370,7 +1378,7 @@ that have embedded blanks, commas, and so on.
@item @item
Fix @code{SIGNAL} intrinsic so it accepts an Fix @code{SIGNAL} intrinsic so it accepts an
optional third @samp{Status} argument. optional third @code{Status} argument.
@ifclear USERVISONLY @ifclear USERVISONLY
@item @item
...@@ -1478,7 +1486,7 @@ Support @samp{*f771} entry in @code{gcc} @file{specs} file. ...@@ -1478,7 +1486,7 @@ Support @samp{*f771} entry in @code{gcc} @file{specs} file.
@ifclear USERVISONLY @ifclear USERVISONLY
@item @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. cross-compiling.
@end ifclear @end ifclear
...@@ -1600,12 +1608,12 @@ statements specifying that these names are not intended ...@@ -1600,12 +1608,12 @@ statements specifying that these names are not intended
to be names of intrinsics. to be names of intrinsics.
@item @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 building @code{libf2c}, which should result in improved
I/O performance, especially over NFS. I/O performance, especially over NFS.
@emph{Note:} If you have code that depends on the behavior @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 you will have to modify @code{libf2c} accordingly before
building it from this and future versions of @code{g77}. building it from this and future versions of @code{g77}.
...@@ -1860,10 +1868,10 @@ These are @code{REALPART}, @code{IMAGPART}, ...@@ -1860,10 +1868,10 @@ These are @code{REALPART}, @code{IMAGPART},
@code{LONG}, and @code{SHORT}. @code{LONG}, and @code{SHORT}.
@item @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}, to contain the new @code{REALPART}, @code{IMAGPART},
and @code{COMPLEX} intrinsics. and @code{COMPLEX} intrinsics.
An old group, @samp{dcp}, has been removed. An old group, @code{dcp}, has been removed.
@item @item
Complain about industry-wide ambiguous references Complain about industry-wide ambiguous references
...@@ -1891,8 +1899,8 @@ a new chapter containing information on one, later ...@@ -1891,8 +1899,8 @@ a new chapter containing information on one, later
more, diagnostics that users are directed to pull more, diagnostics that users are directed to pull
up automatically via a message in the diagnostic itself. up automatically via a message in the diagnostic itself.
(Hence the menu item @samp{M} for the node (Hence the menu item @code{M} for the node
@samp{Diagnostics} in the top-level menu of @code{Diagnostics} in the top-level menu of
the Info documentation.) the Info documentation.)
@end ifclear @end ifclear
@end itemize @end itemize
...@@ -1902,7 +1910,7 @@ the Info documentation.) ...@@ -1902,7 +1910,7 @@ the Info documentation.)
Information on previous versions is archived Information on previous versions is archived
in @file{@value{path-g77}/news.texi} 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 @end ifclear
@ifset DOC-OLDNEWS @ifset DOC-OLDNEWS
...@@ -1917,14 +1925,14 @@ These bugs occurred when assigning the result of an ...@@ -1917,14 +1925,14 @@ These bugs occurred when assigning the result of an
operation to a complex variable (or array element) operation to a complex variable (or array element)
that also served as an input to that operation. that also served as an input to that operation.
The operations affected by this bug were: @samp{CONJG()}, The operations affected by this bug were: @code{CONJG()},
@samp{DCONJG()}, @samp{CCOS()}, @samp{CDCOS()}, @code{DCONJG()}, @code{CCOS()}, @code{CDCOS()},
@samp{CLOG()}, @samp{CDLOG()}, @samp{CSIN()}, @samp{CDSIN()}, @code{CLOG()}, @code{CDLOG()}, @code{CSIN()}, @code{CDSIN()},
@samp{CSQRT()}, @samp{CDSQRT()}, complex division, and @code{CSQRT()}, @code{CDSQRT()}, complex division, and
raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER} raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
power. power.
(The related generic and @samp{Z}-prefixed intrinsics, (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} 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 (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} ...@@ -1936,7 +1944,7 @@ For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
@itemize @bullet @itemize @bullet
@item @item
Fix @code{FORMAT} statement parsing so negative values for 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. are correctly processed as negative.
@item @item
...@@ -2020,7 +2028,7 @@ procedures in @code{libf2c}. ...@@ -2020,7 +2028,7 @@ procedures in @code{libf2c}.
@item @item
Modify @code{fseek_()} in @code{libf2c} to be more portable Modify @code{fseek_()} in @code{libf2c} to be more portable
(though, in practice, there might be no systems where this (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 @item
Some useless warnings from the @samp{-Wunused} option have Some useless warnings from the @samp{-Wunused} option have
...@@ -2032,7 +2040,7 @@ on AIX systems by linking with the @samp{-bbigtoc} option. ...@@ -2032,7 +2040,7 @@ on AIX systems by linking with the @samp{-bbigtoc} option.
@item @item
Abort configuration if @code{gcc} has not been patched 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. subdirectory.
@item @item
...@@ -2244,7 +2252,7 @@ maintainer's new address is @email{dmg@@bell-labs.com}. ...@@ -2244,7 +2252,7 @@ maintainer's new address is @email{dmg@@bell-labs.com}.
@itemize @bullet @itemize @bullet
@item @item
@strong{Fix serious bug} in @samp{g77 -v} command that can cause removal of a @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 @strong{All users} of version 0.5.16 should ensure that
they have not removed @file{/dev/null} or replaced it with an ordinary they have not removed @file{/dev/null} or replaced it with an ordinary
...@@ -2283,7 +2291,7 @@ never happen). ...@@ -2283,7 +2291,7 @@ never happen).
@item @item
Make @code{libf2c} build procedures work on more systems again by 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 @item
Fix omission of @samp{-funix-intrinsics-@dots{}} options in list of permitted 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()}, ...@@ -2362,7 +2370,7 @@ This is known to fix code invoking @code{ERF()}, @code{ERFC()},
@item @item
Update @code{libf2c} to include netlib patches through 1995-08-16, and 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 consistent with other Fortran implementations by outputting
leading zeros in formatted and list-directed output. leading zeros in formatted and list-directed output.
...@@ -2444,12 +2452,12 @@ and @code{SYSTEM}, append a final argument specifying an @code{INTEGER} ...@@ -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)}). variable or array element (e.g. @samp{CALL SYSTEM('rm foo',ISTAT)}).
@item @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. and by default enable this new group.
@item @item
Move @code{LOC()} intrinsic out of the @samp{vxt} group to the new Move @code{LOC()} intrinsic out of the @code{vxt} group to the new
@samp{unix} group. @code{unix} group.
@item @item
Improve @code{g77} so that @samp{g77 -v} by itself (or with Improve @code{g77} so that @samp{g77 -v} by itself (or with
...@@ -2706,7 +2714,7 @@ Allow @code{RETURN} in main program unit. ...@@ -2706,7 +2714,7 @@ Allow @code{RETURN} in main program unit.
Changes to Hollerith-constant support to obey Appendix C of the Changes to Hollerith-constant support to obey Appendix C of the
standard: standard:
@itemize -- @itemize @minus
@item @item
Now padded on the right with zeros, not spaces. Now padded on the right with zeros, not spaces.
...@@ -2734,7 +2742,7 @@ to widen to @code{INTEGER}), essentially. ...@@ -2734,7 +2742,7 @@ to widen to @code{INTEGER}), essentially.
@item @item
Changes and fixes to typeless-constant support: Changes and fixes to typeless-constant support:
@itemize -- @itemize @minus
@item @item
Now treated as a typeless double-length @code{INTEGER} value. Now treated as a typeless double-length @code{INTEGER} value.
......
...@@ -235,18 +235,6 @@ ffe_decode_option (argc, argv) ...@@ -235,18 +235,6 @@ ffe_decode_option (argc, argv)
warning ("%s no longer supported -- try -fvxt", opt); warning ("%s no longer supported -- try -fvxt", opt);
else if (strcmp (&opt[2], "f90-not-vxt") == 0) else if (strcmp (&opt[2], "f90-not-vxt") == 0)
warning ("%s no longer supported -- try -fno-vxt -ff90", opt); 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) else if (strcmp (&opt[2], "no-ugly") == 0)
{ {
ffe_set_is_ugly_args (FALSE); ffe_set_is_ugly_args (FALSE);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment