ASDenysPetrov added a comment.


> ! In D103317#2793797 <https://reviews.llvm.org/D103317#2793797>, @vsavchenko 
> wrote:



> I replied to you earlier that assignments are not producing constraints.  The 
> analyzer has some sort of SSA (not really, but anyways), so every time we 
> reassign the variable it actually becomes a different symbol. So, from this 
> perspective `DeclRefExpr` `x` and symbol `x` are two different things:
>
>   int x = foo(); // after this DeclRefExpr and VarDecl x are associated with 
> conjured symbol #1 (aka conj#1)
>   int c = x + 10; // c is associated with `$conj#1 + 10`
>   x = a + 1; // DeclRefExpr x is now associated with `$a + 1`
>   x = c + x; // and now it is `conj#1 + 11`
>
> There is no symbolic assignment in the static analyzer.  Symbols are values, 
> values don't change.  We can only obtain more information of what particular 
> symbolic value represents.
>
> I hope it makes it more clear.
>
> As for equality, we already track equivalence classes of symbols and they can 
> have more than 2 symbols in them.  Actually, this whole data structure mostly 
> makes sense for cases when the class has more than 2 elements in it.

Thanks for the clarifications.

I'm trying to say that we need to keep our attention on 
assignments/initializations as well if we want to solve this problem 
efficiently. I didn't say that assignments produce constraints. Of course they 
do not :-). I want we produce more //bindings(associations)// on 
//assignments// to use them as mapping for further substitutions and traversing 
to get the right range.

As for the equivalence classes. I think we should go away from special cases. I 
mean what about lower-then classes or greater-or-equal classes. I think you got 
what I mean. I'm trying to find a general approach which can cover almost all 
individual improvements around CSA codebase.

I'm started working on this when saw your discussion. Just what you also 
consider the direction I'm moving. A lot of corner-examples, like you gave me, 
are welcome. Thank you for the feedbacks!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103317/new/

https://reviews.llvm.org/D103317

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to