NoQ added a comment.

Like, the only reason why we have `trackExpressionValue` is because our 
concrete values are indistinguishable from each other. Regardless of where it 
comes from, `0 (Loc)` is the same as all other `0 (Loc)`s, so we have to 
manually observe how it was copied around in order to figure out where it comes 
from.

Symbols, by design, have their origin as their identity. Whenever we encounter 
an unknown runtime value, we denote it with a symbol, therefore the symbol //by 
construction// has all the information about that runtime value: how it 
appeared, why it's unknown, and so on.

Because invalidation produces symbols and not concrete values (as it destroys 
information about the program state, while concrete values //are// such 
information), this patch doesn't need to have anything to do with value 
tracking.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D75698



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

Reply via email to