| 1 | // RUN: %clang_cc1 -analyze -analyzer-checker=core -w -DNO_CROSSCHECK -verify %s |
| 2 | // RUN: %clang_cc1 -analyze -analyzer-checker=core -w -analyzer-config crosscheck-with-z3=true -verify %s |
| 3 | // REQUIRES: z3 |
| 4 | |
| 5 | typedef struct o p; |
| 6 | struct o { |
| 7 | struct { |
| 8 | } s; |
| 9 | }; |
| 10 | |
| 11 | void q(*r, p2) { r < p2; } |
| 12 | |
| 13 | void k(l, node) { |
| 14 | struct { |
| 15 | p *node; |
| 16 | } * n, *nodep, path[sizeof(void)]; |
| 17 | path->node = l; |
| 18 | for (n = path; node != l;) { |
| 19 | q(node, n->node); |
| 20 | nodep = n; |
| 21 | } |
| 22 | if (nodep) // expected-warning {{Branch condition evaluates to a garbage value}} |
| 23 | n[1].node->s; |
| 24 | } |
| 25 | |