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