-
Notifications
You must be signed in to change notification settings - Fork 13
feat(hugr-passes)!: normalize_cfgs inlines entry DFG #2649
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
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2649 +/- ##
=======================================
Coverage 83.46% 83.46%
=======================================
Files 262 262
Lines 51297 51297
Branches 46858 46858
=======================================
+ Hits 42813 42815 +2
+ Misses 6105 6103 -2
Partials 2379 2379
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This PR contains breaking changes to the public Rust API. cargo-semver-checks summary |
| }, | ||
| ); | ||
| let [_, entry_output] = h.get_io(entry).unwrap(); | ||
| while let Some(n) = h.first_child(entry) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wont this capture the input/output nodes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes - we've built a DFG node, but not using the "builder", so it's completely empty; we transfer Input and Output nodes into it to make it valid. Then we do an InlineDFG, which removes them.
Breaking followup to #2633.
Domedges by inlining the DFG (so the entry block children become siblings of the CFG), as this makes said edges into validExtedges.Sadly, I don't see a good/corresponding treatment for the exit dfg; it doesn't help that the source block of the
Domedges must dominate the exit (and hence we could break the CFG just before that source block and start another CFG), because even then there could be backedges to the source (new CFG entry) block, so we can't necessarily lift it outside. Options thus seem to be:...and I've not tried either of those here.
BREAKING CHANGE: NormalizeCFGResult specifies entry_nodes_moved not entry_dfg (as no DFG is inserted).