[PATCH] D103317: [Analyzer][engine][solver] Simplify complex constraints
Denys Petrov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 7 10:30:46 PDT 2021
ASDenysPetrov added a comment.
@vsavchenko
I appologize for my immaturity and for the audacity of my infantile assumptions. I admit any constructive criticism. Thank you for referencing the theory. I will thoroughly study the domain in all.
As for the **assignments** and why I brought them up, that's because I just tried to look at the problem from another angle. Consider two snippets:
void f(int a, int b, int c, int x, int y){
a = b;
x = y;
c = a;
// What can you say about a, x, c?
// `a` equals to `b` and 'c'
// `x` equals to `y`
// `c` equals to `a` and `b`
}
and
void f(int a, int b, int c, int x, int y){
if(a == b) {
if(x == y) {
if(c == a) {
// What can you say about a, x, c?
// `a` equals to `b` and 'c'
// `x` equals to `y`
// `c` equals to `a` and `b`
}
}
}
}
They both generates the same relationship between the variables. **Assignment** seemed to me as just a special case in a //true// branch of `==` operator and can be substituted with it in calculations. So, I decided to make some assumptions in this way. Digging more, it opened a lot of gaps and lacks for me.
Next time I will investigate deeper to present a finalized solution and not wasting your time explaining me the basics.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103317/new/
https://reviews.llvm.org/D103317
More information about the cfe-commits
mailing list