You can't prove safety properties of something that isn't safe. LLVM IR sure isn't.
Looks like people have had this idea before: https://internals.rust-lang.org/t/safe-rust-sandboxing-untru...
On the other hand, maybe this role is better served by WebAssembly.
Safety guarantees can only work if you carefully choose and rely on appropriate abstractions for your problem.
Especially when there are many currently known bugs of this sort:
https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Ais...
But verification can be easier for higher-level languages.