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

Analysis Cleanup and Explicit Types #144

Merged
merged 11 commits into from
Nov 23, 2023
Merged

Analysis Cleanup and Explicit Types #144

merged 11 commits into from
Nov 23, 2023

Conversation

l-kent
Copy link
Contributor

@l-kent l-kent commented Nov 16, 2023

This is a number of changes to the analysis code.

One of the main changes is making all the types in the analysis explicitly declared instead of relying on a maze of .Elements with convoluted inheritance patterns. I personally find this makes the code easier to follow. I am curious for feedback here from @ailrst and @yousifpatti - is this an improvement?

Other changes here:

  • Consolidates and cleans up parts of the analysis, to reduce the convoluted inheritance patterns
  • Enables procedure inlining in the CFG so that there are actually interprocedural edges in the CFG
  • Makes interprocedural analyses actually use the interprocedural edges (before they were in practice not meaningly different from the intraprocedural analyses) but this still doesn't seem to be completely working properly, there might be an issue with the inlining? It might make sense to just make the VSA an intraprocedural analysis for now? It isn't worth trying to fix the inlining since Il cfg iterator #141 is in the works.
  • Removes edges from the CFG (no longer necessary now that jumps don't have conditions)
  • Significantly improves the way intra/interprocedural analyses are handled so there isn't a boolean 'intra' flag carried around everywhere
  • Makes the SimpleMonotonicSolver obtain its initial set of nodes in a more modular way.

l-kent added 11 commits November 15, 2023 12:25
…he interprocedural edges, enable cfg inlining (with default depth of 5) so the interprocedural analysis actually somewhat works
# Conflicts:
#	src/main/scala/analysis/solvers/FixPointSolver.scala
#	src/main/scala/analysis/solvers/MonotonicSolver.scala
@yousifpatti
Copy link
Contributor

yousifpatti commented Nov 23, 2023

I am happy with these changes. Are you going to merge them soon I wish to merge the lifted lattice stuff as well? @l-kent

@l-kent l-kent merged commit 53a2647 into main Nov 23, 2023
1 check passed
@l-kent l-kent deleted the lattice-types branch January 22, 2024 04:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants