[Beowulf] f2c

Jim Lux James.P.Lux at jpl.nasa.gov
Thu Mar 15 15:45:30 PDT 2007

At 11:38 AM 3/15/2007, Robert G. Brown wrote:
>On Thu, 15 Mar 2007, Leif Nixon wrote:
>>"Peter St. John" <peter.st.john at gmail.com> writes:
>>>I had thought that after some point (say, f77) the practical thing was to
>>>translate fortran to C and use the C compiler, just because compiler writers
>>>love C, adopted it hugely, and write great compilers. Apparently I was
>>Compilers are designed to compile code written by humans.
>>Autogenerated code typically does not optimize well.
>Or be human-readable.  f2c code was just about as evil as any zomby
>woof or eskimo boy could be.  I used to try to use it to START porting
>fortran sources to C, but rapidly concluded that it was actually easier
>and saner to just rewrite the algorithms in native C by hand.  It was a
>really educational experience for those that would assert that fortran
>is "just like" C on the back end, though -- "just like" is well defined
>by the required compatibility libraries and stuff that has to be done to
>convert data structures.  They were not, not, not pretty...

Essentially this is no different than expecting to be able to read 
any of the intermediate pass outputs of the compiler (ASM if it 
generates it, or raw object code).  IF f2c were guaranteed bug free, 
it would be no different than compiling FORTRAN to assembler, and 
there would be no value in being able to human read the intermediate 
form (quick now, how many of you, except embedded processor 
programmers and compiler and benchmark geeks, actually look at the 
code the compiler generates? - or given the readership of this list.. 
how many of you in that small minority not fitting in the previous categories)

And, my very limited experience with f2c showed that it generated 
incorrect code in some cases (or, at least, a perfectly reasonable 
FORTRAN program that compiled and ran with a FORTRAN compiler either 
did not compile/link or give the same output).  That, in itself, 
prompted me to abandon any thought of it (well.. I actually abandoned 
it after actually looking at the generated output, thinking, naively, 
that there would be some simple problem in the C code that could be 
fixed up...)

Then, the issue that Leif raises is important... the output of f2c is 
not generally designed to match the expectations of an optimizing c 
compiler.  It could be, but I doubt that was intent of writing 
it.  This is why it's basically a hack to get around having a *real* 
FORTRAN compiler.

And of course, as the compiler writers on this list will tell you, 
every language is different, and leads to different optimization 
strategies, particularly if you care about performance. There's a 
significant difference in semantics between languages, as well as syntax.

Good compilers are worth their substantial development cost (whether 
the cost is borne by the buyer, by some generous soul donating their 
time to the cause, or by a company using them as a marketing 
tool).  Good compiler writers are worth their (hopefully) substantial wages.

James Lux, P.E.
Spacecraft Radio Frequency Subsystems Group
Flight Communications Systems Section
Jet Propulsion Laboratory, Mail Stop 161-213
4800 Oak Grove Drive
Pasadena CA 91109
tel: (818)354-2075
fax: (818)393-6875 

More information about the Beowulf mailing list