A New Back End for Cranelift: Instruction Selection
cfallin.org
cfallin.org
Also happily surprised that this can all be explained in such a practical and "plain english" way--without requiring a ton of compiler or CS terminology. (At least it matches my casual level of compilation knowledge very well)
I'd blame professors for that.
I started working at the beginning of school and it shocked me everytime when relatively easy concepts or just possible to explain easily are "artifically" made to sound harder due to using very formal language or formal way of presenting them.
I'm aware of the purpose and reasoning behind this, but I don't 100% agree with that approach. Sometimes it's not effective.
Personally, I do ML and stats for a living, and the notation really does make things easier, while your comment is often thrown at math notation too.
https://www.sable.mcgill.ca/soot/tutorial/shimple/index.html
The SSA form is useful for a few optimizations, but complicates things in many other cases. Also a lot of program analysis can be done without SSA form. Also, SSA seems not to be the fastests in a JIT setting.
The GNU Lightning JIT engine doesn't use SSA, for that reason, but Java HotSpot, .Net, and Mono, all use it internally, as do all major optimising ahead-of-time compilers (GCC, LLVM, etc).