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 
3 void clang_analyzer_eval(int);
4 int nested5() {
5   if (5 < 3)
6     return 0;
7   else
8     if (3 == 3)
9       return 0;
10   return 0;
11 }
12 int nested4() {
13   return nested5();
14 }
15 int nested3() {
16   return nested4();
17 }
18 int nested2() {
19   return nested3();
20 }
21 int nested1() {
22   return nested2();
23 }
24 
25 void testNested() {
26   clang_analyzer_eval(nested1() == 0); // expected-warning{{TRUE}}
27 }
28 
29 // Make sure we terminate a recursive path.
30 int recursive() {
31   return recursive();
32 }
33 int callRecursive() {
34   return recursive();
35 }
36 
37 int mutuallyRecursive1();
38 
39 int mutuallyRecursive2() {
40   return mutuallyRecursive1();
41 }
42 
43 int mutuallyRecursive1() {
44   return mutuallyRecursive2();
45 }
46 int callMutuallyRecursive() {
47   return mutuallyRecursive1();
48 }
49