Clang Project

clang_source_code/test/Analysis/explain-svals.c
1// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.builtin,debug.ExprInspection,unix.cstring -verify %s
2
3struct S {
4  int z;
5};
6
7void clang_analyzer_explain_int(int);
8void clang_analyzer_explain_voidp(void *);
9void clang_analyzer_explain_S(struct S);
10
11int glob;
12
13void 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
21void 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