misc-ps.m revision c13b6e251afb9530bbcc8c6f26dc4266f4f0c93b
1// RUN: clang -checker-cfref --verify %s
2
3// Reduced test case from crash in <rdar://problem/6253157>
4@class NSObject;
5@interface A @end
6@implementation A
7- (void)foo:(void (^)(NSObject *x))block {
8  if (!((block != ((void *)0)))) {}
9}
10@end
11
12// Reduced test case from crash in PR 2796;
13//  http://llvm.org/bugs/show_bug.cgi?id=2796
14
15unsigned foo(unsigned x) { return __alignof__((x)) + sizeof(x); }
16
17// Improvement to path-sensitivity involving compound assignments.
18//  Addresses false positive in <rdar://problem/6268365>
19//
20
21unsigned r6268365Aux();
22
23void r6268365() {
24  unsigned x = 0;
25  x &= r6268365Aux();
26  unsigned j = 0;
27    
28  if (x == 0) ++j;
29  if (x == 0) x = x / j; // no-warning
30}
31
32void divzeroassume(unsigned x, unsigned j) {  
33  x /= j;  
34  if (j == 0) x /= 0;     // no-warning
35  if (j == 0) x /= j;     // no-warning
36  if (j == 0) x = x / 0;  // no-warning
37}
38
39void divzeroassumeB(unsigned x, unsigned j) {  
40  x = x / j;  
41  if (j == 0) x /= 0;     // no-warning
42  if (j == 0) x /= j;     // no-warning
43  if (j == 0) x = x / 0;  // no-warning
44}
45
46