summaryrefslogtreecommitdiff
path: root/test/Analysis/exploded-graph-rewriter/program_points.dot
blob: 2f49d7f75ef01fee8f913d4c9292650d47d874df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// RUN: %exploded_graph_rewriter %s | FileCheck %s

// FIXME: Substitution doesn't seem to work on Windows.
// UNSUPPORTED: system-windows

// CHECK: <b>Program points:</b>
// CHECK-SAME: <table border="0" align="left" width="0">
// CHECK-SAME:   <tr>
// CHECK-SAME:     <td width="0">
// CHECK-SAME:     </td>
// CHECK-SAME:     <td align="left" width="0">
// CHECK-SAME:       <font color="gold3">BlockEdge</font>
// CHECK-SAME:     </td>
// CHECK-SAME:     <td align="left">
// CHECK-SAME:     [B0] -&gt; [B1]
// CHECK-SAME:     </td>
// CHECK-SAME:   </tr>
// CHECK-SAME:   <tr>
// CHECK-SAME:     <td width="0">
// CHECK-SAME:     </td>
// CHECK-SAME:     <td align="left" width="0">
// CHECK-SAME:       <font color="gold3">BlockEntrance</font>
// CHECK-SAME:     </td>
// CHECK-SAME:     <td align="left">
// CHECK-SAME:     [B1]
// CHECK-SAME:     </td>
// CHECK-SAME:   </tr>
// CHECK-SAME: </table>
Node0x1 [shape=record,label=
 "{
    { "node_id": 1, "pointer": "0x1", "has_report": false, "is_sink": false,
      "program_state": null, "program_points": [
      {
        "kind": "Edge",
        "src_id": 0,
        "dst_id": 1,
        "terminator": null,
        "term_kind": null,
        "tag": null
      },
      {
        "kind": "BlockEntrance",
        "block_id": 1,
        "terminator": null,
        "term_kind": null,
        "tag": null
      }
    ]}
\l}"];

// CHECK-NEXT: <b>Program point:</b>
// CHECK-SAME: <table border="0" align="left" width="0">
// CHECK-SAME:   <tr>
// CHECK-SAME:     <td align="left" width="0">
// CHECK-SAME:       main.cpp:<b>4</b>:<b>5</b>:
// CHECK-SAME:     </td>
// CHECK-SAME:     <td align="left" width="0">
// CHECK-SAME:       <font color="cyan4">DeclRefExpr</font>
// CHECK-SAME:     </td>
// CHECK-SAME:     <td align="left"><i>S3</i></td>
// CHECK-SAME:     <td align="left">
// CHECK-SAME:       <font color="cyan3">PreStmt</font>
// CHECK-SAME:     </td>
// CHECK-SAME:     <td align="left">x</td>
// CHECK-SAME:   </tr>
// CHECK-SAME:   <tr>
// CHECK-SAME:     <td width="0">
// CHECK-SAME:     </td>
// CHECK-SAME:     <td colspan="3" align="left">
// CHECK-SAME:       <b>Tag: </b>
// CHECK-SAME:       <font color="crimson">ExprEngine : Clean Node</font>
// CHECK-SAME:     </td>
// CHECK-SAME:   </tr>
// CHECK-SAME: </table>
Node0x2 [shape=record,label=
 "{
    { "node_id": 2, "pointer": "0x2", "has_report": false, "is_sink": false,
      "program_state": null, "program_points": [
      {
        "kind": "Statement",
        "stmt_kind": "DeclRefExpr",
        "stmt_point_kind": "PreStmt",
        "stmt_id": 3,
        "pointer": "0x3",
        "pretty": "x",
        "location": {
          "file": "main.cpp",
          "line": 4,
          "column": 5
        },
        "tag": "ExprEngine : Clean Node"
      }
    ]}
\l}"];

// Test collapsing large pretty prints with braces.

// CHECK-NEXT: <b>Program point:</b>
// CHECK-SAME: <td align="left">\{ ... \}</td>
Node0x3 [shape=record,label=
 "{
    { "node_id": 3, "pointer": "0x3", "has_report": false, "is_sink": false,
      "program_state": null, "program_points": [
      {
        "kind": "Statement",
        "stmt_kind": "CompoundStmt",
        "stmt_point_kind": "PostStmt",
        "stmt_id": 6,
        "pointer": "0x6",
        "pretty": "{ very very very very very very long pretty print }",
        "location": {
          "line": 7,
          "column": 8
        },
        "tag": "ExprEngine : Clean Node"
      }
    ]}
\l}"];