dead-stores.m revision cd9902bfb79c5c67559360514951714bdafac36e
1// RUN: %clang_cc1 -analyze -analyzer-experimental-internal-checks -analyzer-check-dead-stores -verify %s
2
3typedef signed char BOOL;
4typedef unsigned int NSUInteger;
5typedef struct _NSZone NSZone;
6@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
7@protocol NSObject  - (BOOL)isEqual:(id)object; @end
8@protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
9@protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
10@interface NSObject <NSObject> {} @end
11extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
12@interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value; @end
13typedef float CGFloat;
14typedef struct _NSPoint {} NSRange;
15@interface NSValue (NSValueRangeExtensions)  + (NSValue *)valueWithRange:(NSRange)range;
16- (BOOL)containsObject:(id)anObject;
17@end
18@class NSURLAuthenticationChallenge;
19@interface NSResponder : NSObject <NSCoding> {} @end
20@class NSArray, NSDictionary, NSString;
21@interface NSObject (NSKeyValueBindingCreation)
22+ (void)exposeBinding:(NSString *)binding;
23- (NSArray *)exposedBindings;
24@end
25extern NSString *NSAlignmentBinding;
26
27// This test case was reported as a false positive due to a bug in the
28// LiveVariables <-> DeadStores interplay.  We should not flag a warning
29// here.  The test case was reported in:
30//  http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-July/002157.html
31void DeadStoreTest(NSObject *anObject) {
32  NSArray *keys;
33  if ((keys = [anObject exposedBindings]) &&   // no-warning
34      ([keys containsObject:@"name"] && [keys containsObject:@"icon"])) {}
35}
36
37