diff options
| author | bors <bors@rust-lang.org> | 2023-05-20 07:41:15 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-05-20 07:41:15 +0000 |
| commit | 25f084d5e007b9561d155be0b1a2e369c8e4b0ef (patch) | |
| tree | 953e4a2976aeb199b4118ae8b2c27a29c157565f /compiler/rustc_query_impl/src | |
| parent | e86fd62b6b198584a47798eb271d4b54c4dc96ec (diff) | |
| parent | 84339a6f0577b2bd9526383d2a6e3bda7b59c920 (diff) | |
| download | rust-25f084d5e007b9561d155be0b1a2e369c8e4b0ef.tar.gz rust-25f084d5e007b9561d155be0b1a2e369c8e4b0ef.zip | |
Auto merge of #111596 - cjgillot:dominator-bucket, r=Mark-Simulacrum
Process current bucket instead of parent's bucket when starting loop for dominators. The linked paper by Georgiadis suggests in ยง2.2.3 to process `bucket[w]` when beginning the loop, instead of `bucket[parent[w]]` when finishing it. In the test case, we correctly computed `idom[2] = 0` and `sdom[3] = 1`, but the algorithm returned `idom[3] = 1`, instead of the correct value 0, because of the path 0-7-2-3. This provoked LLVM ICE in https://github.com/rust-lang/rust/pull/111061#issuecomment-1546912112. LLVM checks that SSA assignments dominate uses using its own implementation of Lengauer-Tarjan, and saw case where rustc was breaking the dominance property. r? `@Mark-Simulacrum`
Diffstat (limited to 'compiler/rustc_query_impl/src')
0 files changed, 0 insertions, 0 deletions
