-
Notifications
You must be signed in to change notification settings - Fork 1.9k
C++: Reduce re-evaluation #21390
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
Merged
Merged
C++: Reduce re-evaluation #21390
Changes from 12 commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
b9595d9
C++: Create a new file.
MathiasVP 271a759
C++: Move 'TIRDataFlowNode'.
MathiasVP 09d74a3
C++: Move 'CanonicalField' stuff.
MathiasVP 87478d0
C++: Move 'FieldAddress' and 'conversionFlow'.
MathiasVP edde414
C++: Move 'Node' into the public module.
MathiasVP 6e0c561
C++: Move a bunch non-public dataflow node subtypes.
MathiasVP 86bd0c0
C++: Move a bunch of newtypes and predicates into a cached module.
MathiasVP f223c95
C++: Cache 'toString' and 'getLocation'.
MathiasVP d804fc5
C++: Remove the 'ExprFlowCached' module. Instead we have a single cac…
MathiasVP 6661132
C++: No need to keep this in its own module now.
MathiasVP 1eccb8e
C++: Add a cache module to taint-tracking and ensure they happen in t…
MathiasVP cdb4158
C++: Fix some imports.
MathiasVP 26e8701
C++: Fix a few qualifiers.
MathiasVP 5d75b25
C++: Remove IR re-evaluation.
MathiasVP 17e6fd2
C++: Disable magic to prevent re-evaluation.
MathiasVP 85875c2
C++: Remove unnecessary recursion through Node.toString.
MathiasVP 92f2602
C++: Remove outdated comment.
MathiasVP 1139059
C++: Fix imports.
MathiasVP db33dad
C++: Add QLDoc. Also actually implement 'uninitializedNode' since the…
MathiasVP File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
1,804 changes: 1,804 additions & 0 deletions
1,804
cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll
Large diffs are not rendered by default.
Oops, something went wrong.
385 changes: 192 additions & 193 deletions
385
cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll
Large diffs are not rendered by default.
Oops, something went wrong.
1,901 changes: 22 additions & 1,879 deletions
1,901
cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
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
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
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
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
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
1 change: 1 addition & 0 deletions
1
cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.ql
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
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.
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.
Doesn't look ideal that we now need to import something internal here. Does this query do something odd that requires this?
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: 18dea55
I'm not sure why we did it this way, but it imports internal dataflow nodes to find definitions outside a loop. I think we could do this with the proper SSA API we have these days, but I didnt want to change that in this PR
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.
For standard queries you still only have to import
semmle.code.cpp.dataflow.new.DataFlow