[PATCH] D64264: [analyzer] exploded-graph-rewriter: Implement a topology-only mode.
Phabricator via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 8 16:54:17 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL365410: [analyzer] exploded-graph-rewriter: Implement a topology-only mode. (authored by dergachev, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D64264?vs=208236&id=208542#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64264/new/
https://reviews.llvm.org/D64264
Files:
cfe/trunk/test/Analysis/exploded-graph-rewriter/topology.dot
cfe/trunk/utils/analyzer/exploded-graph-rewriter.py
Index: cfe/trunk/utils/analyzer/exploded-graph-rewriter.py
===================================================================
--- cfe/trunk/utils/analyzer/exploded-graph-rewriter.py
+++ cfe/trunk/utils/analyzer/exploded-graph-rewriter.py
@@ -384,11 +384,12 @@
# A visitor that dumps the ExplodedGraph into a DOT file with fancy HTML-based
# syntax highlighing.
class DotDumpVisitor(object):
- def __init__(self, do_diffs, dark_mode, gray_mode):
+ def __init__(self, do_diffs, dark_mode, gray_mode, topo_mode):
super(DotDumpVisitor, self).__init__()
self._do_diffs = do_diffs
self._dark_mode = dark_mode
self._gray_mode = gray_mode
+ self._topo_mode = topo_mode
@staticmethod
def _dump_raw(s):
@@ -766,18 +767,19 @@
if node.is_sink:
self._dump('<tr><td><font color="cornflowerblue"><b>Sink Node'
'</b></font></td></tr>')
- self._dump('<tr><td align="left" width="0">')
- if len(node.points) > 1:
- self._dump('<b>Program points:</b></td></tr>')
- else:
- self._dump('<b>Program point:</b></td></tr>')
+ if not self._topo_mode:
+ self._dump('<tr><td align="left" width="0">')
+ if len(node.points) > 1:
+ self._dump('<b>Program points:</b></td></tr>')
+ else:
+ self._dump('<b>Program point:</b></td></tr>')
self._dump('<tr><td align="left" width="0">'
'<table border="0" align="left" width="0">')
for p in node.points:
self.visit_program_point(p)
self._dump('</table></td></tr>')
- if node.state is not None:
+ if node.state is not None and not self._topo_mode:
prev_s = None
# Do diffs only when we have a unique predecessor.
# Don't do diffs on the leaf nodes because they're
@@ -868,6 +870,9 @@
parser.add_argument('-d', '--diff', action='store_const', dest='diff',
const=True, default=False,
help='display differences between states')
+ parser.add_argument('-t', '--topology', action='store_const',
+ dest='topology', const=True, default=False,
+ help='only display program points, omit states')
parser.add_argument('-s', '--single-path', action='store_const',
dest='single_path', const=True, default=False,
help='only display the leftmost path in the graph '
@@ -889,7 +894,7 @@
graph.add_raw_line(raw_line)
explorer = SinglePathExplorer() if args.single_path else BasicExplorer()
- visitor = DotDumpVisitor(args.diff, args.dark, args.gray)
+ visitor = DotDumpVisitor(args.diff, args.dark, args.gray, args.topology)
explorer.explore(graph, visitor)
Index: cfe/trunk/test/Analysis/exploded-graph-rewriter/topology.dot
===================================================================
--- cfe/trunk/test/Analysis/exploded-graph-rewriter/topology.dot
+++ cfe/trunk/test/Analysis/exploded-graph-rewriter/topology.dot
@@ -0,0 +1,32 @@
+// RUN: %exploded_graph_rewriter %s \
+// RUN: | FileCheck -check-prefixes=NORMAL %s
+// RUN: %exploded_graph_rewriter -t %s \
+// RUN: | FileCheck -check-prefixes=TOPOLOGY %s
+
+// FIXME: Substitution doesn't seem to work on Windows.
+// UNSUPPORTED: system-windows
+
+// NORMAL: Program point
+// TOPOLOGY-NOT: Program point
+// NORMAL: Checker State
+// TOPOLOGY-NOT: Checker State
+Node0x1 [shape=record,label=
+ "{
+ { "node_id": 1,
+ "pointer": "0x1",
+ "has_report": false,
+ "is_sink": false,
+ "state_id": 2,
+ "program_points": [],
+ "program_state": {
+ "environment": null,
+ "constraints": null,
+ "dynamic_types": null,
+ "constructing_objects": null,
+ "checker_messages": [
+ { "checker": "foo", "messages": ["bar"] }
+ ],
+ "store": null
+ }
+ }
+\l}"];
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64264.208542.patch
Type: text/x-patch
Size: 4048 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190708/267d86b1/attachment-0001.bin>
More information about the cfe-commits
mailing list