aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/LiveDebugVariables.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2018-11-30 03:39:58 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2018-11-30 03:39:58 +0000
commit34d35767366bd953fc601c42d4457e25bc3b9faa (patch)
tree16db208de4c32d56a069c7e0e74feb9832b79e21 /llvm/lib/CodeGen/LiveDebugVariables.cpp
parentbbc6d68297c8b0641eb8226dea7746a0d97ae33b (diff)
downloadllvm-34d35767366bd953fc601c42d4457e25bc3b9faa.zip
llvm-34d35767366bd953fc601c42d4457e25bc3b9faa.tar.gz
llvm-34d35767366bd953fc601c42d4457e25bc3b9faa.tar.bz2
[analyzer] Nullability: Don't detect post factum violation on concrete values.
The checker suppresses warnings on paths on which a nonnull value is assumed to be nullable. This probably deserves a warning, but it's a separate story. Now, because dead symbol collection fires in pretty random moments, there sometimes was a situation when dead symbol collection fired after computing a parameter but before actually evaluating call enter into the function, which triggered the suppression when the argument was null in the first place earlier than the obvious warning for null-to-nonnull was emitted, causing false negatives. Only trigger the suppression for symbols, not for concrete values. It is impossible to constrain a concrete value post-factum because it is impossible to constrain a concrete value at all. This covers all the necessary cases because by the time we reach the call, symbolic values should be either not constrained to null, or already collapsed into concrete null values. Which in turn happens because they are passed through the Store, and the respective collapse is implemented as part of getSVal(), which is also weird. Differential Revision: https://reviews.llvm.org/D54017 llvm-svn: 347954
Diffstat (limited to 'llvm/lib/CodeGen/LiveDebugVariables.cpp')
0 files changed, 0 insertions, 0 deletions