41 lines · c
1// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -analyzer-config eagerly-assume=false -verify %s2// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -analyzer-config eagerly-assume=false -verify -x c++ %s3 4void clang_analyzer_eval(int);5 6void testInvalidation(void) {7 __block int i = 0;8 ^{9 ++i;10 }();11 12 // Under inlining, we will know that i == 1.13 clang_analyzer_eval(i == 0); // expected-warning{{UNKNOWN}}14}15 16 17const int globalConstant = 1;18void testCapturedConstants(void) {19 const int localConstant = 2;20 static const int staticConstant = 3;21 22 ^{23 clang_analyzer_eval(globalConstant == 1); // expected-warning{{TRUE}}24 clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}}25 clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}}26 }();27}28 29typedef const int constInt;30constInt anotherGlobalConstant = 1;31void testCapturedConstantsTypedef(void) {32 constInt localConstant = 2;33 static constInt staticConstant = 3;34 35 ^{36 clang_analyzer_eval(anotherGlobalConstant == 1); // expected-warning{{TRUE}}37 clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}}38 clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}}39 }();40}41