llvm-project/clang/test/Analysis/func.c

28 lines
565 B
C

// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify %s
void clang_analyzer_eval(int);
void f(void) {
void (*p)(void);
p = f;
p = &f;
p();
(*p)();
}
void g(void (*fp)(void));
void f2() {
g(f);
}
void f3(void (*f)(void), void (*g)(void)) {
clang_analyzer_eval(!f); // expected-warning{{UNKNOWN}}
f();
clang_analyzer_eval(!f); // expected-warning{{FALSE}}
clang_analyzer_eval(!g); // expected-warning{{UNKNOWN}}
(*g)();
clang_analyzer_eval(!g); // expected-warning{{FALSE}}
}