So the thing about LLVM IR is, in reality it's a family of accidental and informally defined dialects. Every LLVM-based compiler for a particular machine target refines the input module down to its own idiosyncratic dialect.
Consequently there's way more latitude for confusion and bugs than you'd initially guess.
Try using an i65 type in an x86 backend. When I did that years ago it sailed right through and generated nonsense code.
Supporting LTO in Rust seems really complicated. Reading pacman discussions, and issues in the ring crate. Weird things that different compiler toolchains do, and they all do slightly different things. #rust#compilers
With some help from bjorn3 this was reasonably straightforward. I think the PRs are good templates for of someone wanted to work on a real compiler and implement further SIMD functionality. This issue lists some missing intrinsics