Included with this item is the fact that @code{g77} doesn't recognize
that, on IEEE-754/854-compliant systems, @samp{0./0.} should produce a NaN
and no warning instead of the value @samp{0.} and a warning.
-This is to be fixed in version 0.6, when @code{g77} will use the
-@code{gcc} back end's constant-handling mechanisms to replace its own.
@cindex compiler speed
@cindex speed, of compiler
For example, @samp{REAL A(1000000)} followed by @samp{DATA A(1)/1/}
takes up way too much time and space, including
the size of the generated assembler file.
-This is to be mitigated somewhat in version 0.6.
Version 0.5.18 improves cases like this---specifically,
cases of @emph{sparse} initialization that leave large, contiguous
such as the Digital Semiconductor (``DEC'') Alpha.
This problem is largely resolved as of version 0.5.23.
-Version 0.6 should solve most or all remaining problems
-(such as cross-compiling involving 64-bit machines).
@cindex padding
@cindex structures
This chapter describes some aspects of the design and implementation
of the @code{g77} front end.
-Much of the information below applies not to current
-releases of @code{g77},
-but to the 0.6 rewrite being designed and implemented
-as of late May, 1999.
To find about things that are ``To Be Determined'' or ``To Be Done'',
search for the string TBD.
to facilities outside of @code{g77}, such as to C or Pascal code.
Names of intrinsics will probably be matchable in any case,
-However, there probably won't be any option to require
-a particular mixed-case appearance of intrinsics
-(as there was for @code{g77} prior to version 0.6),
-because that's painful to maintain,
-and probably nobody uses it.
(How @samp{external SiN; r = sin(x)} would be handled is TBD.
I think old @code{g77} might already handle that pretty elegantly,
@code{LOGICAL*1}.
This inspired Craig to add further support,
even though the resulting support
-would still be incomplete, because version 0.6 is still
-a ways off.
+would still be incomplete.
@item
David Ronis (@email{ronis@@onsager.chem.mcgill.ca}) inspired
Another important way to support work on GNU Fortran is to volunteer
to help out.
-Work is needed on documentation, testing, porting
-to various machines, and in some cases, coding (although major
-changes planned for version 0.6 make it difficult to add manpower to this
-area).
Email @email{@value{email-general}} to volunteer for this work.
are explicitly left to the implementation by the published Fortran
standards.
GNU Fortran currently tries to be somewhat like a few popular compilers
-(@command{f2c}, Digital (``DEC'') Fortran, and so on), though a cleaner default
-definition along with more
-flexibility offered by command-line options is likely to be offered
-in version 0.6.
+(@command{f2c}, Digital (``DEC'') Fortran, and so on).
This section describes how @command{g77} interprets source lines.
information to decide how to interpret the length of the line and continued
constants.
-Note that this default behavior probably will change for version 0.6,
-when it will presumably be available via a command-line option.
-The default as of version 0.6 is planned to be a ``pure visual''
-model, where tabs are immediately
-converted to spaces and otherwise have no effect, so the way a typical
-user sees source lines produces a consistent result no matter how the
-spacing in those source lines is actually implemented via tabs, spaces,
-and trailing tabs/spaces before newline.
-Command-line options are likely to be added to specify whether all or
-just-tabbed lines are to be extended to 132 or full input-line length,
-and perhaps even an option will be added to specify the truncated-line
-behavior to which some Digital compilers default (and which affects
-the way continued character/Hollerith constants are interpreted).
-
@node Short Lines
@subsection Short Lines
@cindex short source lines
@cindex statements, PARAMETER
@command{g77} doesn't allow intrinsics in @code{PARAMETER} statements.
-This feature is considered to be absolutely vital, even though it
-is not standard-conforming, and is scheduled for version 0.6.
Related to this, @command{g77} doesn't allow non-integral
exponentiation in @code{PARAMETER} statements, such as
@command{g77} doesn't fully support @code{INTEGER*2}, @code{LOGICAL*1},
and similar.
-Version 0.6 will provide full support for this very
-popular set of features.
In the meantime, version 0.5.18 provides rudimentary support
for them.
machines will result in automatic support of @code{INTEGER*1},
@code{INTEGER*2}, @code{INTEGER*8}, maybe even @code{REAL*16},
and so on.
-This is scheduled for version 0.6.
@node Array Bounds Expressions
@subsection Array Bounds Expressions
Probably the best solution for now, but not quite trivial
to implement in the general case.
-Worth considering after @command{g77} 0.6 is considered
-pretty solid.
@end itemize
@node Gracefully Handle Sensible Bad Code
@emph{Note:} Currently, the text of the line and a pointer to the column
is printed in most @command{g77} diagnostics.
-Probably, as of version 0.6, @command{g77} will
-no longer print the text of the source line, instead printing
-the column number following the file name and line number in
-a form that GNU Emacs recognizes.
-This change is expected to speed up and reduce the memory usage
-of the @command{g77} compiler.
-@c
-@c Say this when it is true -- hopefully 0.6, maybe 0.7 or later. --burley
-@c
-@c GNU Fortran always tries to compile your program if possible; it never
-@c gratuitously rejects a program whose meaning is clear merely because
-@c (for instance) it fails to conform to a standard. In some cases,
-@c however, the Fortran standard specifies that certain extensions are
-@c forbidden, and a diagnostic @emph{must} be issued by a conforming
-@c compiler. The @option{-pedantic} option tells GNU Fortran to issue warnings
-@c in such cases; @option{-pedantic-errors} says to make them errors instead.
-@c This does not mean that @emph{all} non-ANSI constructs get warnings
-@c or errors.
@xref{Warning Options,,Options to Request or Suppress Warnings}, for
more detail on these and related command-line options.
@section Internals Documentation
Better info on how @command{g77} works and how to port it is needed.
-Much of this should be done only after the redesign planned for
-0.6 is complete.
@xref{Front End}, which contains some information
on @command{g77} internals.