| #!/usr/bin/python |
| |
| import os |
| import sys |
| |
| DBG_OUTPUT_FILE = "Output/" + sys.argv[1] + ".dbg.ml" |
| OPT_DBG_OUTPUT_FILE = "Output/" + sys.argv[1] + ".dbg.opt.ml" |
| NATIVE_DBG_OUTPUT_FILE = "Output/" + sys.argv[1] + ".native.dbg.ml" |
| NATIVE_OPT_DBG_OUTPUT_FILE = "Output/" + sys.argv[1] + ".native.dbg.opt.ml" |
| XFAIL_FILE = sys.argv[2] + "/lineinfo.xfail" |
| |
| REPORT_FILE = "Output/" + sys.argv[1] + ".dbg.missing_lines.report.txt" |
| |
| |
| def read_inputfile(filename, dict): |
| f = open(filename, "r") |
| lines = f.readlines() |
| for l in range(len(lines)): |
| columns = lines[l].split() |
| s = dict.get(columns[0]) |
| if s is None: |
| s = set() |
| s.add(columns[1]) |
| dict[columns[0]] = s |
| f.close() |
| return |
| |
| |
| dbg_lines = {} |
| read_inputfile(DBG_OUTPUT_FILE, dbg_lines) |
| |
| dbg_opt_lines = {} |
| read_inputfile(OPT_DBG_OUTPUT_FILE, dbg_opt_lines) |
| |
| native_dbg_lines = {} |
| read_inputfile(NATIVE_DBG_OUTPUT_FILE, native_dbg_lines) |
| |
| native_dbg_opt_lines = {} |
| read_inputfile(NATIVE_OPT_DBG_OUTPUT_FILE, native_dbg_opt_lines) |
| |
| xfailed_lines = {} |
| read_inputfile(XFAIL_FILE, xfailed_lines) |
| |
| dbg_line_items = dbg_lines.items() |
| for fname, fset in dbg_line_items: |
| optset = dbg_opt_lines.get(fname) |
| nativeoptset = native_dbg_opt_lines.get(fname) |
| xfailedset = xfailed_lines.get(os.path.basename(fname)) |
| if optset is not None: |
| src = open(fname, "r") |
| srclines = src.readlines() |
| src_output = open("Output/" + sys.argv[1] + ".lineinfo", "w") |
| for l in range(len(srclines)): |
| l1 = l + 1 |
| l1s = str(l1) |
| if l1s in fset: |
| if l1s in optset: |
| if nativeoptset is not None and l1s in nativeoptset: |
| src_output.write(".|") |
| else: |
| src_output.write("+|") |
| else: |
| if nativeoptset is not None and l1s in nativeoptset: |
| if xfailedset is not None and l1s in xfailedset: |
| src_output.write(" |") |
| else: |
| src_output.write("x|") |
| else: |
| src_output.write("-|") |
| else: |
| src_output.write(" |") |
| src_output.write(srclines[l]) |
| src.close() |
| src_output.close() |