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
..
base_n
binary_search_util
fingerprint Store hashes in special types so they aren't accidentally encoded as numbers 2023-04-18 10:52:47 -04:00
flock
graph Process current bucket instead of parent's bucket when starting loop for dominators. 2023-05-15 16:16:34 +00:00
intern
obligation_forest
owned_slice Switch OwnedSlice to use Lrc & remove Lrc from MetadataBlob 2023-05-16 11:43:27 +00:00
profiling
sip128
small_c_str
small_str
snapshot_map
sorted_map Split {Idx, IndexVec, IndexSlice} into their own modules 2023-04-24 13:53:35 +00:00
sso
stable_hasher Store hashes in special types so they aren't accidentally encoded as numbers 2023-04-18 10:52:47 -04:00
sync Remove unused impl<T> WorkerLocal<Vec<T>>. 2023-05-18 13:14:45 +10:00
tagged_ptr Rollup merge of #110814 - WaffleLapkin:sprinkle_#inline, r=Nilstrieb 2023-04-27 15:10:53 +02:00
tiny_list
transitive_relation
aligned.rs
atomic_ref.rs
base_n.rs
captures.rs
fingerprint.rs Use the full Fingerprint when stringifying Svh 2023-04-30 14:28:30 -04:00
flat_map_in_place.rs
flock.rs
frozen.rs
functor.rs Split {Idx, IndexVec, IndexSlice} into their own modules 2023-04-24 13:53:35 +00:00
fx.rs
hashes.rs Add #[inline] to some new functions 2023-04-18 14:13:19 -04:00
intern.rs
jobserver.rs
lib.rs add DynSend / DynSync for CopyTaggedPtr 2023-05-06 10:23:51 +08:00
macros.rs
marker.rs add DynSend / DynSync for CopyTaggedPtr 2023-05-06 10:23:51 +08:00
memmap.rs deny(unsafe_op_in_unsafe_fn) in rustc_data_structures 2023-04-19 18:00:48 +00:00
owned_slice.rs Fixup comments 2023-05-16 12:09:24 +00:00
profiling.rs bump windows crate 0.46 -> 0.48 in workspace 2023-05-09 18:20:13 +03:00
sharded.rs
sip128.rs deny(unsafe_op_in_unsafe_fn) in rustc_data_structures 2023-04-19 18:00:48 +00:00
small_c_str.rs
small_str.rs
sorted_map.rs
stable_hasher.rs Split {Idx, IndexVec, IndexSlice} into their own modules 2023-04-24 13:53:35 +00:00
stack.rs
steal.rs
svh.rs Use the full Fingerprint when stringifying Svh 2023-04-30 14:28:30 -04:00
sync.rs Remove MetadataRef type alias 2023-05-16 11:55:47 +00:00
tagged_ptr.rs Simplify bits_for_tags impl 2023-04-20 19:54:10 +00:00
temp_dir.rs
tiny_list.rs
transitive_relation.rs
unhash.rs
unord.rs
vec_linked_list.rs Split {Idx, IndexVec, IndexSlice} into their own modules 2023-04-24 13:53:35 +00:00
work_queue.rs Split {Idx, IndexVec, IndexSlice} into their own modules 2023-04-24 13:53:35 +00:00