summaryrefslogtreecommitdiffstats
path: root/llvm/utils/chunk-print-before-all.py
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils/chunk-print-before-all.py')
-rw-r--r--llvm/utils/chunk-print-before-all.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/llvm/utils/chunk-print-before-all.py b/llvm/utils/chunk-print-before-all.py
new file mode 100644
index 00000000000..ce17c68c742
--- /dev/null
+++ b/llvm/utils/chunk-print-before-all.py
@@ -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);
OpenPOWER on IntegriCloud