Argyrios Kyrtzidis | f4699d1 | 2011-02-18 20:55:19 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -analyze -analyzer-check-objc-mem -verify %s |
2 | |||||
3 | int f1(char *dst) { | ||||
4 | char *p = dst + 4; | ||||
5 | char *q = dst + 3; | ||||
6 | return !(q >= p); | ||||
7 | } | ||||
Argyrios Kyrtzidis | 4f20de1 | 2011-02-18 21:24:56 +0000 | [diff] [blame] | 8 | |
Argyrios Kyrtzidis | 7ff07dc | 2011-02-19 01:08:41 +0000 | [diff] [blame] | 9 | long f2(char *c) { |
10 | return long(c) & 1; | ||||
11 | } | ||||
12 | |||||
Argyrios Kyrtzidis | 370e6e9 | 2011-02-19 01:59:41 +0000 | [diff] [blame] | 13 | bool f3() { |
14 | return !false; | ||||
15 | } | ||||
16 | |||||
Argyrios Kyrtzidis | b14175a | 2011-02-19 08:03:18 +0000 | [diff] [blame^] | 17 | void *f4(int* w) { |
18 | return reinterpret_cast<void*&>(w); | ||||
19 | } | ||||
20 | |||||
Argyrios Kyrtzidis | 4f20de1 | 2011-02-18 21:24:56 +0000 | [diff] [blame] | 21 | namespace { |
22 | |||||
23 | struct A { }; | ||||
24 | struct B { | ||||
John McCall | 15e310a | 2011-02-19 02:53:41 +0000 | [diff] [blame] | 25 | operator A() { return A(); } |
Argyrios Kyrtzidis | 4f20de1 | 2011-02-18 21:24:56 +0000 | [diff] [blame] | 26 | }; |
27 | |||||
28 | A f(char *dst) { | ||||
29 | B b; | ||||
30 | return b; | ||||
31 | } | ||||
32 | |||||
33 | } | ||||
Argyrios Kyrtzidis | b14175a | 2011-02-19 08:03:18 +0000 | [diff] [blame^] | 34 | |
35 | namespace { | ||||
36 | |||||
37 | struct S { | ||||
38 | void *p; | ||||
39 | }; | ||||
40 | |||||
41 | void *f(S* w) { | ||||
42 | return &reinterpret_cast<void*&>(*w); | ||||
43 | } | ||||
44 | |||||
45 | } |