1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s 24920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor 34920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregorvoid clang_analyzer_eval(int); 44920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor 54920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregorvoid testAnd(int i, int *p) { 64920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor int *nullP = 0; 74920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor int *knownP = &i; 84920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor clang_analyzer_eval((knownP && knownP) == 1); // expected-warning{{TRUE}} 94920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor clang_analyzer_eval((knownP && nullP) == 0); // expected-warning{{TRUE}} 104920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor clang_analyzer_eval((knownP && p) == 1); // expected-warning{{UNKNOWN}} 114920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor} 124920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor 134920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregorvoid testOr(int i, int *p) { 144920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor int *nullP = 0; 154920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor int *knownP = &i; 164920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor clang_analyzer_eval((nullP || knownP) == 1); // expected-warning{{TRUE}} 174920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor clang_analyzer_eval((nullP || nullP) == 0); // expected-warning{{TRUE}} 184920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor clang_analyzer_eval((nullP || p) == 1); // expected-warning{{UNKNOWN}} 194920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor} 204920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor 214920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor 224920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor// PR13461 234920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregorint testTypeIsInt(int i, void *p) { 244920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor if (i | (p && p)) 254920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor return 1; 264920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor return 0; 274920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor} 284920f1ffb62b13b88e579476803c093f97f3e17fDouglas Gregor