Exclude locals completely, instead of individual places
This commit is contained in:
parent
b3f648958d
commit
2e034dc68c
3 changed files with 85 additions and 29 deletions
|
|
@ -0,0 +1,56 @@
|
|||
- // MIR for `main` before DataflowConstProp
|
||||
+ // MIR for `main` after DataflowConstProp
|
||||
|
||||
fn main() -> () {
|
||||
let mut _0: (); // return place in scope 0 at $DIR/sibling_ptr.rs:+0:11: +0:11
|
||||
let mut _1: (u8, u8); // in scope 0 at $DIR/sibling_ptr.rs:+1:9: +1:14
|
||||
let _2: (); // in scope 0 at $DIR/sibling_ptr.rs:+2:5: +5:6
|
||||
let mut _4: *mut u8; // in scope 0 at $DIR/sibling_ptr.rs:+4:10: +4:18
|
||||
let mut _5: *mut u8; // in scope 0 at $DIR/sibling_ptr.rs:+4:10: +4:11
|
||||
scope 1 {
|
||||
debug x => _1; // in scope 1 at $DIR/sibling_ptr.rs:+1:9: +1:14
|
||||
let _6: u8; // in scope 1 at $DIR/sibling_ptr.rs:+6:9: +6:11
|
||||
scope 2 {
|
||||
let _3: *mut u8; // in scope 2 at $DIR/sibling_ptr.rs:+3:13: +3:14
|
||||
scope 3 {
|
||||
debug p => _3; // in scope 3 at $DIR/sibling_ptr.rs:+3:13: +3:14
|
||||
}
|
||||
}
|
||||
scope 4 {
|
||||
debug x1 => _6; // in scope 4 at $DIR/sibling_ptr.rs:+6:9: +6:11
|
||||
}
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/sibling_ptr.rs:+1:9: +1:14
|
||||
Deinit(_1); // scope 0 at $DIR/sibling_ptr.rs:+1:27: +1:33
|
||||
(_1.0: u8) = const 0_u8; // scope 0 at $DIR/sibling_ptr.rs:+1:27: +1:33
|
||||
(_1.1: u8) = const 0_u8; // scope 0 at $DIR/sibling_ptr.rs:+1:27: +1:33
|
||||
StorageLive(_2); // scope 1 at $DIR/sibling_ptr.rs:+2:5: +5:6
|
||||
StorageLive(_3); // scope 2 at $DIR/sibling_ptr.rs:+3:13: +3:14
|
||||
_3 = &raw mut (_1.0: u8); // scope 2 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
StorageLive(_4); // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:18
|
||||
StorageLive(_5); // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:11
|
||||
_5 = _3; // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:11
|
||||
_4 = ptr::mut_ptr::<impl *mut u8>::add(move _5, const 1_usize) -> bb1; // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:18
|
||||
// mir::Constant
|
||||
// + span: $DIR/sibling_ptr.rs:8:12: 8:15
|
||||
// + literal: Const { ty: unsafe fn(*mut u8, usize) -> *mut u8 {ptr::mut_ptr::<impl *mut u8>::add}, val: Value(<ZST>) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageDead(_5); // scope 3 at $DIR/sibling_ptr.rs:+4:17: +4:18
|
||||
(*_4) = const 1_u8; // scope 3 at $DIR/sibling_ptr.rs:+4:9: +4:22
|
||||
StorageDead(_4); // scope 3 at $DIR/sibling_ptr.rs:+4:22: +4:23
|
||||
_2 = const (); // scope 2 at $DIR/sibling_ptr.rs:+2:5: +5:6
|
||||
StorageDead(_3); // scope 2 at $DIR/sibling_ptr.rs:+5:5: +5:6
|
||||
StorageDead(_2); // scope 1 at $DIR/sibling_ptr.rs:+5:5: +5:6
|
||||
StorageLive(_6); // scope 1 at $DIR/sibling_ptr.rs:+6:9: +6:11
|
||||
_6 = (_1.1: u8); // scope 1 at $DIR/sibling_ptr.rs:+6:14: +6:17
|
||||
_0 = const (); // scope 0 at $DIR/sibling_ptr.rs:+0:11: +7:2
|
||||
StorageDead(_6); // scope 1 at $DIR/sibling_ptr.rs:+7:1: +7:2
|
||||
StorageDead(_1); // scope 0 at $DIR/sibling_ptr.rs:+7:1: +7:2
|
||||
return; // scope 0 at $DIR/sibling_ptr.rs:+7:2: +7:2
|
||||
}
|
||||
}
|
||||
|
||||
11
src/test/mir-opt/dataflow-const-prop/sibling_ptr.rs
Normal file
11
src/test/mir-opt/dataflow-const-prop/sibling_ptr.rs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// unit-test: DataflowConstProp
|
||||
|
||||
// EMIT_MIR sibling_ptr.main.DataflowConstProp.diff
|
||||
fn main() {
|
||||
let mut x: (u8, u8) = (0, 0);
|
||||
unsafe {
|
||||
let p = std::ptr::addr_of_mut!(x.0);
|
||||
*p.add(1) = 1;
|
||||
}
|
||||
let x1 = x.1; // should not be propagated
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue