summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2019-05-15 18:41:32 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2019-05-15 18:41:32 +0000
commit07c7257cdc7f7fda8343d45e645a4c59f66835a1 (patch)
treedaa20aea391f182b6d18c6ad160ad393c1532ed1 /clang/test
parentf672b6170ce8cf1f3dac48a167947c868beaa6e5 (diff)
downloadbcm5719-llvm-07c7257cdc7f7fda8343d45e645a4c59f66835a1.tar.gz
bcm5719-llvm-07c7257cdc7f7fda8343d45e645a4c59f66835a1.zip
[analyzer] RetainCount: Fix os_returns_retained_on_zero with weird return types.
The checker was crashing when it was trying to assume a structure to be null or non-null so that to evaluate the effect of the annotation. Differential Revision: https://reviews.llvm.org/D61958 llvm-svn: 360790
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Analysis/osobject-retain-release.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/Analysis/osobject-retain-release.cpp b/clang/test/Analysis/osobject-retain-release.cpp
index 35d91add1a9..98b3e95abfd 100644
--- a/clang/test/Analysis/osobject-retain-release.cpp
+++ b/clang/test/Analysis/osobject-retain-release.cpp
@@ -702,3 +702,16 @@ OSObject *testSuppressionForMethodsEndingWithMatching(IOService *svc,
// returning from it at +0.
return table; // no-warning
}
+
+namespace weird_result {
+struct WeirdResult {
+ int x, y, z;
+};
+
+WeirdResult outParamWithWeirdResult(OS_RETURNS_RETAINED_ON_ZERO OSObject **obj);
+
+WeirdResult testOutParamWithWeirdResult() {
+ OSObject *obj;
+ return outParamWithWeirdResult(&obj); // no-warning
+}
+} // namespace weird_result
OpenPOWER on IntegriCloud