Rust's inline assembly is completely undocumented and almost, but not quite the same as LLVM/Clang's inline assembly, which in turn is completely undocumented and almost, but not quite the same as GCC. Can we get rid of it please? LLVM most likely has an optimization for this anyway.

I'm not convinced `expr` is correct either. `ident` perhaps?