diff options
Diffstat (limited to 'test/Analysis/func.c')
| -rw-r--r-- | test/Analysis/func.c | 14 | 
1 files changed, 14 insertions, 0 deletions
| diff --git a/test/Analysis/func.c b/test/Analysis/func.c index 9abb560e7583..78afb45da696 100644 --- a/test/Analysis/func.c +++ b/test/Analysis/func.c @@ -1,6 +1,7 @@  // RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify %s  void clang_analyzer_eval(int); +void clang_analyzer_warnIfReached();  void f(void) {    void (*p)(void); @@ -25,3 +26,16 @@ void f3(void (*f)(void), void (*g)(void)) {    (*g)();    clang_analyzer_eval(!g); // expected-warning{{FALSE}}  } + +void nullFunctionPointerConstant() { +  void (*f)(void) = 0; +  f(); // expected-warning{{Called function pointer is null}} +  clang_analyzer_warnIfReached(); // no-warning +} + +void nullFunctionPointerConstraint(void (*f)(void)) { +  if (f) +    return; +  f(); // expected-warning{{Called function pointer is null}} +  clang_analyzer_warnIfReached(); // no-warning +} | 
