Go to the first, previous, next, last section, table of contents.
g77 has the potential to better optimize code than f2c,
even when gcc is used to compile the output of f2c,
because f2c must necessarily
translate Fortran into a somewhat lower-level language (C) that cannot
preserve all the information that is potentially useful for optimization,
while g77 can gather, preserve, and transmit that information directly
to the GBE.
For example, g77 implements ASSIGN and assigned
GOTO using direct assignment of pointers to labels and direct
jumps to labels, whereas f2c maps the assigned labels to
integer values and then uses a C switch statement to encode
the assigned GOTO statements.
However, as is typical, theory and reality don't quite match, at least
not in all cases, so it is still the case that f2c plus gcc
can generate code that is faster than g77.
Version 0.5.18 of g77 offered default
settings and options, via patches to the gcc
back end, that allow for better program speed, though
some of these improvements also affected the performance
of programs translated by f2c and then compiled
by g77's version of gcc.
Version 0.5.20 of g77 offers further performance
improvements, at least one of which (alias analysis) is
not generally applicable to f2c (though f2c
could presumably be changed to also take advantage of
this new capability of the gcc back end, assuming
this is made available in an upcoming release of gcc).
Go to the first, previous, next, last section, table of contents.