What language is your compiler written in? Most languages have an off the shelf implementation of map / map-reduce or similar these days, which would seem well-suited to compiler tasks and greatly simplifies parallelizing jobs. We use map and map-reduce patterns in C++ heavily which is quite nice since if you've got that relatively small core of code thread safe you can mostly ignore thread safety in the major portions.
You also can often speed up I/O that way since you can saturate both your I/O and CPU bandwidth, rather than alternating between waiting on them.
I also take it that you're not compiling to individual object files since usually compilation since usual compile parallelization is based on farming out single object file compilations to multiple machines or processes.
I wrote some small portions of "icecream" which is used for compilation parallelization by the guys at SUSE and there it would actually transmit over the network a full chroot environment so that even different Linux installs working on compatible architectures (later cross-compiler support was added as well) could execute the compiler jobs of rather different OSes.