summaryrefslogtreecommitdiff
path: root/test/Analysis/misc-ps-region-store.m
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-01-25 21:08:47 +0000
committerTed Kremenek <kremenek@apple.com>2011-01-25 21:08:47 +0000
commitf6a19fb92556e040db2d6a7b35b504ba7ebca3bf (patch)
treee3cd03777a02ac8356b82881466381d8598e910c /test/Analysis/misc-ps-region-store.m
parent5aa74affa5d61d04c4b034b3722ca41aec0cba6e (diff)
downloadclang-f6a19fb92556e040db2d6a7b35b504ba7ebca3bf.tar.gz
Don't try and symbolicate unions; we don't reason
about them yet. Fixes crash reported in PR 9049. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124228 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis/misc-ps-region-store.m')
-rw-r--r--test/Analysis/misc-ps-region-store.m20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/Analysis/misc-ps-region-store.m b/test/Analysis/misc-ps-region-store.m
index 13a2c1fbe9..6bf79f5011 100644
--- a/test/Analysis/misc-ps-region-store.m
+++ b/test/Analysis/misc-ps-region-store.m
@@ -1217,3 +1217,23 @@ int rdar8848957(int index) {
vals[index] = foo_rdar8848957();
return vals[index].x; // no-warning
}
+
+// PR 9049 - crash on symbolicating unions. This test exists solely to
+// test that the analyzer doesn't crash.
+typedef struct pr9048_cdev *pr9048_cdev_t;
+typedef union pr9048_abstracted_disklabel { void *opaque; } pr9048_disklabel_t;
+struct pr9048_diskslice { pr9048_disklabel_t ds_label; };
+struct pr9048_diskslices {
+ int dss_secmult;
+ struct pr9048_diskslice dss_slices[16];
+};
+void pr9048(pr9048_cdev_t dev, struct pr9048_diskslices * ssp, unsigned int slice)
+{
+ pr9048_disklabel_t lp;
+ struct pr9048_diskslice *sp;
+ sp = &ssp->dss_slices[slice];
+ if (ssp->dss_secmult == 1) {
+ } else if ((lp = sp->ds_label).opaque != ((void *) 0)) {
+ }
+}
+