The reason shrink-wrapping doesn't work the way you expect it to is 25614 – Offset in CFI directives for frameless indirect compact unwind is wrong when the prologue is not in the entry block; the version of LLVM Rust is using definitely supports shrink-wrapping on x86.