1 // RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCallGraph %s -fblocks 2>&1 | FileCheck %s
2 
mmm(int y)3 static void mmm(int y) {
4   if (y != 0)
5       y++;
6   y = y/y;
7 }
8 
foo(int x,int y)9 static int foo(int x, int y) {
10     mmm(y);
11     if (x != 0)
12       x++;
13     return 5/x;
14 }
15 
aaa()16 void aaa() {
17   foo(1,2);
18 }
19 
bbb(int y)20 void bbb(int y) {
21   int x = (y > 2);
22   ^ {
23       foo(x, y);
24   }();
25 }
26 void ccc();
ddd()27 void ddd() { ccc(); }
ccc()28 void ccc() {}
29 
30 void eee();
eee()31 void eee() {}
fff()32 void fff() { eee(); }
33 
34 // CHECK:--- Call graph Dump ---
35 // CHECK-NEXT: {{Function: < root > calls: mmm foo aaa < > bbb ccc ddd eee fff $}}
36 // CHECK-NEXT: {{Function: fff calls: eee $}}
37 // CHECK-NEXT: {{Function: eee calls: $}}
38 // CHECK-NEXT: {{Function: ddd calls: ccc $}}
39 // CHECK-NEXT: {{Function: ccc calls: $}}
40 // CHECK-NEXT: {{Function: bbb calls: < > $}}
41 // CHECK-NEXT: {{Function: < > calls: foo $}}
42 // CHECK-NEXT: {{Function: aaa calls: foo $}}
43 // CHECK-NEXT: {{Function: foo calls: mmm $}}
44 // CHECK-NEXT: {{Function: mmm calls: $}}
45