| // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s |
| |
| int test1() { |
| int *p = (int *)sizeof(int); |
| p -= 1; |
| return *p; // expected-warning {{Dereference of null pointer}} |
| } |
| |
| int test2() { |
| int *p = (int *)sizeof(int); |
| p -= 2; |
| p += 1; |
| return *p; // expected-warning {{Dereference of null pointer}} |
| } |
| |
| int test3() { |
| int *p = (int *)sizeof(int); |
| p++; |
| p--; |
| p--; |
| return *p; // expected-warning {{Dereference of null pointer}} |
| } |
| |
| int test4() { |
| // This is a special case where pointer arithmetic is not calculated to |
| // preserve useful warnings on dereferences of null pointers. |
| int *p = 0; |
| p += 1; |
| return *p; // expected-warning {{Dereference of null pointer}} |
| } |