@@ -30,42 +30,43 @@ fn baz(mut x: i32) {
30
30
x = x;
31
31
}
32
32
33
+ fn arg_src ( mut x : i32 ) -> i32 {
34
+ let y = x;
35
+ x = 123 ; // Don't propagate this assignment to `y`
36
+ y
37
+ }
38
+
33
39
fn main ( ) {
34
40
// Make sure the function actually gets instantiated.
35
41
foo ( 0 ) ;
36
42
bar ( 0 ) ;
37
43
baz ( 0 ) ;
44
+ arg_src ( 0 ) ;
38
45
}
39
46
40
47
// END RUST SOURCE
41
48
// START rustc.foo.CopyPropagation.before.mir
42
49
// bb0: {
43
- // StorageLive(_2);
44
- // StorageLive(_3);
50
+ // ...
45
51
// _3 = _1;
46
52
// _2 = const dummy(move _3) -> bb1;
47
53
// }
48
54
// bb1: {
49
- // StorageDead(_3);
55
+ // ...
50
56
// _1 = move _2;
51
- // StorageDead(_2);
52
- // _0 = ();
53
- // return;
57
+ // ...
54
58
// }
55
59
// END rustc.foo.CopyPropagation.before.mir
56
60
// START rustc.foo.CopyPropagation.after.mir
57
61
// bb0: {
58
- // StorageLive(_2);
59
- // nop;
60
- // nop;
61
- // _2 = const dummy(move _1) -> bb1;
62
+ // ...
63
+ // _3 = _1;
64
+ // _2 = const dummy(move _3) -> bb1;
62
65
// }
63
66
// bb1: {
64
- // nop;
67
+ // ...
65
68
// _1 = move _2;
66
- // StorageDead(_2);
67
- // _0 = ();
68
- // return;
69
+ // ...
69
70
// }
70
71
// END rustc.foo.CopyPropagation.after.mir
71
72
// START rustc.bar.CopyPropagation.before.mir
@@ -83,15 +84,14 @@ fn main() {
83
84
// END rustc.bar.CopyPropagation.before.mir
84
85
// START rustc.bar.CopyPropagation.after.mir
85
86
// bb0: {
86
- // nop;
87
- // nop ;
88
- // _2 = const dummy(move _1 ) -> bb1;
87
+ // ...
88
+ // _3 = _1 ;
89
+ // _2 = const dummy(move _3 ) -> bb1;
89
90
// }
90
91
// bb1: {
91
- // nop;
92
+ // ...
92
93
// _1 = const 5u8;
93
- // _0 = ();
94
- // return;
94
+ // ...
95
95
// }
96
96
// END rustc.bar.CopyPropagation.after.mir
97
97
// START rustc.baz.CopyPropagation.before.mir
@@ -106,11 +106,35 @@ fn main() {
106
106
// END rustc.baz.CopyPropagation.before.mir
107
107
// START rustc.baz.CopyPropagation.after.mir
108
108
// bb0: {
109
- // nop;
110
- // nop;
111
- // nop;
112
- // nop;
113
- // _0 = ();
114
- // return;
109
+ // ...
110
+ // _2 = _1;
111
+ // _1 = move _2;
112
+ // ...
115
113
// }
116
114
// END rustc.baz.CopyPropagation.after.mir
115
+ // START rustc.arg_src.CopyPropagation.before.mir
116
+ // bb0: {
117
+ // ...
118
+ // _3 = _1;
119
+ // _2 = move _3;
120
+ // ...
121
+ // _1 = const 123i32;
122
+ // ...
123
+ // _4 = _2;
124
+ // _0 = move _4;
125
+ // ...
126
+ // return;
127
+ // }
128
+ // END rustc.arg_src.CopyPropagation.before.mir
129
+ // START rustc.arg_src.CopyPropagation.after.mir
130
+ // bb0: {
131
+ // ...
132
+ // _3 = _1;
133
+ // ...
134
+ // _1 = const 123i32;
135
+ // ...
136
+ // _0 = move _3;
137
+ // ...
138
+ // return;
139
+ // }
140
+ // END rustc.arg_src.CopyPropagation.after.mir
0 commit comments