Anna Zaks | 1ee76c1 | 2012-12-21 17:27:01 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCallGraph %s -fblocks 2>&1 | FileCheck %s |
Anna Zaks | c000e7e | 2012-03-08 00:42:23 +0000 | [diff] [blame] | 2 | |
| 3 | static void mmm(int y) { |
| 4 | if (y != 0) |
| 5 | y++; |
Anna Zaks | 1ee76c1 | 2012-12-21 17:27:01 +0000 | [diff] [blame] | 6 | y = y/y; |
Anna Zaks | c000e7e | 2012-03-08 00:42:23 +0000 | [diff] [blame] | 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 | |
Anna Zaks | 1ee76c1 | 2012-12-21 17:27:01 +0000 | [diff] [blame] | 20 | void bbb(int y) { |
| 21 | int x = (y > 2); |
| 22 | ^ { |
| 23 | foo(x, y); |
| 24 | }(); |
| 25 | } |
Anna Zaks | 87d404d | 2014-12-17 00:34:07 +0000 | [diff] [blame] | 26 | void ccc(); |
| 27 | void ddd() { ccc(); } |
| 28 | void ccc() {} |
| 29 | |
| 30 | void eee(); |
| 31 | void eee() {} |
| 32 | void fff() { eee(); } |
Anna Zaks | 1ee76c1 | 2012-12-21 17:27:01 +0000 | [diff] [blame] | 33 | |
Anna Zaks | c000e7e | 2012-03-08 00:42:23 +0000 | [diff] [blame] | 34 | // CHECK:--- Call graph Dump --- |
Anna Zaks | 87d404d | 2014-12-17 00:34:07 +0000 | [diff] [blame] | 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: $}} |