Closed
Conversation
…he same stage as the dataflow stage.
| */ | ||
| final class IndirectParameterNode = AbstractIndirectParameterNode; | ||
|
|
||
| /** |
Check warning
Code scanning / CodeQL
Redundant import Warning
Comment on lines
+1323
to
+1325
| override DataFlowCallable getEnclosingCallable() { | ||
| result.asSourceCallable() = this.getFunction() | ||
| } |
Check warning
Code scanning / CodeQL
Class QLDoc style Warning
2a94da3 to
8b17a38
Compare
…re's no reason not to do so.
8b17a38 to
db33dad
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR removes most of the re-evaluation of predicates from previous stages. In particular, the dataflow stage made use of various internal predicates from IR generation which caused some unfortunate re-evaluation.
There were also some other stage-related issues where various predicates in dataflow were
cached, but not put inside acachedmodule, which produced unnecessary stages.Unfortunately, this was easier said than done. It required a large refactoring of the dataflow files because
Iwe have mad some fairly arbitrary choices as to what belonged inDataFlowUtil.qllandDataFlowPrivate.qllwhich made it hard to unify the stages. I tried my best to make this refactoring commit-by-commit reviewable.Most of this PR has been guided by the output of Schack's stageoverlap.py script. There should be no changes to any resulting tuples.
DCA looks great. We shave off about 4-5% of the total analysis time 🎉 Additionally, my experience is that this PR removes a lot of recomputation of
DataFlowUtil.qll/DataFlowPrivate.qllpredicates when I modify anisSourceorisSinkin a query.