<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_data_structures/src/graph, branch 1.57.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.57.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.57.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2021-10-10T13:38:19+00:00</updated>
<entry>
<title>Apply clippy suggestions</title>
<updated>2021-10-10T13:38:19+00:00</updated>
<author>
<name>Clemens Wasser</name>
<email>clemens.wasser@gmail.com</email>
</author>
<published>2021-10-09T18:44:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=71dd0b928b8b175b69e56fc58e5878b73f090718'/>
<id>urn:sha1:71dd0b928b8b175b69e56fc58e5878b73f090718</id>
<content type='text'>
</content>
</entry>
<entry>
<title>More tracing instrumentation</title>
<updated>2021-09-28T12:28:22+00:00</updated>
<author>
<name>Oli Scherer</name>
<email>github35764891676564198441@oli-obk.de</email>
</author>
<published>2021-08-20T13:36:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=9b5aa063d8e9808eacd27a0bf75a85495ff01bd4'/>
<id>urn:sha1:9b5aa063d8e9808eacd27a0bf75a85495ff01bd4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>consistent big O notation</title>
<updated>2021-09-24T10:44:28+00:00</updated>
<author>
<name>r00ster91</name>
<email>r00ster91@protonmail.com</email>
</author>
<published>2021-09-24T10:44:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=956f87fb04f589ac2fbe262a043c9f3cad6b2ac0'/>
<id>urn:sha1:956f87fb04f589ac2fbe262a043c9f3cad6b2ac0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rework DepthFirstSearch API</title>
<updated>2021-09-08T16:23:37+00:00</updated>
<author>
<name>Niko Matsakis</name>
<email>niko@alum.mit.edu</email>
</author>
<published>2020-11-23T14:26:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c9d46eb2244d49215e0a1ccf8bd4b7e700b252e7'/>
<id>urn:sha1:c9d46eb2244d49215e0a1ccf8bd4b7e700b252e7</id>
<content type='text'>
This expands the API to be more flexible, allowing for more visitation patterns
on graphs. This will be useful to avoid extra datasets (and allocations) in
cases where the expanded DFS API is sufficient.

This also fixes a bug with the previous DFS constructor, which left the start
node not marked as visited (even though it was immediately returned).
</content>
</entry>
<entry>
<title>Remove duplicate trait bounds in `rustc_data_structures::graph`</title>
<updated>2021-08-09T13:52:04+00:00</updated>
<author>
<name>pierwill</name>
<email>pierwill@users.noreply.github.com</email>
</author>
<published>2021-08-09T13:52:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3e123e415014d700b83f3b373423507683105910'/>
<id>urn:sha1:3e123e415014d700b83f3b373423507683105910</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Only initialize what is used</title>
<updated>2021-02-10T08:20:41+00:00</updated>
<author>
<name>Dániel Buga</name>
<email>bugadani@gmail.com</email>
</author>
<published>2021-01-17T19:20:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3c1d792f498ae40eb759d4554540a94612a3df55'/>
<id>urn:sha1:3c1d792f498ae40eb759d4554540a94612a3df55</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Clean up dominators_given_rpo</title>
<updated>2021-01-24T12:32:18+00:00</updated>
<author>
<name>Dániel Buga</name>
<email>bugadani@gmail.com</email>
</author>
<published>2021-01-24T12:32:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f8416faaaf3a1fb6ca57ff8f0b3bdf972eed266f'/>
<id>urn:sha1:f8416faaaf3a1fb6ca57ff8f0b3bdf972eed266f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>don't redundantly repeat field names</title>
<updated>2020-12-29T21:26:58+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2020-12-29T21:02:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0c3af22e08124a371b182bfec94437d447e15810'/>
<id>urn:sha1:0c3af22e08124a371b182bfec94437d447e15810</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Switch compiler/ to intra-doc links</title>
<updated>2020-12-18T20:22:51+00:00</updated>
<author>
<name>Joshua Nelson</name>
<email>jyn514@gmail.com</email>
</author>
<published>2020-12-01T22:41:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=35f16c60e7d3fd1b42c90a0fc084689c817345cb'/>
<id>urn:sha1:35f16c60e7d3fd1b42c90a0fc084689c817345cb</id>
<content type='text'>
rustc_lint and rustc_lint_defs weren't switched because they're included
in the compiler book and so can't use intra-doc links.
</content>
</entry>
<entry>
<title>Auto merge of #78588 - HeroicKatora:sccc, r=nikomatsakis</title>
<updated>2020-11-21T01:30:26+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2020-11-21T01:30:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8cfa7b4ec9d314a412f79c1748bd2dfa7575b2e3'/>
<id>urn:sha1:8cfa7b4ec9d314a412f79c1748bd2dfa7575b2e3</id>
<content type='text'>
Reworks Sccc computation to iteration instead of recursion

Linear graphs, producing as many scc's as nodes, would recurse once for every node when entered from the start of the list. This adds a test that exhausted the stack at least on my machine with error:

```
thread 'graph::scc::tests::test_deep_linear' has overflowed its stack
fatal runtime error: stack overflow
```

This may or may not be connected to #78567. I was only reminded that I started this rework some time ago. It might be plausible as borrow checking a long function with many borrow regions around each other—((((((…))))))— may produce the linear list setup to trigger this stack overflow ? I don't know enough about borrow check to say for sure.

This is best read in two separate commits. The first addresses only `find_state` internally. This is classical union phase from union-find. There's also a common solution of using the parent pointers in the (virtual) linked list to track the backreferences while traversing upwards and then following them backwards in a second path compression phase.

The second is more involved as it rewrites the mutually recursive `walk_node` and `walk_unvisited_node`. Firstly, the caller is required to handle the unvisited case of `walk_node` so a new `start_walk_from` method is added to handle that by walking the unvisited node if necessary. Then `walk_unvisited_node`, where we would previously recurse into in the missing case, is rewritten to construct a manual stack of its frames. The state fields consist of the previous stack slots.
</content>
</entry>
</feed>
