| // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s |
| |
| typedef unsigned uintptr_t; |
| |
| void f1() { |
| int *p; |
| *p = 0; // expected-warning{{Dereference of undefined pointer value}} |
| } |
| |
| struct foo_struct { |
| int x; |
| }; |
| |
| int f2() { |
| struct foo_struct *p; |
| |
| return p->x++; // expected-warning{{Access to field 'x' results in a dereference of an undefined pointer value (loaded from variable 'p')}} |
| } |
| |
| int f3() { |
| char *x; |
| int i = 2; |
| |
| return x[i + 1]; // expected-warning{{Array access (from variable 'x') results in an undefined pointer dereference}} |
| } |
| |
| int f3_b() { |
| char *x; |
| int i = 2; |
| |
| return x[i + 1]++; // expected-warning{{Array access (from variable 'x') results in an undefined pointer dereference}} |
| } |