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