1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -verify %s 2 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -verify -x c++ %s 3 4 void clang_analyzer_eval(int); 5 6 void testInvalidation() { 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 17 const int globalConstant = 1; 18 void testCapturedConstants() { 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 29 typedef const int constInt; 30 constInt anotherGlobalConstant = 1; 31 void testCapturedConstantsTypedef() { 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