CPP: Speed up inconsistentLoopDirection.ql.#401
Merged
Conversation
jbj
previously approved these changes
Nov 5, 2018
jbj
left a comment
Contributor
There was a problem hiding this comment.
LGTM. I also tested this on FrodeSolheim/fs-uae, where this query now takes negligible time. Before this change, the query took longer than I was willing to wait.
Can you make the tests pass? Maybe push a whitespace fix to re-trigger the Azure tests.
| predicate candidateForStmt(ForStmt forStmt, Variable v, CrementOperation update, RelationalOperation rel) { | ||
| update = forStmt.getUpdate() and | ||
| update.getAnOperand() = v.getAnAccess() and | ||
| rel = forStmt.getCondition() |
jbj
approved these changes
Nov 5, 2018
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.
Speed up the
illDefined*ForStmtpredicates ininconsistentLoopDirection.ql. I believe the issue was a cartesian product betweenv.getAnAccess()andv.getAnAssignedValue(), which caused these predicates alone to take 3m49s when I ran the query with a clean cache onlibretro_libretro-uae. They now take negligible time.The overall query time dropped from 1337s to 1115s - I believe at least 700s of the remaining time may be consumed by a similar issue in
FlowVarin theDataFlowlibrary.@jbj @pavgust