Alexander Cyon
ac69544a17
chore: Fix typos in 'compiler' (batch 1)
2024-09-02 07:42:38 +02:00
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