Auto merge of #73210 - wesleywiser:consts_in_debuginfo, r=oli-obk
[mir-opt] Allow debuginfo to be generated for a constant or a Place Prior to this commit, debuginfo was always generated by mapping a name to a Place. This has the side-effect that `SimplifyLocals` cannot remove locals that are only used for debuginfo because their other uses have been const-propagated. To allow these locals to be removed, we now allow debuginfo to point to a constant value. The `ConstProp` pass detects when debuginfo points to a local with a known constant value and replaces it with the value. This allows the later `SimplifyLocals` pass to remove the local.
This commit is contained in:
commit
e99a89c7c0
16 changed files with 398 additions and 79 deletions
|
@ -1409,10 +1409,11 @@ fn generator_layout_and_saved_local_names(
|
|||
|
||||
let state_arg = mir::Local::new(1);
|
||||
for var in &body.var_debug_info {
|
||||
if var.place.local != state_arg {
|
||||
let place = if let mir::VarDebugInfoContents::Place(p) = var.value { p } else { continue };
|
||||
if place.local != state_arg {
|
||||
continue;
|
||||
}
|
||||
match var.place.projection[..] {
|
||||
match place.projection[..] {
|
||||
[
|
||||
// Deref of the `Pin<&mut Self>` state argument.
|
||||
mir::ProjectionElem::Field(..),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue