uninit-vals-ps.c revision 7c686661d65c63f6f518ca81830dd61bd64bfe1f
1// RUN: clang -checker-simple -verify %s && 2// RUN: clang -checker-simple -analyzer-store-region -verify %s 3 4struct FPRec { 5 void (*my_func)(int * x); 6}; 7 8int bar(int x); 9 10int f1_a(struct FPRec* foo) { 11 int x; 12 (*foo->my_func)(&x); 13 return bar(x)+1; // no-warning 14} 15 16int f1_b() { 17 int x; 18 return bar(x)+1; // expected-warning{{Pass-by-value argument in function is undefined.}} 19} 20 21int f2() { 22 23 int x; 24 25 if (x+1) // expected-warning{{Branch}} 26 return 1; 27 28 return 2; 29} 30 31int f2_b() { 32 int x; 33 34 return ((x+1)+2+((x))) + 1 ? 1 : 2; // expected-warning{{Branch}} 35} 36 37int f3(void) { 38 int i; 39 int *p = &i; 40 if (*p > 0) // expected-warning{{Branch condition evaluates to an uninitialized value}} 41 return 0; 42 else 43 return 1; 44} 45 46int ret_uninit() { 47 int i; 48 int *p = &i; 49 return *p; // expected-warning{{Uninitialized or undefined return value returned to caller.}} 50} 51 52 53