39 lines
1 KiB
Python
39 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
|