Michael Goulet 
							
						 
					 
					
						
						
						
						
							
						
						
							c361c924a0 
							
						 
					 
					
						
						
							
							Use assert_matches around the compiler  
						
						 
						
						
						
						
					 
					
						2024-08-11 12:25:39 -04:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Nicholas Nethercote 
							
						 
					 
					
						
						
						
						
							
						
						
							84ac80f192 
							
						 
					 
					
						
						
							
							Reformat use declarations.  
						
						 
						
						... 
						
						
						
						The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options. 
						
						
					 
					
						2024-07-29 08:26:52 +10:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							d63708b907 
							
						 
					 
					
						
						
							
							Address code review comments on the comments  
						
						 
						
						
						
						
					 
					
						2024-06-12 15:48:34 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							3bdcb9d436 
							
						 
					 
					
						
						
							
							Revise documentation after @lqd's comments  
						
						 
						
						
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							aee846224c 
							
						 
					 
					
						
						
							
							Remove a few unnecessary constructions  
						
						 
						
						... 
						
						
						
						This shaves off ca 6% of the cycles in `start_walk_from()` in my
experiments. 
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							b1add7bc04 
							
						 
					 
					
						
						
							
							Slightly faster version of find_state  
						
						 
						
						... 
						
						
						
						This version shaves off ca 2% of the cycles in my experiments
and makes the control flow easier to follow for me and hopefully
others, including the compiler.
Someone gave me a working profiler and by God I'm using it. 
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							14c10ec88e 
							
						 
					 
					
						
						
							
							Docstring for for Annotation  
						
						 
						
						... 
						
						
						
						Note that this changes no executing code. The change is 100% in documentation. 
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							582c613be8 
							
						 
					 
					
						
						
							
							Formatting, weird because I just did that  
						
						 
						
						
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							905db03b28 
							
						 
					 
					
						
						
							
							Simplify path compression logic  
						
						 
						
						
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							d2a01760bc 
							
						 
					 
					
						
						
							
							Documentation fixes  
						
						 
						
						
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Amanda Stjerna 
							
						 
					 
					
						
						
						
						
							
						
						
							b1ace388c0 
							
						 
					 
					
						
						
							
							Extend SCC construction to enable extra functionality  
						
						 
						
						... 
						
						
						
						This patch has been extracted from #123720 . It specifically enhances
`Sccs` to allow tracking arbitrary commutative properties of SCCs, including
- reachable values (max/min)
- SCC-internal values (max/min)
This helps with among other things universe computation: we can now identify
SCC universes as a straightforward "find max/min" operation during SCC construction.
It's also more or less zero-cost; don't use the new features, don't pay for them.
This commit also vastly extends the documentation of the SCCs module, which I had a very hard time following. 
						
						
					 
					
						2024-06-12 15:47:32 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								r0cky 
							
						 
					 
					
						
						
						
						
							
						
						
							dabd05bbab 
							
						 
					 
					
						
						
							
							Apply x clippy --fix and x fmt  
						
						 
						
						
						
						
					 
					
						2024-05-30 09:51:27 +08:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Nicholas Nethercote 
							
						 
					 
					
						
						
						
						
							
						
						
							55b6ff8e41 
							
						 
					 
					
						
						
							
							Remove extern crate tracing.  
						
						 
						
						... 
						
						
						
						`use` is a nicer way of doing things. 
						
						
					 
					
						2024-05-08 12:52:31 +10:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							523fe2b67b 
							
						 
					 
					
						
						
							
							Add tests for predecessor-aware VecGraph mode  
						
						 
						
						
						
						
					 
					
						2024-04-18 17:32:42 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							fa134b5e0f 
							
						 
					 
					
						
						
							
							Add graph::depth_first_search_as_undirected  
						
						 
						
						
						
						
					 
					
						2024-04-15 23:20:52 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							7d2cb3dda7 
							
						 
					 
					
						
						
							
							Make graph::DepthFirstSearch accept G by value  
						
						 
						
						... 
						
						
						
						It's required for the next commit.
Note that you can still have `G = &H`, since there are implementations of all
the graph traits for references. 
						
						
					 
					
						2024-04-15 23:20:52 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							86a576528c 
							
						 
					 
					
						
						
							
							Add an opt-in to store incoming edges in VecGraph + some docs  
						
						 
						
						
						
						
					 
					
						2024-04-15 23:20:52 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								许杰友 Jieyou Xu (Joe) 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							5580ae9795 
							
						 
					 
					
						
						
							
							Rollup merge of  #123934  - WaffleLapkin:graph-mini-refactor, r=fmease  
						
						 
						
						... 
						
						
						
						`rustc_data_structures::graph` mini refactor
Who doesn't love to breathe dust from the ancient times? 
						
						
					 
					
						2024-04-15 16:56:18 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							435db9b9bd 
							
						 
					 
					
						
						
							
							Use RPITIT  for Successors and Predecessors traits  
						
						 
						
						... 
						
						
						
						Now with RPITIT instead of GAT! 
						
						
					 
					
						2024-04-15 13:34:08 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							e8d2221e3b 
							
						 
					 
					
						
						
							
							Make depth_first_search into a standalone function  
						
						 
						
						... 
						
						
						
						Does not necessarily change much, but we never overwrite it, so I see no reason
for it to be in the `Successors` trait. (+we already have a similar `is_cyclic`) 
						
						
					 
					
						2024-04-14 16:03:08 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							3124fa9310 
							
						 
					 
					
						
						
							
							Document ControlFlowGraph  
						
						 
						
						
						
						
					 
					
						2024-04-14 15:53:38 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							f5144938bd 
							
						 
					 
					
						
						
							
							Rename WithNumEdges => NumEdges and WithStartNode => StartNode  
						
						 
						
						
						
						
					 
					
						2024-04-14 15:51:29 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							0d5fc9bf58 
							
						 
					 
					
						
						
							
							Merge {With,Graph}{Successors,Predecessors} into {Successors,Predecessors}  
						
						 
						
						... 
						
						
						
						Now with GAT! 
						
						
					 
					
						2024-04-14 15:48:53 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							398da593a5 
							
						 
					 
					
						
						
							
							Merge WithNumNodes into DirectedGraph  
						
						 
						
						
						
						
					 
					
						2024-04-14 15:46:40 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Vadim Petrochenkov 
							
						 
					 
					
						
						
						
						
							
						
						
							b40ea03f8a 
							
						 
					 
					
						
						
							
							rustc_index: Add a ZERO constant to index types  
						
						 
						
						... 
						
						
						
						It is commonly used. 
						
						
					 
					
						2024-04-03 19:06:22 +03:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Camille GILLOT 
							
						 
					 
					
						
						
						
						
							
						
						
							f83468c89b 
							
						 
					 
					
						
						
							
							Inline dominator check.  
						
						 
						
						
						
						
					 
					
						2023-12-31 00:37:45 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								surechen 
							
						 
					 
					
						
						
						
						
							
						
						
							40ae34194c 
							
						 
					 
					
						
						
							
							remove redundant imports  
						
						 
						
						... 
						
						
						
						detects redundant imports that can be eliminated.
for #117772  :
In order to facilitate review and modification, split the checking code and
removing redundant imports code into two PR. 
						
						
					 
					
						2023-12-10 10:56:22 +08:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Nicholas Nethercote 
							
						 
					 
					
						
						
						
						
							
						
						
							b12851ce5d 
							
						 
					 
					
						
						
							
							Avoid an unnecessary by_ref.  
						
						 
						
						
						
						
					 
					
						2023-11-28 14:32:40 +11:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Nicholas Nethercote 
							
						 
					 
					
						
						
						
						
							
						
						
							7060fc8327 
							
						 
					 
					
						
						
							
							Replace no_ord_impl with orderable.  
						
						 
						
						... 
						
						
						
						Similar to the previous commit, this replaces `newtype_index`'s opt-out
`no_ord_impl` attribute with the opt-in `orderable` attribute. 
						
						
					 
					
						2023-11-22 18:38:17 +11:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Tomasz Miąsko 
							
						 
					 
					
						
						
						
						
							
						
						
							b61a6d59e4 
							
						 
					 
					
						
						
							
							Remove unused dominator iterator  
						
						 
						
						
						
						
					 
					
						2023-10-10 21:39:59 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Tomasz Miąsko 
							
						 
					 
					
						
						
						
						
							
						
						
							0528d378b6 
							
						 
					 
					
						
						
							
							Optimize dominators for small path graphs  
						
						 
						
						... 
						
						
						
						Generalizes the small dominators approach from #107449 . 
						
						
					 
					
						2023-10-05 23:45:59 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Tomasz Miąsko 
							
						 
					 
					
						
						
						
						
							
						
						
							ba694e301c 
							
						 
					 
					
						
						
							
							Remove redundant Dominators::start_node field  
						
						 
						
						
						
						
					 
					
						2023-10-05 23:45:58 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Tomasz Miąsko 
							
						 
					 
					
						
						
						
						
							
						
						
							a8ec7ddf0e 
							
						 
					 
					
						
						
							
							Test immediate dominators using public API  
						
						 
						
						
						
						
					 
					
						2023-10-05 23:45:58 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Zalathar 
							
						 
					 
					
						
						
						
						
							
						
						
							01b67f4b26 
							
						 
					 
					
						
						
							
							coverage: Simplify sorting of coverage spans extracted from MIR  
						
						 
						
						... 
						
						
						
						Switching to `Ordering::then_with` makes control-flow less complicated, and
there is no need to use `partial_cmp` here. 
						
						
					 
					
						2023-09-18 23:15:25 +10:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								klensy 
							
						 
					 
					
						
						
						
						
							
						
						
							3b26b3d1d2 
							
						 
					 
					
						
						
							
							don't use SnapshotVec in Graph implementation, as it looks unused; use Vec instead  
						
						 
						
						
						
						
					 
					
						2023-08-28 18:59:55 +03:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Mark Rousskov 
							
						 
					 
					
						
						
						
						
							
						
						
							cc907f80b9 
							
						 
					 
					
						
						
							
							Re-format let-else per rustfmt update  
						
						 
						
						
						
						
					 
					
						2023-07-12 21:49:27 -04:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								bors 
							
						 
					 
					
						
						
						
						
							
						
						
							97d328012b 
							
						 
					 
					
						
						
							
							Auto merge of  #111673  - cjgillot:dominator-preprocess, r=cjgillot,tmiasko  
						
						 
						
						... 
						
						
						
						Preprocess and cache dominator tree
Preprocessing dominators has a very strong effect for https://github.com/rust-lang/rust/pull/111344 .
That pass checks that assignments dominate their uses repeatedly. Using the unprocessed dominator tree caused a quadratic runtime (number of bbs x depth of the dominator tree).
This PR also caches the dominator tree and the pre-processed dominators in the MIR cfg cache.
Rebase of https://github.com/rust-lang/rust/pull/107157 
cc `@tmiasko` 
						
						
					 
					
						2023-05-24 16:18:21 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Camille GILLOT 
							
						 
					 
					
						
						
						
						
							
						
						
							7c8f29f02c 
							
						 
					 
					
						
						
							
							Revert spurious changes.  
						
						 
						
						
						
						
					 
					
						2023-05-18 14:36:13 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Camille GILLOT 
							
						 
					 
					
						
						
						
						
							
						
						
							fa8598cb50 
							
						 
					 
					
						
						
							
							Merge DominatorTree and Dominators.  
						
						 
						
						
						
						
					 
					
						2023-05-17 10:37:29 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Camille GILLOT 
							
						 
					 
					
						
						
						
						
							
						
						
							4bbdb64016 
							
						 
					 
					
						
						
							
							Typo.  
						
						 
						
						
						
						
					 
					
						2023-05-17 10:29:12 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Camille GILLOT 
							
						 
					 
					
						
						
						
						
							
						
						
							ae318e3444 
							
						 
					 
					
						
						
							
							Remove outdated comment.  
						
						 
						
						
						
						
					 
					
						2023-05-17 10:26:04 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Tomasz Miąsko 
							
						 
					 
					
						
						
						
						
							
						
						
							aa1267f630 
							
						 
					 
					
						
						
							
							Preprocess dominator tree to answer queries in O(1)  
						
						 
						
						
						
						
					 
					
						2023-05-17 09:36:12 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Camille GILLOT 
							
						 
					 
					
						
						
						
						
							
						
						
							84339a6f05 
							
						 
					 
					
						
						
							
							Process current bucket instead of parent's bucket when starting loop for dominators.  
						
						 
						
						
						
						
					 
					
						2023-05-15 16:16:34 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Tomasz Miąsko 
							
						 
					 
					
						
						
						
						
							
						
						
							f16d2b1629 
							
						 
					 
					
						
						
							
							Start node has no immediate dominator  
						
						 
						
						... 
						
						
						
						Change the immediate_dominator return type to Option, and use None to
indicate that node has no immediate dominator.
Also fix the issue where the start node would be returned as its own
immediate dominator. 
						
						
					 
					
						2023-05-14 16:09:58 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Maybe Waffle 
							
						 
					 
					
						
						
						
						
							
						
						
							e496fbec92 
							
						 
					 
					
						
						
							
							Split {Idx, IndexVec, IndexSlice} into their own modules  
						
						 
						
						
						
						
					 
					
						2023-04-24 13:53:35 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Nilstrieb 
							
						 
					 
					
						
						
						
						
							
						
						
							81c320ea77 
							
						 
					 
					
						
						
							
							Fix some clippy::complexity  
						
						 
						
						
						
						
					 
					
						2023-04-09 23:22:14 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Scott McMurray 
							
						 
					 
					
						
						
						
						
							
						
						
							a2ee7592d6 
							
						 
					 
					
						
						
							
							Use &IndexSlice instead of &IndexVec where possible  
						
						 
						
						... 
						
						
						
						All the same reasons as for `[T]`: more general, less pointer chasing, and `&mut IndexSlice` emphasizes that it doesn't change *length*. 
						
						
					 
					
						2023-04-02 17:35:37 -07:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kåre Alsaker 
							
						 
					 
					
						
						
						
						
							
						
						
							f60d2eb6c1 
							
						 
					 
					
						
						
							
							Add -Z time-passes-format to allow specifying a JSON output for -Z time-passes  
						
						 
						
						
						
						
					 
					
						2023-03-21 18:18:25 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								b-naber 
							
						 
					 
					
						
						
						
						
							
						
						
							8252a6eddf 
							
						 
					 
					
						
						
							
							address review  
						
						 
						
						
						
						
					 
					
						2023-02-21 21:54:53 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								b-naber 
							
						 
					 
					
						
						
						
						
							
						
						
							e2bf960fe1 
							
						 
					 
					
						
						
							
							sccs info  
						
						 
						
						
						
						
					 
					
						2023-02-19 22:12:12 +00:00