This moves back (essentially reverts #30265) into MIR-specific translation code, but keeps the funcition split out, since it is expected to eventually become recursive. Fixes https://github.com/rust-lang/rust/issues/29572 cc @oli-obk