[PATCH] D53142: [VPlan] Script to extract VPlan digraphs from log
Renato Golin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 16 02:40:34 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL344599: [VPlan] Script to extract VPlan digraphs from log (authored by rengolin, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D53142?vs=169364&id=169800#toc
Repository:
rL LLVM
https://reviews.llvm.org/D53142
Files:
llvm/trunk/utils/extract_vplan.py
Index: llvm/trunk/utils/extract_vplan.py
===================================================================
--- llvm/trunk/utils/extract_vplan.py
+++ llvm/trunk/utils/extract_vplan.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+
+# This script extracts the VPlan digraphs from the vectoriser debug messages
+# and saves them in individual dot files (one for each plan). Optionally, and
+# providing 'dot' is installed, it can also render the dot into a PNG file.
+
+import sys
+import re
+import argparse
+import shutil
+import subprocess
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--png', action='store_true')
+args = parser.parse_args()
+
+dot = shutil.which('dot')
+if args.png and not dot:
+ raise RuntimeError("Can't export to PNG without 'dot' in the system")
+
+pattern = re.compile(r"(digraph VPlan {.*?\n})",re.DOTALL)
+matches = re.findall(pattern, sys.stdin.read())
+
+for vplan in matches:
+ m = re.search("graph \[.+(VF=.+,UF.+), ", vplan)
+ if not m:
+ raise ValueError("Can't get the right VPlan name")
+ name = re.sub('[^a-zA-Z0-9]', '', m.group(1))
+
+ if args.png:
+ filename = 'VPlan' + name + '.png'
+ print("Exporting " + name + " to PNG via dot: " + filename)
+ p = subprocess.Popen([dot, '-Tpng', '-o', filename],
+ encoding='utf-8',
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ out, err = p.communicate(input=vplan)
+ if err:
+ raise RuntimeError("Error running dot: " + err)
+
+ else:
+ filename = 'VPlan' + name + '.dot'
+ print("Exporting " + name + " to DOT: " + filename)
+ with open(filename, 'w') as out:
+ out.write(vplan)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53142.169800.patch
Type: text/x-patch
Size: 1823 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181016/0e19dd0b/attachment.bin>
More information about the llvm-commits
mailing list