| // RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify %s |
| void clang_analyzer_eval(int); |
| void clang_analyzer_warnIfReached(); |
| void g(void (*fp)(void)); |
| void f3(void (*f)(void), void (*g)(void)) { |
| clang_analyzer_eval(!f); // expected-warning{{UNKNOWN}} |
| clang_analyzer_eval(!f); // expected-warning{{FALSE}} |
| clang_analyzer_eval(!g); // expected-warning{{UNKNOWN}} |
| clang_analyzer_eval(!g); // expected-warning{{FALSE}} |
| void nullFunctionPointerConstant() { |
| f(); // expected-warning{{Called function pointer is null}} |
| clang_analyzer_warnIfReached(); // no-warning |
| void nullFunctionPointerConstraint(void (*f)(void)) { |
| f(); // expected-warning{{Called function pointer is null}} |
| clang_analyzer_warnIfReached(); // no-warning |