1 // RUN: %clang_analyze_cc1 -analyzer-checker=core,apiModeling.TrustReturnsNonnull -verify %s
2 
3 int *foo() __attribute__((returns_nonnull));
4 
5 int *foo_no_attribute();
6 
test_foo()7 int test_foo() {
8   int *x = foo();
9   if (x) {}
10   return *x; // no-warning
11 }
12 
test_foo_no_attribute()13 int test_foo_no_attribute() {
14   int *x = foo_no_attribute();
15   if (x) {}
16   return *x;  // expected-warning{{Dereference of null pointer}}
17 }
18 
test(void * (* f)(void))19 void test(void *(*f)(void)) {
20   f();  // Shouldn't crash compiler
21 }
22