Commit 23e3840
committed
Remove dead unwinds before drop elaboration
As a part of drop elaboration, we identify dead unwinds, i.e., unwind
edges on a drop terminators which are known to be unreachable, because
there is no need to drop anything.
Previously, the data flow framework was informed about the dead unwinds,
and it assumed those edges are absent from MIR. Unfortunately, the data
flow framework wasn't consistent in maintaining this assumption.
In particular, if a block was reachable only through a dead unwind edge,
its state was propagated to other blocks still. This became an issue in
the context of change removes DropAndReplace terminator, since it
introduces initialization into cleanup blocks.
To avoid this issue, remove unreachable unwind edges before the drop
elaboration, and elaborate only blocks that remain reachable.1 parent 00eec85 commit 23e3840
File tree
3 files changed
+44
-76
lines changed- compiler
- rustc_mir_dataflow/src/framework
- rustc_mir_transform/src
3 files changed
+44
-76
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | 1 | | |
3 | 2 | | |
4 | 3 | | |
| |||
54 | 53 | | |
55 | 54 | | |
56 | 55 | | |
57 | | - | |
58 | 56 | | |
59 | 57 | | |
60 | 58 | | |
| |||
221 | 219 | | |
222 | 220 | | |
223 | 221 | | |
224 | | - | |
225 | 222 | | |
226 | 223 | | |
227 | 224 | | |
| |||
278 | 275 | | |
279 | 276 | | |
280 | 277 | | |
281 | | - | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | 278 | | |
296 | 279 | | |
297 | 280 | | |
| |||
304 | 287 | | |
305 | 288 | | |
306 | 289 | | |
307 | | - | |
308 | 290 | | |
309 | 291 | | |
310 | 292 | | |
| |||
484 | 466 | | |
485 | 467 | | |
486 | 468 | | |
487 | | - | |
488 | 469 | | |
489 | 470 | | |
490 | 471 | | |
| |||
502 | 483 | | |
503 | 484 | | |
504 | 485 | | |
505 | | - | |
506 | | - | |
507 | | - | |
| 486 | + | |
508 | 487 | | |
509 | 488 | | |
510 | 489 | | |
| |||
534 | 513 | | |
535 | 514 | | |
536 | 515 | | |
537 | | - | |
538 | | - | |
539 | | - | |
| 516 | + | |
540 | 517 | | |
541 | 518 | | |
542 | 519 | | |
| |||
560 | 537 | | |
561 | 538 | | |
562 | 539 | | |
563 | | - | |
564 | | - | |
565 | | - | |
| 540 | + | |
566 | 541 | | |
567 | 542 | | |
568 | 543 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | 15 | | |
17 | 16 | | |
18 | 17 | | |
| |||
78 | 77 | | |
79 | 78 | | |
80 | 79 | | |
81 | | - | |
82 | 80 | | |
83 | 81 | | |
84 | 82 | | |
| |||
154 | 152 | | |
155 | 153 | | |
156 | 154 | | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
| 155 | + | |
176 | 156 | | |
177 | 157 | | |
178 | 158 | | |
| |||
190 | 170 | | |
191 | 171 | | |
192 | 172 | | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | | - | |
197 | | - | |
198 | | - | |
199 | | - | |
200 | | - | |
| 173 | + | |
201 | 174 | | |
202 | 175 | | |
203 | 176 | | |
| |||
236 | 209 | | |
237 | 210 | | |
238 | 211 | | |
239 | | - | |
240 | 212 | | |
241 | 213 | | |
242 | 214 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | | - | |
71 | 70 | | |
72 | | - | |
| 71 | + | |
73 | 72 | | |
74 | 73 | | |
75 | 74 | | |
76 | | - | |
77 | 75 | | |
78 | 76 | | |
79 | 77 | | |
80 | 78 | | |
81 | 79 | | |
82 | 80 | | |
83 | 81 | | |
84 | | - | |
85 | 82 | | |
86 | 83 | | |
87 | 84 | | |
88 | 85 | | |
| 86 | + | |
| 87 | + | |
89 | 88 | | |
90 | 89 | | |
91 | 90 | | |
| |||
94 | 93 | | |
95 | 94 | | |
96 | 95 | | |
| 96 | + | |
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
| 105 | + | |
107 | 106 | | |
108 | | - | |
| 107 | + | |
109 | 108 | | |
110 | | - | |
| 109 | + | |
111 | 110 | | |
112 | 111 | | |
113 | | - | |
114 | | - | |
| 112 | + | |
| 113 | + | |
115 | 114 | | |
116 | 115 | | |
117 | | - | |
| 116 | + | |
118 | 117 | | |
119 | 118 | | |
120 | | - | |
| 119 | + | |
121 | 120 | | |
122 | 121 | | |
123 | 122 | | |
| |||
129 | 128 | | |
130 | 129 | | |
131 | 130 | | |
132 | | - | |
| 131 | + | |
133 | 132 | | |
134 | 133 | | |
135 | | - | |
| 134 | + | |
136 | 135 | | |
137 | 136 | | |
138 | 137 | | |
139 | 138 | | |
140 | 139 | | |
141 | | - | |
| 140 | + | |
142 | 141 | | |
143 | 142 | | |
144 | 143 | | |
| |||
150 | 149 | | |
151 | 150 | | |
152 | 151 | | |
153 | | - | |
| 152 | + | |
154 | 153 | | |
155 | | - | |
| 154 | + | |
156 | 155 | | |
157 | 156 | | |
158 | 157 | | |
159 | | - | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
160 | 168 | | |
161 | 169 | | |
162 | 170 | | |
| |||
290 | 298 | | |
291 | 299 | | |
292 | 300 | | |
| 301 | + | |
293 | 302 | | |
294 | 303 | | |
295 | 304 | | |
| |||
329 | 338 | | |
330 | 339 | | |
331 | 340 | | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
332 | 344 | | |
333 | 345 | | |
334 | 346 | | |
| |||
384 | 396 | | |
385 | 397 | | |
386 | 398 | | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
387 | 402 | | |
388 | 403 | | |
389 | 404 | | |
| |||
541 | 556 | | |
542 | 557 | | |
543 | 558 | | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
544 | 562 | | |
545 | 563 | | |
546 | 564 | | |
| |||
576 | 594 | | |
577 | 595 | | |
578 | 596 | | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
579 | 600 | | |
580 | 601 | | |
581 | 602 | | |
| |||
0 commit comments