Created
April 21, 2022 20:09
-
-
Save eholk/b116d5050f0275d619c024ee2c102e41 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MIR for `foo::{closure#0}` before StateTransform | |
fn foo::{closure#0}(_1: [static generator@src/test/ui/generator/addassign-yield.rs:19:14: 27:6], _2: ()) -> () | |
yields () | |
{ | |
let mut _0: (); // return place in scope 0 at src/test/ui/generator/addassign-yield.rs:19:24: 19:24 | |
let _3: &mut i32; // in scope 0 at src/test/ui/generator/addassign-yield.rs:20:13: 20:14 | |
let mut _4: i32; // in scope 0 at src/test/ui/generator/addassign-yield.rs:20:22: 20:23 | |
let mut _5: i32; // in scope 0 at src/test/ui/generator/addassign-yield.rs:24:14: 26:10 | |
let mut _6: std::string::String; // in scope 0 at src/test/ui/generator/addassign-yield.rs:24:20: 24:33 | |
let mut _7: &mut i32; // in scope 0 at src/test/ui/generator/addassign-yield.rs:21:10: 24:10 | |
let _8: (); // in scope 0 at src/test/ui/generator/addassign-yield.rs:22:13: 22:18 | |
let mut _9: (); // in scope 0 at src/test/ui/generator/addassign-yield.rs:22:13: 22:18 | |
let mut _10: (i32, bool); // in scope 0 at src/test/ui/generator/addassign-yield.rs:21:9: 26:10 | |
scope 1 { | |
debug x => _3; // in scope 1 at src/test/ui/generator/addassign-yield.rs:20:13: 20:14 | |
} | |
bb0: { | |
StorageLive(_3); // scope 0 at src/test/ui/generator/addassign-yield.rs:20:13: 20:14 | |
StorageLive(_4); // scope 0 at src/test/ui/generator/addassign-yield.rs:20:22: 20:23 | |
_4 = const 0_i32; // scope 0 at src/test/ui/generator/addassign-yield.rs:20:22: 20:23 | |
_3 = &mut _4; // scope 0 at src/test/ui/generator/addassign-yield.rs:20:17: 20:23 | |
StorageLive(_5); // scope 1 at src/test/ui/generator/addassign-yield.rs:24:14: 26:10 | |
StorageLive(_6); // scope 1 at src/test/ui/generator/addassign-yield.rs:24:20: 24:33 | |
_6 = String::new() -> bb1; // scope 1 at src/test/ui/generator/addassign-yield.rs:24:20: 24:33 | |
// mir::Constant | |
// + span: src/test/ui/generator/addassign-yield.rs:24:20: 24:31 | |
// + literal: Const { ty: fn() -> String {String::new}, val: Value(Scalar(<ZST>)) } | |
} | |
bb1: { | |
_5 = const 0_i32; // scope 1 at src/test/ui/generator/addassign-yield.rs:25:18: 25:19 | |
StorageLive(_7); // scope 1 at src/test/ui/generator/addassign-yield.rs:21:10: 24:10 | |
StorageLive(_8); // scope 1 at src/test/ui/generator/addassign-yield.rs:22:13: 22:18 | |
StorageLive(_9); // scope 1 at src/test/ui/generator/addassign-yield.rs:22:13: 22:18 | |
Deinit(_9); // scope 1 at src/test/ui/generator/addassign-yield.rs:22:13: 22:18 | |
_8 = yield(move _9) -> [resume: bb2, drop: bb5]; // scope 1 at src/test/ui/generator/addassign-yield.rs:22:13: 22:18 | |
} | |
bb2: { | |
StorageDead(_9); // scope 1 at src/test/ui/generator/addassign-yield.rs:22:17: 22:18 | |
StorageDead(_8); // scope 1 at src/test/ui/generator/addassign-yield.rs:22:18: 22:19 | |
_7 = move _3; // scope 1 at src/test/ui/generator/addassign-yield.rs:23:13: 23:14 | |
_10 = CheckedAdd((*_7), _5); // scope 1 at src/test/ui/generator/addassign-yield.rs:21:9: 26:10 | |
assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", (*_7), move _5) -> [success: bb3, unwind: bb7]; // scope 1 at src/test/ui/generator/addassign-yield.rs:21:9: 26:10 | |
} | |
bb3: { | |
(*_7) = move (_10.0: i32); // scope 1 at src/test/ui/generator/addassign-yield.rs:21:9: 26:10 | |
StorageDead(_5); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:9: 26:10 | |
StorageDead(_7); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
drop(_6) -> [return: bb4, unwind: bb8]; // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
} | |
bb4: { | |
StorageDead(_6); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
_0 = const (); // scope 0 at src/test/ui/generator/addassign-yield.rs:19:24: 27:6 | |
StorageDead(_4); // scope 0 at src/test/ui/generator/addassign-yield.rs:27:5: 27:6 | |
StorageDead(_3); // scope 0 at src/test/ui/generator/addassign-yield.rs:27:5: 27:6 | |
return; // scope 0 at src/test/ui/generator/addassign-yield.rs:27:6: 27:6 | |
} | |
bb5: { | |
StorageDead(_9); // scope 1 at src/test/ui/generator/addassign-yield.rs:22:17: 22:18 | |
StorageDead(_8); // scope 1 at src/test/ui/generator/addassign-yield.rs:22:18: 22:19 | |
StorageDead(_5); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:9: 26:10 | |
StorageDead(_7); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
drop(_6) -> [return: bb6, unwind: bb8]; // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
} | |
bb6: { | |
StorageDead(_6); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
StorageDead(_4); // scope 0 at src/test/ui/generator/addassign-yield.rs:27:5: 27:6 | |
StorageDead(_3); // scope 0 at src/test/ui/generator/addassign-yield.rs:27:5: 27:6 | |
generator_drop; // scope 0 at src/test/ui/generator/addassign-yield.rs:19:14: 27:6 | |
} | |
bb7 (cleanup): { | |
StorageDead(_5); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:9: 26:10 | |
StorageDead(_7); // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
drop(_6) -> bb8; // scope 1 at src/test/ui/generator/addassign-yield.rs:26:10: 26:11 | |
} | |
bb8 (cleanup): { | |
resume; // scope 0 at src/test/ui/generator/addassign-yield.rs:19:14: 27:6 | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment