I object to the article just associating the term "IR" with LLVM IR.<p>IR is short for "Internal Representation". Most complex compilers have at least one level of IR, usually multiple ones that are progressively lower level.<p>The point is that an IR carries more information than machine code, and so potentially allows more specific optimizations.<p>This should at least be mentioned in the article.<p>Rust and Swift, for example, both use LLVM, but have their own intermediate levels of IR ('Mir' for Rust).<p>LLVM IR is already stripped of a lot of information that might be important for certain higher level optimizations. For example, numbers are all unsigned, and there are different operations for signed and unsigned arithmatic.