Skip to content

Commit 4239d74

Browse files
Make nrvo-simple set mir-opt-level=1
The additional copies are due to the lack of copy propagation
1 parent 0d017cc commit 4239d74

File tree

2 files changed

+35
-31
lines changed

2 files changed

+35
-31
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 rustc.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/rustc.nrvo.RenameReturnPlace.diff

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,48 @@
11
- // MIR for `nrvo` before RenameReturnPlace
22
+ // MIR for `nrvo` after RenameReturnPlace
3-
3+
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
}
17-
17+
1818
bb0: {
19-
- StorageLive(_2); // scope 0 at $DIR/nrvo-simple.rs:3:9: 3:16
20-
- _2 = [const 0u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
21-
+ _0 = [const 0u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
19+
- StorageLive(_2); // scope 0 at $DIR/nrvo-simple.rs:5:9: 5:16
20+
- _2 = [const 0u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:5:19: 5:28
21+
+ _0 = [const 0u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:5:19: 5:28
2222
// ty::Const
2323
// + ty: u8
2424
// + val: Value(Scalar(0x00))
2525
// mir::Constant
26-
// + span: $DIR/nrvo-simple.rs:3:20: 3:21
26+
// + span: $DIR/nrvo-simple.rs:5:20: 5:21
2727
// + literal: Const { ty: u8, val: Value(Scalar(0x00)) }
28-
StorageLive(_3); // scope 1 at $DIR/nrvo-simple.rs:4:5: 4:19
29-
StorageLive(_5); // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
30-
StorageLive(_6); // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
31-
- _6 = &mut _2; // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
32-
+ _6 = &mut _0; // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
33-
_5 = &mut (*_6); // scope 1 at $DIR/nrvo-simple.rs:4:10: 4:18
34-
_3 = move _1(move _5) -> bb1; // scope 1 at $DIR/nrvo-simple.rs:4:5: 4:19
28+
StorageLive(_3); // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:19
29+
StorageLive(_4); // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:9
30+
_4 = _1; // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:9
31+
StorageLive(_5); // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
32+
StorageLive(_6); // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
33+
- _6 = &mut _2; // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
34+
+ _6 = &mut _0; // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
35+
_5 = move _6; // scope 1 at $DIR/nrvo-simple.rs:6:10: 6:18
36+
_3 = move _4(move _5) -> bb1; // scope 1 at $DIR/nrvo-simple.rs:6:5: 6:19
3537
}
36-
38+
3739
bb1: {
38-
StorageDead(_5); // scope 1 at $DIR/nrvo-simple.rs:4:18: 4:19
39-
StorageDead(_6); // scope 1 at $DIR/nrvo-simple.rs:4:19: 4:20
40-
StorageDead(_3); // scope 1 at $DIR/nrvo-simple.rs:4:19: 4:20
41-
- _0 = _2; // scope 1 at $DIR/nrvo-simple.rs:5:5: 5:8
42-
- StorageDead(_2); // scope 0 at $DIR/nrvo-simple.rs:6:1: 6:2
43-
return; // scope 0 at $DIR/nrvo-simple.rs:6:2: 6:2
40+
StorageDead(_5); // scope 1 at $DIR/nrvo-simple.rs:6:18: 6:19
41+
StorageDead(_4); // scope 1 at $DIR/nrvo-simple.rs:6:18: 6:19
42+
StorageDead(_6); // scope 1 at $DIR/nrvo-simple.rs:6:19: 6:20
43+
StorageDead(_3); // scope 1 at $DIR/nrvo-simple.rs:6:19: 6:20
44+
- _0 = _2; // scope 1 at $DIR/nrvo-simple.rs:7:5: 7:8
45+
- StorageDead(_2); // scope 0 at $DIR/nrvo-simple.rs:8:1: 8:2
46+
return; // scope 0 at $DIR/nrvo-simple.rs:8:2: 8:2
4447
}
4548
}
46-

0 commit comments

Comments
 (0)