-
Couldn't load subscription status.
- Fork 13.9k
Description
I got excited by and went to try out SimplifyArmIdentity+SimplifyBranchSame from #66282, but was surprised that the first thing I attempted didn't actually get optimized away as I'd expected.
pub fn demo(x: Result<u32, i32>) -> Result<u32, i32> {
match x {
Ok(v) => Ok(v),
Err(e) => Err(e),
}
}Repro: https://rust.godbolt.org/z/bxFAsP
It does, however, optimize away in MIR with -Z mir-opt-level=2.
(Note that this is the simple case without ?, where there are no function calls involved so inlining should be irrelevant.)
Seems like there's a gap here? cc @Centril @oli-obk @wesleywiser
Some guesses from the discord conversation where centril asked me to open this issue: the Storage{Live|Dead} presence, extra copies because [ui]32, const prop hiding something, ...