ASDenysPetrov added a comment.

Generally, with this patch we kinda have several constraints for each cast of a 
single symbol. And we shall care for all of that constraints and timely update 
them (if possible).
For instance, we have `int x` and met casts of this symbol in code:

  int x;
  (char)x; // we can reason about the 1st byte
  (short)x; // we can reason about the 2 lowest bytes
  (ushort)x; // we can reason about the 2 lowest bytes (in this case we may not 
store for unsigned separately, as we already stored 2 bytes for signed)

That's like we have a knowledge of a lower //part// of the integer. And every 
time we have a new constraints, for example, for `(short)x;` (aka 2 bytes) then 
we have to update all the constraints that have two bytes or lower (`(char)x`in 
this case) as well to make them consistent.


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

https://reviews.llvm.org/D103096

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

Reply via email to