Home | History | Annotate | Download | only in Analysis
      1 // RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCallGraph %s -fblocks 2>&1 | FileCheck %s
      2 
      3 static void mmm(int y) {
      4   if (y != 0)
      5       y++;
      6   y = y/y;
      7 }
      8 
      9 static int foo(int x, int y) {
     10     mmm(y);
     11     if (x != 0)
     12       x++;
     13     return 5/x;
     14 }
     15 
     16 void aaa() {
     17   foo(1,2);
     18 }
     19 
     20 void bbb(int y) {
     21   int x = (y > 2);
     22   ^ {
     23       foo(x, y);
     24   }();
     25 }
     26 void ccc();
     27 void ddd() { ccc(); }
     28 void ccc() {}
     29 
     30 void eee();
     31 void eee() {}
     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