blob: 2d4fdd4637de17b22e89c8485cf23350c3e9539c [file] [log] [blame]
Ted Kremeneke5cfd522011-05-25 23:57:29 +00001// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -disable-free -analyzer-eagerly-assume -analyzer-checker=core -analyzer-checker=deadcode -verify %s
2
3unsigned long strlen(const char *);
4
5int size_rdar9373039 = 1;
6int rdar9373039() {
7 int x;
8 int j = 0;
9
10 for (int i = 0 ; i < size_rdar9373039 ; ++i)
11 x = 1;
12
13 // strlen doesn't invalidate the value of 'size_rdar9373039'.
14 int extra = (2 + strlen ("Clang") + ((4 - ((unsigned int) (2 + strlen ("Clang")) % 4)) % 4)) + (2 + strlen ("1.0") + ((4 - ((unsigned int) (2 + strlen ("1.0")) % 4)) % 4));
15
16 for (int i = 0 ; i < size_rdar9373039 ; ++i)
17 j += x; // no-warning
18
19 return j;
20}
21
22int foo_rdar9373039(const char *);
23
24int rdar93730392() {
25 int x;
26 int j = 0;
27
28 for (int i = 0 ; i < size_rdar9373039 ; ++i)
29 x = 1;
30
31 int extra = (2 + foo_rdar9373039 ("Clang") + ((4 - ((unsigned int) (2 + foo_rdar9373039 ("Clang")) % 4)) % 4)) + (2 + foo_rdar9373039 ("1.0") + ((4 - ((unsigned int) (2 + foo_rdar9373039 ("1.0")) % 4)) % 4)); // expected-warning {{never read}}
32
33 for (int i = 0 ; i < size_rdar9373039 ; ++i)
34 j += x; // expected-warning {{garbage}}
35
36 return j;
37}
38