40 lines
1 KiB
Python
40 lines
1 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
desc = """
|
||
|
A script to extract ConstraintElimination's reproducer remarks. The extracted
|
||
|
modules are written as textual LLVM IR to files named reproducerXXXX.ll in the
|
||
|
current directory.
|
||
|
"""
|
||
|
|
||
|
import optrecord
|
||
|
import argparse
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
parser = argparse.ArgumentParser(description=desc)
|
||
|
parser.add_argument(
|
||
|
"yaml_dirs_or_files",
|
||
|
nargs="+",
|
||
|
help="List of optimization record files or directories searched "
|
||
|
"for optimization record files.",
|
||
|
)
|
||
|
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
print_progress = False
|
||
|
jobs = 1
|
||
|
|
||
|
files = optrecord.find_opt_files(*args.yaml_dirs_or_files)
|
||
|
if not files:
|
||
|
parser.error("No *.opt.yaml files found")
|
||
|
sys.exit(1)
|
||
|
|
||
|
all_remarks, file_remarks, _ = optrecord.gather_results(files, jobs, True)
|
||
|
|
||
|
i = 0
|
||
|
for r in all_remarks:
|
||
|
if r[1] != "constraint-elimination" or r[2] != "Reproducer":
|
||
|
continue
|
||
|
with open("reproducer{}.ll".format(i), "wt") as f:
|
||
|
f.write(r[7][1][0][1])
|
||
|
i += 1
|