Fix comment for gen-clang-decl-nodes tblgen backend, from Michael Han
[oota-llvm.git] / utils / CompareDebugInfo.py
1 #!/usr/bin/python
2
3 import os
4 import sys
5
6 class BreakPoint:
7     def __init__(self, bp_name):
8         self.name = bp_name
9         self.values = {}
10         self.var_values = {}
11
12     def recordArgument(self, arg_name, value):
13         self.values[arg_name] = value
14         
15     def recordVariable(self, var_name, var_value):
16         self.var_values[var_name] = var_value
17         
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 ''
24
25     def compare_args(self, other):
26         return cmp(self.values, other.values)
27
28     def compare_vars(self, other):
29         return cmp(self.var_values, other.var_values)
30
31     def __cmp__(self, other):
32         return cmp(self.values, other.values) 
33
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])
45
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])
52
53     f.close()
54     return
55
56 f1_breakpoints = {}
57 read_input(sys.argv[1], f1_breakpoints)
58 f1_items = f1_breakpoints.items()
59
60 f2_breakpoints = {}
61 read_input(sys.argv[2], f2_breakpoints)
62 f2_items = f2_breakpoints.items()
63     
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
77
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 "=========="