Created
December 30, 2015 03:45
-
-
Save solson/9d83249f47a0e3b150de 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
| fn(arg0: &[closure@closure-no-captures.rs:7:14: 7:39 a:&i32], arg1: i32) -> i32 { | |
| let var0: i32; // b | |
| let tmp0: (); | |
| let tmp1: i32; | |
| let tmp2: i32; | |
| bb0: { | |
| var0 = arg0; | |
| tmp1 = (*(*arg0).0); | |
| tmp2 = var0; | |
| ReturnPointer = Add(tmp1, tmp2); | |
| goto -> bb1; | |
| } | |
| bb1: { | |
| return; | |
| } | |
| bb2: { | |
| diverge; | |
| } | |
| } |
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
| fn(arg0: &[closure@closure-no-captures.rs:10:14: 10:47], arg1: i32, arg2: i32) -> i32 { | |
| let var0: i32; // x | |
| let var1: i32; // y | |
| let tmp0: (); | |
| let tmp1: i32; | |
| let tmp2: i32; | |
| bb0: { | |
| var0 = arg0; | |
| var1 = arg1; | |
| tmp1 = var0; | |
| tmp2 = var1; | |
| ReturnPointer = Add(tmp1, tmp2); | |
| goto -> bb1; | |
| } | |
| bb1: { | |
| return; | |
| } | |
| bb2: { | |
| diverge; | |
| } | |
| } |
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
| fn() -> () { | |
| let var0: i32; // a | |
| let var1: [closure@closure-no-captures.rs:7:14: 7:39 a:&i32]; // _f | |
| let var2: [closure@closure-no-captures.rs:10:14: 10:47]; // _g | |
| let tmp0: (); | |
| let tmp1: &i32; | |
| bb0: { | |
| var0 = 2; | |
| tmp1 = &ReScope(CodeExtent(13/Remainder(BlockRemainder { block: 6, first_statement_index: 1 }))) Shared var0; | |
| var1 = Aggregate<Closure(DefId { krate: 0, node: DefIndex(7) => main }, ClosureSubsts { func_substs: Substs[types=[[];[];[]], regions=[[];[];[]]], upvar_tys: [&i32] })>[tmp1]; | |
| var2 = Aggregate<Closure(DefId { krate: 0, node: DefIndex(10) => main }, ClosureSubsts { func_substs: Substs[types=[[];[];[]], regions=[[];[];[]]], upvar_tys: [] })>[]; | |
| drop var2; | |
| drop var1; | |
| goto -> bb1; | |
| } | |
| bb1: { | |
| return; | |
| } | |
| bb2: { | |
| diverge; | |
| } | |
| } |
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
| #![feature(rustc_attrs)] | |
| #[rustc_mir(pretty = "closure-no-captures.mir")] | |
| fn main() { | |
| // The reference to the upvar `a` is correctly gotten through `self`, but `b` is also assigned | |
| // to `self`. | |
| let a = 2i32; | |
| let _f = |b: i32| -> i32 { a + b }; | |
| // The references to `x` and `y` instead go to `self` and `x`, respectively. | |
| let _g = |x: i32, y: i32| -> i32 { x + y }; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment