Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 8a7b1c3

Browse files
Make nrvo-simple set mir-opt-level=1
The additional copies are due to the lack of copy propagation
1 parent 1649895 commit 8a7b1c3

File tree

2 files changed

+31
-26
lines changed

2 files changed

+31
-26
lines changed

src/test/mir-opt/nrvo-simple.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// compile-flags: -Zmir-opt-level=1
2+
13
// EMIT_MIR nrvo_simple.nrvo.RenameReturnPlace.diff
24
fn nrvo(init: fn(&mut [u8; 1024])) -> [u8; 1024] {
35
let mut buf = [0; 1024];

src/test/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.diff

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,42 @@
22
+ // MIR for `nrvo` after RenameReturnPlace
33

44
fn nrvo(_1: for<'r> fn(&'r mut [u8; 1024])) -> [u8; 1024] {
5-
debug init => _1; // in scope 0 at $DIR/nrvo-simple.rs:2:9: 2:13
6-
- let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo-simple.rs:2:39: 2:49
7-
+ let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo-simple.rs:3:9: 3:16
8-
let mut _2: [u8; 1024]; // in scope 0 at $DIR/nrvo-simple.rs:3:9: 3:16
9-
let _3: (); // in scope 0 at $DIR/nrvo-simple.rs:4:5: 4:19
10-
let mut _4: for<'r> fn(&'r mut [u8; 1024]); // in scope 0 at $DIR/nrvo-simple.rs:4:5: 4:9
11-
let mut _5: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo-simple.rs:4:10: 4:18
12-
let mut _6: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo-simple.rs:4:10: 4:18
5+
debug init => _1; // in scope 0 at $DIR/nrvo-simple.rs:4:9: 4:13
6+
- let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo-simple.rs:4:39: 4:49
7+
+ let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo-simple.rs:5:9: 5:16
8+
let mut _2: [u8; 1024]; // in scope 0 at $DIR/nrvo-simple.rs:5:9: 5:16
9+
let _3: (); // in scope 0 at $DIR/nrvo-simple.rs:6:5: 6:19
10+
let mut _4: for<'r> fn(&'r mut [u8; 1024]); // in scope 0 at $DIR/nrvo-simple.rs:6:5: 6:9
11+
let mut _5: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo-simple.rs:6:10: 6:18
12+
let mut _6: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo-simple.rs:6:10: 6:18
1313
scope 1 {
14-
- debug buf => _2; // in scope 1 at $DIR/nrvo-simple.rs:3:9: 3:16
15-
+ debug buf => _0; // in scope 1 at $DIR/nrvo-simple.rs:3:9: 3:16
14+
- debug buf => _2; // in scope 1 at $DIR/nrvo-simple.rs:5:9: 5:16
15+
+ debug buf => _0; // in scope 1 at $DIR/nrvo-simple.rs:5:9: 5:16
1616
}
1717

1818
bb0: {
19-
- StorageLive(_2); // scope 0 at $DIR/nrvo-simple.rs:3:9: 3:16
20-
- _2 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
21-
+ _0 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
22-
StorageLive(_3); // scope 1 at $DIR/nrvo-simple.rs:4:5: 4:19
23-
StorageLive(_5); // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
24-
StorageLive(_6); // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
25-
- _6 = &mut _2; // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
26-
+ _6 = &mut _0; // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
27-
_5 = &mut (*_6); // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
28-
_3 = move _1(move _5) -> bb1; // scope 1 at $DIR/nrvo-simple.rs:4:5: 4:19
19+
- StorageLive(_2); // scope 0 at $DIR/nrvo-simple.rs:5:9: 5:16
20+
- _2 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:5:19: 5:28
21+
+ _0 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:5:19: 5:28
22+
StorageLive(_3); // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:19
23+
StorageLive(_4); // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:9
24+
_4 = _1; // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:9
25+
StorageLive(_5); // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
26+
StorageLive(_6); // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
27+
- _6 = &mut _2; // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
28+
+ _6 = &mut _0; // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
29+
_5 = &mut (*_6); // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
30+
_3 = move _4(move _5) -> bb1; // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:19
2931
}
3032

3133
bb1: {
32-
StorageDead(_5); // scope 1 at $DIR/nrvo-simple.rs:4:18: 4:19
33-
StorageDead(_6); // scope 1 at $DIR/nrvo-simple.rs:4:19: 4:20
34-
StorageDead(_3); // scope 1 at $DIR/nrvo-simple.rs:4:19: 4:20
35-
- _0 = _2; // scope 1 at $DIR/nrvo-simple.rs:5:5: 5:8
36-
- StorageDead(_2); // scope 0 at $DIR/nrvo-simple.rs:6:1: 6:2
37-
return; // scope 0 at $DIR/nrvo-simple.rs:6:2: 6:2
34+
StorageDead(_5); // scope 1 at $DIR/nrvo-simple.rs:6:18: 6:19
35+
StorageDead(_4); // scope 1 at $DIR/nrvo-simple.rs:6:18: 6:19
36+
StorageDead(_6); // scope 1 at $DIR/nrvo-simple.rs:6:19: 6:20
37+
StorageDead(_3); // scope 1 at $DIR/nrvo-simple.rs:6:19: 6:20
38+
- _0 = _2; // scope 1 at $DIR/nrvo-simple.rs:7:5: 7:8
39+
- StorageDead(_2); // scope 0 at $DIR/nrvo-simple.rs:8:1: 8:2
40+
return; // scope 0 at $DIR/nrvo-simple.rs:8:2: 8:2
3841
}
3942
}
4043

0 commit comments

Comments
 (0)