> I don't think that (1) is responsible for many differences; C doesn't> have anything that Pascal has. If anything, then Pascal is a bit more> difficult to generate code for (it's got nested functions), but that's> nothing that should really affect the time spent generating code.> (Anybody with real experience in this area please correct me!)

Don't forget that Turbo Pascal was originally written in assembly
language. The compiler itself was highly optimized (though not an
optimizing compiler) for performance, hence the moniker. Also, the
nested functions can speed things up a bit since they allow the
compiler to reduce the size of the symbol table. Also, Pascal, the
language, was designed to be compilable by a single-pass compiler, C
was not. Also, Turbo Pascal incorporated the linker (a
not-too-insignificant task in C) directly into the compiler and
Turbo's UNIT object code format made it very easy to quickly link in
separately compiled modules.

> (2) is a good candidate. Turbo Pascal always emitted horribly bad> code. So it seems that many C compilers spend a *lot* of time> optimizing the generated code. Anybody with concrete numbers from> compiler passes to back or falsify this hypothesis?

IIRC, recent Turbo Pascal compilers and Delphi uses (one of) the same
back end(s) as the Borland C++ offering. This explains recent speed
drops in the Pascal/Delphi compiler (though more than offset by
increased CPU speeds).

BTW, even if you turn optimization off, most C++ compilers are still
slower than most Pascal compilers. So my guess is that the
single-pass design of Pascal is a large contributing factor.