diff llvm/utils/chunk-print-before-all.py @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children 0572611fdcc8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/llvm/utils/chunk-print-before-all.py	Thu Feb 13 15:10:13 2020 +0900
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# Given a -print-before-all -print-module-scope log from an opt invocation,
+# chunk it into a series of individual IR files, one for each pass invocation.
+# If the log ends with an obvious stack trace, try to split off a separate
+# "crashinfo.txt" file leaving only the valid input IR in the last chunk.
+# Files are written to current working directory.
+
+import sys
+
+basename = "chunk-"
+chunk_id = 0
+
+def print_chunk(lines):
+    global chunk_id
+    global basename
+    fname = basename + str(chunk_id) + ".ll"
+    chunk_id = chunk_id + 1
+    print "writing chunk " + fname + " (" + str(len(lines)) + " lines)"
+    with open(fname, "w") as f:
+        f.writelines(lines)
+
+is_dump = False
+cur = []
+for line in sys.stdin:
+    if line.startswith("*** IR Dump Before ") and len(cur) != 0:
+        print_chunk(cur);
+        cur = []
+        cur.append("; " + line)
+    elif line.startswith("Stack dump:"):
+        print_chunk(cur);
+        cur = []
+        cur.append(line)
+        is_dump = True
+    else:
+        cur.append(line)
+
+if is_dump:
+    print "writing crashinfo.txt (" + str(len(cur)) + " lines)"
+    with open("crashinfo.txt", "w") as f:
+        f.writelines(cur)
+else:
+    print_chunk(cur);