Dataflow Analysis Framework - #264
Conversation
993c1d3 to
acfdca1
Compare
c864fea to
fa278ba
Compare
|
Wishlist:
Without the first three, I have to manually write out the ops I know that fits them. I already did so for I need a way to see if an op is region branching or callable to complete These are the last of the hurdles before I have a working SCCP transform :) Other things I need to investigate:
Other things I have to do:
|
34bfa9b to
b498c68
Compare
1b8c2d5 to
46c20ed
Compare
aceaecd to
63c8e4a
Compare
math-fehr
left a comment
There was a problem hiding this comment.
Sorry for the delay!
I think what would help a lot reviewing this is adding more documentation on the later part of the Veir/Analysis/DataFlowFramework.lean file.
Maybe adding a markdown documentation (/-! -/) at the beginning of the function to explain the relationship between the different structures?
Otherwise, the main issue I see right now is the structures that are using your Dynamic types. Do you think you can see a way to define them with a mutual somehow? If you don't, we can try to look into it.
|
Thank you for the review comments. I'll try to get back to them as soon as I can (my laptop decided to have some hardware issues so it might be a second, but I will get to them). I apologize for the poor documentation (I'm still getting used to collaborating with others - didn't have much of that at this scale in my undergrad unfortunately). I should've done an additional once over my PRs and ensure I've commented on everything for better clarity. I'll make sure to do that as well. I will also reconsider the structure of the framework as a whole now that I have a strong understanding of how the original MLIR version that this is mirroring works. I have a couple of ideas of some restructuring that should eliminate the strange hacks/workarounds and make this simpler. Once I get my laptop up and working I will work on a proposal for this via an additional commit. |
dab903d to
91b99f4
Compare
|
@math-fehr @ineol I have pushed the changes I've mentioned in our last meeting! This should be cleaner I hope. I think I need to think about how to organize the |
math-fehr
left a comment
There was a problem hiding this comment.
Nice! It looks much much better now!
I just added comments mostly about documentation and naming!
I guess to me the biggest question is wether or not some class should be structure instead, like HasFactKind (which I'm not 100% sure I understand what it does). Other than that, the structure looks good now to me!
bc7a2eb to
6796750
Compare
math-fehr
left a comment
There was a problem hiding this comment.
Okay that looks much much better again, nice!
I added some comments for documentation (mostly places where I feel it is harder to understand what's going on).
I'll wait that @ineol reviews it (probably early next week), and to me that should be probably good to go after that!
c984f33 to
fb158fc
Compare
fb158fc to
654d066
Compare
654d066 to
16a1a5d
Compare
Brings in 32 upstream commits including the Dataflow Analysis Framework (opencompl#264), VariableState interpreter fix (opencompl#599), parser improvements, fieldsInBounds_unchanged hypothesis cleanup (opencompl#539), and VEIR_ROUNDTRIP infrastructure (opencompl#605). Toolchain conflict: upstream bumped to nightly-2026-05-17 in opencompl#595; we keep v4.30.0-rc2 to stay compatible with the Mathlib olean cache fetched in Phase E.5. Resolved conflicts: - lean-toolchain: kept v4.30.0-rc2 - Test/lit.cfg: union (kept LLZK_OPT propagation + %scripts substitution from ours; took .c suffix, lit.util feature detection, VEIR_ROUNDTRIP substitution from upstream) - Veir/Parser/AttrParser.lean: adapted FeltConstAttr + felt-type parser to upstream's new ParserError type (s/throw/throwString/g for string literals, in our LLZK-specific additions) Post-merge state: - lake build: clean (2563 jobs) - lake test: clean (122/122) - lit (no LLZK_OPT): 347 PASS / 9 UNSUPPORTED / 0 FAIL (356 total) - lit (LLZK_OPT): 355 PASS / 1 UNSUPPORTED / 0 XFAIL / 0 FAIL - quality gates: all pass Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This implements CFG dominance analysis on top of the dataflow framework: opencompl#264 This is based off of the Cooper-Harvey-Kennedy algorithm. --------- Co-authored-by: John Regehr <regehr@cs.utah.edu>
The following is a dataflow analysis framework based off the C++ MLIR implementation.
An analysis I've implemented on top of the framework is SCCP: #456