Files
rust/compiler/rustc_data_structures/src
bors 25f084d5e0 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`
2023-05-20 07:41:15 +00:00
..
2020-08-30 18:45:07 +03:00
2022-03-04 16:57:34 +01:00
2023-04-14 13:04:58 +00:00
2020-08-30 18:45:07 +03:00
2022-12-12 19:49:53 +01:00
2023-04-18 14:13:19 -04:00
2023-05-06 10:23:51 +08:00
2023-05-16 12:09:24 +00:00
2022-03-04 16:57:34 +01:00
2023-04-09 23:22:14 +02:00
2023-05-16 11:55:47 +00:00
2023-04-20 19:54:10 +00:00
2020-09-08 22:37:18 -04:00
2023-04-09 23:22:14 +02:00