Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[analyzer][solver] Track symbol equivalence
Summary: For the most cases, we try to reason about symbol either based on the information we know about that symbol in particular or about its composite parts. This is faster and eliminates costly brute force searches through existing constraints. However, we do want to support some cases that are widespread enough and involve reasoning about different existing constraints at once. These include: * resoning about 'a - b' based on what we know about 'b - a' * reasoning about 'a <= b' based on what we know about 'a > b' or 'a < b' This commit expands on that part by tracking symbols known to be equal while still avoiding brute force searches. It changes the way we track constraints for individual symbols. If we know for a fact that 'a == b' then there is no need in tracking constraints for both 'a' and 'b' especially if these constraints are different. This additional relationship makes dead/live logic for constraints harder as we want to maintain as much information on the equivalence class as possible, but we still won't carry the information that we don't need anymore. Differential Revision: https://reviews.llvm.org/D82445
- Loading branch information
1 parent
f531c1c
commit b13d987
Showing
6 changed files
with
797 additions
and
66 deletions.
There are no files selected for viewing
This file contains 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 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 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
Oops, something went wrong.