Don't try to pull vector bitcasts that change the number of elements through
[llvm.git] / utils / CompareDebugInfo.py
blob1d9b8df625b14491c63fc48d32cb27d6669e09d1
1 #!/usr/bin/python
3 import os
4 import sys
6 class BreakPoint:
7 def __init__(self, bp_name):
8 self.name = bp_name
9 self.values = {}
10 self.var_values = {}
12 def recordArgument(self, arg_name, value):
13 self.values[arg_name] = value
15 def recordVariable(self, var_name, var_value):
16 self.var_values[var_name] = var_value
18 def __repr__(self):
19 print self.name
20 items = self.values.items()
21 for i in range(len(items)):
22 print items[i][0]," = ",items[i][1]
23 return ''
25 def compare_args(self, other):
26 return cmp(self.values, other.values)
28 def compare_vars(self, other):
29 return cmp(self.var_values, other.var_values)
31 def __cmp__(self, other):
32 return cmp(self.values, other.values)
34 def read_input(filename, dict):
35 f = open(filename, "r")
36 lines = f.readlines()
37 for l in range(len(lines)):
38 c = lines[l].split()
39 if c[0] == "#Argument":
40 bp = dict.get(c[2])
41 if bp is None:
42 bp = BreakPoint(c[1])
43 dict[c[2]] = bp
44 bp.recordArgument(c[3], c[4])
46 if c[0] == "#Variables":
47 bp = dict.get(c[2])
48 if bp is None:
49 bp = BreakPoint(c[1])
50 dict[c[2]] = bp
51 bp.recordVariable(c[3], c[4])
53 f.close()
54 return
56 f1_breakpoints = {}
57 read_input(sys.argv[1], f1_breakpoints)
58 f1_items = f1_breakpoints.items()
60 f2_breakpoints = {}
61 read_input(sys.argv[2], f2_breakpoints)
62 f2_items = f2_breakpoints.items()
64 arg_mismatch = 0
65 var_mismatch = 0
66 for f2bp in range(len(f2_items)):
67 id = f2_items[f2bp][0]
68 bp = f2_items[f2bp][1]
69 bp1 = f1_breakpoints.get(id)
70 if bp1 is None:
71 print "bp is missing"
72 else:
73 if bp1.compare_args(bp):
74 arg_mismatch = arg_mismatch + 1
75 if bp1.compare_vars(bp):
76 var_mismatch = var_mismatch + 1
78 l2 = len(f2_items)
79 print "=========="
80 if l2 != 0:
81 print sys.argv[3]," Argument success rate is", (l2-arg_mismatch)*100/l2,"%"
82 print sys.argv[3]," Variable success rate is", (l2-var_mismatch)*100/l2,"%"
83 else:
84 print sys.argv[3]," success rate is 100%"
85 print "=========="