|
|
|
|
|
by JonChesterfield
935 days ago
|
|
A compiler translates from language A to language B, hopefully improving it along the way. If you let A = B, you get the compiler pipeline model. It's popular because it's effective and obvious. LLVM has the core IR structure as an in memory structure and as a text format and as a binary format. The easy, lossless (modulo partial implementation of new features) conversion between the formats was a really big deal. I'd be interested to hear of prior art on it. In particular, it means developers can diff the IR between passes and generally apply textbased tooling to it during debugging, and you can do things like link time optimisation really easily by combining separate files then running them through the optimiser. LLVM is creaking a little under its age, and I don't think it's ideal that it's written in C++, but the flexible architecture is legitimately better than I've seen in other compilers. In particular, it has been a competitive edge over GCC. |
|
Unfortunely when they killed the project, little was left on the Internet, and they have other projects with the same name.
https://en.wikipedia.org/wiki/Microsoft_Phoenix
https://devblogs.microsoft.com/cppblog/channel-9-video-andy-...
The paper "An overview of the PL.8 compiler" refers to how they implemented a multi-stage IL pipeline to write a mostly safe systems programming for IBM RISC project.
https://dl.acm.org/doi/10.1145/800230.806977
Unfortunely there isn't much publicly available, and IBM eventually pivoted the RISC efforts into AIX, thus abandoning this effort.
Amsterdam Compiler Toolkit used EM intermediate language as its bitcode format,
https://en.wikipedia.org/wiki/Amsterdam_Compiler_Kit
If you delve into ACM, IEEE, SIGPLAN and related stuff, there will be similar projects, LLVM ended up getting the spotlight thanks to Apple and Google's sponsorship, followed by others in the industry.
I still hope that GraalVM (nee MaximeVM at Sun Research Labs) will keep going, as it is yet another approach for compiler toolkits, with a safer language.