diff options
| author | Devin Coughlin <dcoughlin@apple.com> | 2016-03-25 21:18:22 +0000 |
|---|---|---|
| committer | Devin Coughlin <dcoughlin@apple.com> | 2016-03-25 21:18:22 +0000 |
| commit | b8076292abcfb10d87f3b107dd871b7327d18534 (patch) | |
| tree | 3ae5c02e4cdbaa6c32c7c2594cfd8e67a1419274 /clang/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h | |
| parent | 36c53fe147378109ddebed3d3f62fafcccca105a (diff) | |
| download | bcm5719-llvm-b8076292abcfb10d87f3b107dd871b7327d18534.tar.gz bcm5719-llvm-b8076292abcfb10d87f3b107dd871b7327d18534.zip | |
[analyzer] Add CIFIlter modeling to DeallocChecker.
The -dealloc method in CIFilter is highly unusual in that it will release
instance variables belonging to its *subclasses* if the variable name
starts with "input" or backs a property whose name starts with "input".
Subclasses should not release these ivars in their own -dealloc method --
doing so could result in an over release.
Before this commit, the DeallocChecker would warn about missing releases for
such "input" properties -- which could cause users of the analyzer to add
over releases to silence the warning.
To avoid this, DeallocChecker now treats CIFilter "input-prefixed" ivars
as MustNotReleaseDirectly and so will not require a release. Further, it
will now warn when such an ivar is directly released in -dealloc.
rdar://problem/25364901
llvm-svn: 264463
Diffstat (limited to 'clang/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h')
| -rw-r--r-- | clang/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h b/clang/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h index 9850aec6ee8..231c0bf5640 100644 --- a/clang/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h +++ b/clang/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h @@ -30,3 +30,6 @@ typedef struct objc_selector *SEL; void _Block_release(const void *aBlock); #define Block_release(...) _Block_release((const void *)(__VA_ARGS__)) + +@interface CIFilter : NSObject +@end |

