-
Notifications
You must be signed in to change notification settings - Fork 273
Split up dependency graph implementation #1859
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
Comments
I'd like to note that I have got work that further splits up data dependencies (due to some recent, rather prominent event). This wouldn't really stop what's being suggested here, but it may be worth talking about before anyone actually getting to action. |
I completely agree with @danpoe's suggestion. Data-dependencies are (IMHO) best computed with an abstract interpretation approach while control dependencies are (at the moment) CFG-based. Some extra complications:
|
A heads up on this, we are planning to do the suggested refactorings (starting in about a week or so). Here's the plan:
@tautschnig @martin-cs Does that sound reasonable to you? @tautschnig Would the suggested refactoring of the data dependence computation clash with your patches that further splits up data dependencies? |
|
Now that sufficient time has passed, and with regard to the possible clash: my suggestion is to introduce a concept of address dependencies. These are a subset of data dependencies that are used to compute pointer offsets or array indices. I don't strictly expect you to integrate this in your planned work, but maybe you can give it some thought. Why do I care? Speculation ... |
@martin-cs Yes, the reaching definitions analysis would stay as is, just the code that uses the information it computed to compute the data dependencies would become a non-AI analysis. |
@tautschnig Ah, I see. Yes, I think that should be mostly orthogonal to the refactorings proposed here. |
@danpoe : sounds great then, esp. if we can swap in the variable sensitivity domains's last modified information. |
I am going to close out this issue, given that it was about a refactor which @danpoe was working on and that he is not currently contributing to cbmc. |
Part of the complexity of the current dependency graph implementation comes from the fact that data dependencies and control dependencies are computed simultaneously by the same analysis (with domain dep_graph_domaint) and then a graph is built from the result (in dependence_grapht, which is derived from ait).
Since neither control dependencies are needed to compute data dependencies (nor vice versa), the code could be simplified by computing them by separate analyses, and then another class would consume the information of both and build the dependency graph.
The text was updated successfully, but these errors were encountered: