| // RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.builtin,debug.ExprInspection -verify %s |
| |
| void clang_analyzer_eval(int); |
| |
| void initbug() { |
| const union { float a; } u = {}; |
| (void)u.a; // no-crash |
| } |
| |
| int const parr[2] = {1}; |
| void constarr() { |
| int i = 2; |
| clang_analyzer_eval(parr[i]); // expected-warning{{UNDEFINED}} |
| i = 1; |
| clang_analyzer_eval(parr[i] == 0); // expected-warning{{TRUE}} |
| i = -1; |
| clang_analyzer_eval(parr[i]); // expected-warning{{UNDEFINED}} |
| } |
| |
| struct SM { |
| int a; |
| int b; |
| }; |
| const struct SM sm = {.a = 1}; |
| void multinit() { |
| clang_analyzer_eval(sm.a == 1); // expected-warning{{TRUE}} |
| clang_analyzer_eval(sm.b == 0); // expected-warning{{TRUE}} |
| } |