A 63-pass FORTRAN compiler for the IBM 1401, illustrated
ibm-1401.info
ibm-1401.info
The Fortran compiler is 63 phases (not passes). Each phase contains an average of 150 instructions and a maximum of 300 instructions. Can you imagine that? Breaking a compiler into chunks of 300 instructions?
My favorite phase is #8: "Squoze", which squeezes out type-defining words to free up more space. Keep in mind that the compiler, the source, and the output need to fit in 8000 characters, so every character is precious. (Because of decimal addresses, it really is 8000 character, not 8192.)
The original paper is here: https://www.cs.sjsu.edu/~mak/archive/CS153/lectures/IBM1401F... The paper estimates that breaking the compiler into 63 phases slows it down under 30%, which is a lot less than I would have expected.
That works with fortran because it doesn't (didn't; that has changed since) have dynamic memory allocation or recursion.