summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/casts.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2018-07-17 00:42:35 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2018-07-17 00:42:35 +0000
commit35dbd0b1ff4b9c26a51fa8ae178f8799f3976f67 (patch)
tree40a3cb97f0d5c15d29744a46dce0cdb354b0c58a /clang/test/Analysis/casts.cpp
parentd1163790c363bb47c4b072dc679522941ebf55ca (diff)
downloadbcm5719-llvm-35dbd0b1ff4b9c26a51fa8ae178f8799f3976f67.tar.gz
bcm5719-llvm-35dbd0b1ff4b9c26a51fa8ae178f8799f3976f67.zip
[analyzer] pr37802: Fix symbolic-pointer-to-boolean casts during load.
The canonical representation of pointer &SymRegion{$x} casted to boolean is "$x != 0", not "$x". Assertion added in r337227 catches that. Differential Revision: https://reviews.llvm.org/D48232 llvm-svn: 337228
Diffstat (limited to 'clang/test/Analysis/casts.cpp')
-rw-r--r--clang/test/Analysis/casts.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/test/Analysis/casts.cpp b/clang/test/Analysis/casts.cpp
index 6499b20a79d..757eb6da662 100644
--- a/clang/test/Analysis/casts.cpp
+++ b/clang/test/Analysis/casts.cpp
@@ -35,3 +35,9 @@ int *&&castToIntPtrRValueRef(char *p) {
bool testCastToIntPtrRValueRef(char *p, int *s) {
return castToIntPtrRValueRef(p) != s; // no-crash
}
+
+bool retrievePointerFromBoolean(int *p) {
+ bool q;
+ *reinterpret_cast<int **>(&q) = p;
+ return q;
+}
OpenPOWER on IntegriCloud