1// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-inline-max-stack-depth=3 -analyzer-config ipa-always-inline-size=3 -verify %s 2 3void clang_analyzer_eval(int); 4int nested5() { 5 if (5 < 3) 6 return 0; 7 else 8 if (3 == 3) 9 return 0; 10 return 0; 11} 12int nested4() { 13 return nested5(); 14} 15int nested3() { 16 return nested4(); 17} 18int nested2() { 19 return nested3(); 20} 21int nested1() { 22 return nested2(); 23} 24 25void testNested() { 26 clang_analyzer_eval(nested1() == 0); // expected-warning{{TRUE}} 27} 28 29// Make sure we terminate a recursive path. 30int recursive() { 31 return recursive(); 32} 33int callRecursive() { 34 return recursive(); 35} 36 37int mutuallyRecursive1(); 38 39int mutuallyRecursive2() { 40 return mutuallyRecursive1(); 41} 42 43int mutuallyRecursive1() { 44 return mutuallyRecursive2(); 45} 46int callMutuallyRecursive() { 47 return mutuallyRecursive1(); 48} 49