per-file compilation to linkable object files is done in parallel, probably locally scoped optimizations as well
some stages and passes can be pipelined, although C++ crowd promotes single-pass compilers
Plan 9 C compiler had a linker that could not be parallelized (see https://9p.io/sys/doc/compiler.html
, chapters 6. The loader and 8. Conclusions), I wonder if this is still a thing or Plan 9 folks deliberately avoided complexity to keep it slow as usual. No idea how link-time optimization even werks.