Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updating domtrees dynamically, removing all unreachable blocks #37882

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

vchuravy
Copy link
Member

@vchuravy vchuravy commented Oct 5, 2020

Rebase of #33730

Latest status update from @yhls was #33730 (comment)

Right now this is causing a compilation error in LLVM, so I suspect I messed up
the rebase or didn't address the changes to the code around it.

@chriselrod
Copy link
Contributor

chriselrod commented Oct 5, 2020

Rebase of #3370

Latest status update from @yhls was #33730 (comment)

rebase of #33730, unless you mean the issue exp(1) != e

@vchuravy vchuravy marked this pull request as draft October 5, 2020 03:40
@vchuravy vchuravy changed the base branch from master to vc/dynamic_snca October 5, 2020 03:41
@vchuravy vchuravy added the compiler:optimizer Optimization passes (mostly in base/compiler/ssair/) label Oct 5, 2020
@vchuravy vchuravy force-pushed the vc/dynamic_snca branch 2 times, most recently from 4f5725e to f7852e3 Compare October 14, 2020 17:19
Base automatically changed from vc/dynamic_snca to master October 15, 2020 00:29
…ons and deletions

The DFS tree associated with a CFG now keeps track of postorder as well as
preorder numbers. The DFS tree, as well as the state associated with the SNCA
algorithm for finding (immediate) dominators is now stored in DomTree and
reused for Dynamic SNCA.
…of CFG

This is in anticipation of domtrees being added to CFGs.
…n needed

Every time a CFG is created, its corresponding dominator tree is as well.
… edges

This change only affects statements that we have yet to encounter after killing
an edge, while iterating through `IncrementalCompact`. Statements in dead
blocks that come before the point at which the edge is killed are killed in
`kill_edge!`, when the edge is killed.
If a statement was `nothing`, `kill_edge!` would never move on from trying to
kill it because the index wasn't incremented.
@TH3CHARLie
Copy link
Contributor

@vchuravy I've been reading this code and I think I understand most of it. I want to know what's left to push this PR forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:optimizer Optimization passes (mostly in base/compiler/ssair/)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants