xref: /llvm-project/clang/test/Analysis/debug-checkers.cpp (revision 29dff0d4fb46fe8f1e9774fd5e64d3e07937ff35)
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