1 | // RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.builtin,debug.ExprInspection,unix.cstring -verify %s |
2 | |
3 | struct S { |
4 | int z; |
5 | }; |
6 | |
7 | void clang_analyzer_explain_int(int); |
8 | void clang_analyzer_explain_voidp(void *); |
9 | void clang_analyzer_explain_S(struct S); |
10 | |
11 | int glob; |
12 | |
13 | void test_1(int param, void *ptr) { |
14 | clang_analyzer_explain_voidp(&glob); // expected-warning-re{{{{^pointer to global variable 'glob'$}}}} |
15 | clang_analyzer_explain_int(param); // expected-warning-re{{{{^argument 'param'$}}}} |
16 | clang_analyzer_explain_voidp(ptr); // expected-warning-re{{{{^argument 'ptr'$}}}} |
17 | if (param == 42) |
18 | clang_analyzer_explain_int(param); // expected-warning-re{{{{^signed 32-bit integer '42'$}}}} |
19 | } |
20 | |
21 | void test_2(struct S s) { |
22 | clang_analyzer_explain_S(s); //expected-warning-re{{{{^lazily frozen compound value of parameter 's'$}}}} |
23 | clang_analyzer_explain_voidp(&s); // expected-warning-re{{{{^pointer to parameter 's'$}}}} |
24 | clang_analyzer_explain_int(s.z); // expected-warning-re{{{{^initial value of field 'z' of parameter 's'$}}}} |
25 | } |
26 | |