1 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpDominators %s > %t 2>&1
2 // RUN: FileCheck --input-file=%t %s -check-prefix=DOM-CHECK
3 // DOM-CHECK: Immediate dominance tree (Node#,IDom#)
4
5 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpPostDominators %s > %t 2>&1
6 // RUN: FileCheck --input-file=%t %s -check-prefix=POSTDOM-CHECK
7 // POSTDOM-CHECK: Immediate post dominance tree (Node#,IDom#)
8
9 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpControlDependencies %s > %t 2>&1
10 // RUN: FileCheck --input-file=%t %s -check-prefix=CTRLDEPS-CHECK
11 // CTRLDEPS-CHECK: Control dependencies (Node#,Dependency#)
12
13 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpLiveVars %s > %t 2>&1
14 // RUN: FileCheck --input-file=%t %s -check-prefix=LIVE-VARS-CHECK
15 // LIVE-VARS-CHECK: live variables at block exit
16
17 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpLiveExprs %s > %t 2>&1
18 // RUN: FileCheck --input-file=%t %s -check-prefix=LIVE-EXPRS-CHECK
19 // LIVE-EXPRS-CHECK: live expressions at block exit
20
21 // Skip testing CFGViewer.
22
23 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpCFG %s > %t 2>&1
24 // RUN: FileCheck --input-file=%t %s -check-prefix=CFG-CHECK
25 // CFG-CHECK: ENTRY
26
27 // Skip testing CallGraphViewer.
28
29 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpCallGraph %s > %t 2>&1
30 // RUN: FileCheck --input-file=%t %s -check-prefix=CALL-GRAPH-CHECK
31 // CALL-GRAPH-CHECK: --- Call graph Dump ---
32
33 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ConfigDumper %s > %t 2>&1
34 // RUN: FileCheck --input-file=%t %s -check-prefix=CONFIG-CHECK
35 // CONFIG-CHECK: [config]
36
37 // Skip testing ExplodedGraphViewer.
38
39 // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ReportStmts %s > %t 2>&1
40 // RUN: FileCheck --input-file=%t %s -check-prefix=REPORT-STMTS-CHECK
41 // REPORT-STMTS-CHECK: warning: Statement
42
foo(int * p)43 void foo(int *p) {
44 *p = 3;
45 }
46
bar()47 int bar() {
48 int x;
49 foo(&x);
50 return x;
51 }
52