summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/array-struct-region.c
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-02-21 01:34:51 +0000
committerJordan Rose <jordan_rose@apple.com>2013-02-21 01:34:51 +0000
commitd1c7cf26ae622ed911ee6d746313dfbedcdfd012 (patch)
treed4f1c17a715495b82fea703688914dcc812e814a /clang/test/Analysis/array-struct-region.c
parenta6db9339797e612cbd564be37a8356752c33d320 (diff)
downloadbcm5719-llvm-d1c7cf26ae622ed911ee6d746313dfbedcdfd012.tar.gz
bcm5719-llvm-d1c7cf26ae622ed911ee6d746313dfbedcdfd012.zip
[analyzer] Tighten up safety in the use of lazy bindings.
- When deciding if we can reuse a lazy binding, make sure to check if there are additional bindings in the sub-region. - When reading from a lazy binding, don't accidentally strip off casts or base object regions. This slows down lazy binding reading a bit but is necessary for type sanity when treating one class as another. A bit of minor refactoring allowed these two checks to be unified in a nice early-return-using helper function. <rdar://problem/13239840> llvm-svn: 175703
Diffstat (limited to 'clang/test/Analysis/array-struct-region.c')
-rw-r--r--clang/test/Analysis/array-struct-region.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/test/Analysis/array-struct-region.c b/clang/test/Analysis/array-struct-region.c
index dfb4cf13a9b..6817124afe5 100644
--- a/clang/test/Analysis/array-struct-region.c
+++ b/clang/test/Analysis/array-struct-region.c
@@ -285,6 +285,13 @@ void testArrayStructCopy() {
clang_analyzer_eval(s3.data[0] == 'a'); // expected-warning{{TRUE}}
clang_analyzer_eval(s3.data[1] == 'b'); // expected-warning{{TRUE}}
clang_analyzer_eval(s3.data[2] == 'c'); // expected-warning{{TRUE}}
+
+ s3.data[0] = 'z';
+ ShortString s4 = s3;
+
+ clang_analyzer_eval(s4.data[0] == 'z'); // expected-warning{{TRUE}}
+ clang_analyzer_eval(s4.data[1] == 'b'); // expected-warning{{TRUE}}
+ clang_analyzer_eval(s4.data[2] == 'c'); // expected-warning{{TRUE}}
}
void testArrayStructCopyNested() {
OpenPOWER on IntegriCloud