Skip to content

Commit

Permalink
simplify_try: print dest_prop diff and bless
Browse files Browse the repository at this point in the history
The new diff is to convince me that this is correct and nothing funky
is going on.
  • Loading branch information
jonas-schievink committed Sep 18, 2020
1 parent 78ff69b commit 43ad8e4
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 2 deletions.
72 changes: 72 additions & 0 deletions src/test/mir-opt/rustc.try_identity.DestinationPropagation.diff
@@ -0,0 +1,72 @@
- // MIR for `try_identity` before DestinationPropagation
+ // MIR for `try_identity` after DestinationPropagation

fn try_identity(_1: std::result::Result<u32, i32>) -> std::result::Result<u32, i32> {
debug x => _1; // in scope 0 at $DIR/simplify_try.rs:5:17: 5:18
let mut _0: std::result::Result<u32, i32>; // return place in scope 0 at $DIR/simplify_try.rs:5:41: 5:57
let _2: u32; // in scope 0 at $DIR/simplify_try.rs:6:9: 6:10
let mut _3: std::result::Result<u32, i32>; // in scope 0 at $DIR/simplify_try.rs:6:13: 6:15
let mut _4: std::result::Result<u32, i32>; // in scope 0 at $DIR/simplify_try.rs:6:13: 6:14
let mut _5: isize; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let _6: i32; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let mut _7: !; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let mut _8: i32; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let mut _9: i32; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let _10: u32; // in scope 0 at $DIR/simplify_try.rs:6:13: 6:15
let mut _11: u32; // in scope 0 at $DIR/simplify_try.rs:7:8: 7:9
scope 1 {
debug y => _2; // in scope 1 at $DIR/simplify_try.rs:6:9: 6:10
}
scope 2 {
debug err => _6; // in scope 2 at $DIR/simplify_try.rs:6:14: 6:15
scope 3 {
scope 7 {
debug t => _9; // in scope 7 at $SRC_DIR/libcore/convert/mod.rs:LL:COL
}
scope 8 {
debug v => _8; // in scope 8 at $SRC_DIR/libcore/result.rs:LL:COL
let mut _12: i32; // in scope 8 at $DIR/simplify_try.rs:6:14: 6:15
}
}
}
scope 4 {
debug val => _10; // in scope 4 at $DIR/simplify_try.rs:6:13: 6:15
scope 5 {
}
}
scope 6 {
- debug self => _4; // in scope 6 at $SRC_DIR/libcore/result.rs:LL:COL
+ debug self => _0; // in scope 6 at $SRC_DIR/libcore/result.rs:LL:COL
}

bb0: {
StorageLive(_2); // scope 0 at $DIR/simplify_try.rs:6:9: 6:10
- StorageLive(_3); // scope 0 at $DIR/simplify_try.rs:6:13: 6:15
- StorageLive(_4); // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
- _4 = _1; // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
- _3 = move _4; // scope 6 at $SRC_DIR/libcore/result.rs:LL:COL
- StorageDead(_4); // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
- _5 = discriminant(_3); // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
+ nop; // scope 0 at $DIR/simplify_try.rs:6:13: 6:15
+ nop; // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
+ _0 = _1; // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
+ nop; // scope 6 at $SRC_DIR/libcore/result.rs:LL:COL
+ nop; // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
+ _5 = discriminant(_0); // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
goto -> bb1; // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
}

bb1: {
- _0 = move _3; // scope 1 at $DIR/simplify_try.rs:7:5: 7:10
- StorageDead(_3); // scope 0 at $DIR/simplify_try.rs:6:15: 6:16
+ nop; // scope 1 at $DIR/simplify_try.rs:7:5: 7:10
+ nop; // scope 0 at $DIR/simplify_try.rs:6:15: 6:16
StorageDead(_2); // scope 0 at $DIR/simplify_try.rs:8:1: 8:2
goto -> bb2; // scope 0 at $DIR/simplify_try.rs:8:2: 8:2
}

bb2: {
return; // scope 0 at $DIR/simplify_try.rs:8:2: 8:2
}
}

2 changes: 2 additions & 0 deletions src/test/mir-opt/simplify_try.rs
Expand Up @@ -10,3 +10,5 @@ fn try_identity(x: Result<u32, i32>) -> Result<u32, i32> {
fn main() {
let _ = try_identity(Ok(0));
}

// EMIT_MIR simplify_try.try_identity.DestinationPropagation.diff
@@ -0,0 +1,72 @@
- // MIR for `try_identity` before DestinationPropagation
+ // MIR for `try_identity` after DestinationPropagation

fn try_identity(_1: std::result::Result<u32, i32>) -> std::result::Result<u32, i32> {
debug x => _1; // in scope 0 at $DIR/simplify_try.rs:5:17: 5:18
let mut _0: std::result::Result<u32, i32>; // return place in scope 0 at $DIR/simplify_try.rs:5:41: 5:57
let _2: u32; // in scope 0 at $DIR/simplify_try.rs:6:9: 6:10
let mut _3: std::result::Result<u32, i32>; // in scope 0 at $DIR/simplify_try.rs:6:13: 6:15
let mut _4: std::result::Result<u32, i32>; // in scope 0 at $DIR/simplify_try.rs:6:13: 6:14
let mut _5: isize; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let _6: i32; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let mut _7: !; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let mut _8: i32; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let mut _9: i32; // in scope 0 at $DIR/simplify_try.rs:6:14: 6:15
let _10: u32; // in scope 0 at $DIR/simplify_try.rs:6:13: 6:15
let mut _11: u32; // in scope 0 at $DIR/simplify_try.rs:7:8: 7:9
scope 1 {
debug y => ((_0 as Ok).0: u32); // in scope 1 at $DIR/simplify_try.rs:6:9: 6:10
}
scope 2 {
debug err => ((_0 as Err).0: i32); // in scope 2 at $DIR/simplify_try.rs:6:14: 6:15
scope 3 {
scope 7 {
debug t => ((_0 as Err).0: i32); // in scope 7 at $SRC_DIR/core/src/convert/mod.rs:LL:COL
}
scope 8 {
debug v => ((_0 as Err).0: i32); // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL
let mut _12: i32; // in scope 8 at $DIR/simplify_try.rs:6:14: 6:15
}
}
}
scope 4 {
debug val => ((_0 as Ok).0: u32); // in scope 4 at $DIR/simplify_try.rs:6:13: 6:15
scope 5 {
}
}
scope 6 {
- debug self => _4; // in scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
+ debug self => _0; // in scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
}

bb0: {
StorageLive(_2); // scope 0 at $DIR/simplify_try.rs:6:9: 6:10
- StorageLive(_3); // scope 0 at $DIR/simplify_try.rs:6:13: 6:15
- StorageLive(_4); // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
- _4 = _1; // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
- _3 = move _4; // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
- StorageDead(_4); // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
- _5 = discriminant(_3); // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
+ nop; // scope 0 at $DIR/simplify_try.rs:6:13: 6:15
+ nop; // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
+ _0 = _1; // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
+ nop; // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
+ nop; // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
+ _5 = discriminant(_0); // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
goto -> bb1; // scope 0 at $DIR/simplify_try.rs:6:14: 6:15
}

bb1: {
- _0 = move _3; // scope 1 at $DIR/simplify_try.rs:7:5: 7:10
- StorageDead(_3); // scope 0 at $DIR/simplify_try.rs:6:15: 6:16
+ nop; // scope 1 at $DIR/simplify_try.rs:7:5: 7:10
+ nop; // scope 0 at $DIR/simplify_try.rs:6:15: 6:16
StorageDead(_2); // scope 0 at $DIR/simplify_try.rs:8:1: 8:2
goto -> bb2; // scope 0 at $DIR/simplify_try.rs:8:2: 8:2
}

bb2: {
return; // scope 0 at $DIR/simplify_try.rs:8:2: 8:2
}
}

Expand Up @@ -23,11 +23,11 @@ fn try_identity(_1: std::result::Result<u32, i32>) -> std::result::Result<u32, i
}
}
scope 6 {
debug self => _1; // in scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
debug self => _0; // in scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
}

bb0: {
_0 = move _1; // scope 1 at $DIR/simplify_try.rs:7:5: 7:10
_0 = _1; // scope 0 at $DIR/simplify_try.rs:6:13: 6:14
return; // scope 0 at $DIR/simplify_try.rs:8:2: 8:2
}
}

0 comments on commit 43ad8e4

Please sign in to comment.