| // RUN: %clang_analyze_cc1 -analyzer-checker=core,apiModeling.TrustReturnsNonnull -verify %s | |
| int *foo() __attribute__((returns_nonnull)); | |
| int *foo_no_attribute(); | |
| int test_foo() { | |
| int *x = foo(); | |
| if (x) {} | |
| return *x; // no-warning | |
| } | |
| int test_foo_no_attribute() { | |
| int *x = foo_no_attribute(); | |
| if (x) {} | |
| return *x; // expected-warning{{Dereference of null pointer}} | |
| } | |
| void test(void *(*f)(void)) { | |
| f(); // Shouldn't crash compiler | |
| } |