ff8c0ef0e4
MIR lowering for `if let` expressions is now more complicated now that `if let` exists in HIR. This PR adds a scope for the variables bound in an `if let` expression and then uses an approach similar to how we handle loops to ensure that we reliably drop the correct variables.
40 lines
2.2 KiB
Diff
40 lines
2.2 KiB
Diff
- // MIR for `opt_u32` before SimplifyComparisonIntegral
|
|
+ // MIR for `opt_u32` after SimplifyComparisonIntegral
|
|
|
|
fn opt_u32(_1: u32) -> u32 {
|
|
debug x => _1; // in scope 0 at $DIR/if-condition-int.rs:11:12: 11:13
|
|
let mut _0: u32; // return place in scope 0 at $DIR/if-condition-int.rs:11:23: 11:26
|
|
let mut _2: bool; // in scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
let mut _3: u32; // in scope 0 at $DIR/if-condition-int.rs:12:8: 12:9
|
|
|
|
bb0: {
|
|
StorageLive(_2); // scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
StorageLive(_3); // scope 0 at $DIR/if-condition-int.rs:12:8: 12:9
|
|
_3 = _1; // scope 0 at $DIR/if-condition-int.rs:12:8: 12:9
|
|
- _2 = Eq(move _3, const 42_u32); // scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
- StorageDead(_3); // scope 0 at $DIR/if-condition-int.rs:12:14: 12:15
|
|
- switchInt(move _2) -> [false: bb2, otherwise: bb1]; // scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
+ nop; // scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
+ nop; // scope 0 at $DIR/if-condition-int.rs:12:14: 12:15
|
|
+ switchInt(move _3) -> [42_u32: bb1, otherwise: bb2]; // scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
}
|
|
|
|
bb1: {
|
|
+ StorageDead(_3); // scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
_0 = const 0_u32; // scope 0 at $DIR/if-condition-int.rs:12:18: 12:19
|
|
goto -> bb3; // scope 0 at $DIR/if-condition-int.rs:12:5: 12:32
|
|
}
|
|
|
|
bb2: {
|
|
+ StorageDead(_3); // scope 0 at $DIR/if-condition-int.rs:12:8: 12:15
|
|
_0 = const 1_u32; // scope 0 at $DIR/if-condition-int.rs:12:29: 12:30
|
|
goto -> bb3; // scope 0 at $DIR/if-condition-int.rs:12:5: 12:32
|
|
}
|
|
|
|
bb3: {
|
|
StorageDead(_2); // scope 0 at $DIR/if-condition-int.rs:12:31: 12:32
|
|
return; // scope 0 at $DIR/if-condition-int.rs:13:2: 13:2
|
|
}
|
|
}
|
|
|