Closed
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, ...
Metadata
Metadata
Assignees
Labels
Area: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlArea: MIR optimizationsCategory: An issue proposing an enhancement or a PR with one.Issue: Problems and improvements with respect to compile times.Relevant to the compiler team, which will review and decide on the PR/issue.This issue requires a nightly compiler in some way.