1 // RUN: %clang_cc1 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=basic -analyzer-constraints=range -verify -fblocks %s
2 // RUN: %clang_cc1 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=range -verify -fblocks %s
4 // <rdar://problem/6776949>
5 // main's 'argc' argument is always > 0
6 int main(int argc, char* argv[]) {
22 return *p; // no-warning
25 // PR 5969: the comparison of argc < 3 || argc > 4 should constraint the switch
26 // statement from having the 'default' branch taken. This previously reported a false
27 // positive with the use of 'v'.
29 int pr5969(int argc, char *argv[]) {
33 if ((argc < 3) || (argc > 4)) return 0;
44 return v; // no-warning
47 int pr5969_positive(int argc, char *argv[]) {
51 if ((argc < 3) || (argc > 4)) return 0;
59 return v; // expected-warning{{Undefined or garbage value returned to caller}}