comparison python/ir/builder.py @ 249:e41e4109addd

Added current position arrow
author Windel Bouwman
date Fri, 26 Jul 2013 20:26:05 +0200
parents ef683881c64e
children 5ec7580976d9
comparison
equal deleted inserted replaced
248:b10d46e5c8dd 249:e41e4109addd
27 def gen(self): 27 def gen(self):
28 v = BasicBlock(super().gen()) 28 v = BasicBlock(super().gen())
29 return v 29 return v
30 30
31 class Builder: 31 class Builder:
32 def __init__(self): 32 def __init__(self):
33 self.newTmp = ValueGenerator().gen 33 self.newTmp = ValueGenerator().gen
34 self.newBBint = BBGenerator().gen 34 self.newBBint = BBGenerator().gen
35 self.bb = None 35 self.bb = None
36 self.m = None 36 self.m = None
37 self.fn = None 37 self.fn = None
38 self.loc = None
38 39
39 # Helpers: 40 # Helpers:
40 def newBB(self): 41 def newBB(self):
41 bb = self.newBBint() 42 bb = self.newBBint()
42 self.fn.addBB(bb) 43 self.fn.addBB(bb)
43 return bb 44 return bb
44 45
45 def setModule(self, m): 46 def setModule(self, m):
46 self.m = m 47 self.m = m
47 48
48 def newFunction(self, name): 49 def newFunction(self, name):
49 f = Function(name) 50 f = Function(name)
50 self.m.addFunc(f) 51 self.m.addFunc(f)
51 return f 52 return f
52 53
53 def newVariable(self, name): 54 def newVariable(self, name):
54 v = Variable(name) 55 v = Variable(name)
55 self.m.addVariable(v) 56 self.m.addVariable(v)
56 return v 57 return v
57 58
58 def setFunction(self, f): 59 def setFunction(self, f):
59 self.fn = f 60 self.fn = f
60 61
61 def setBB(self, bb): 62 def setBB(self, bb):
62 self.bb = bb 63 self.bb = bb
63 64
64 def addIns(self, i): 65 def setLoc(self, l):
65 if not self.bb: 66 self.loc = l
67
68 def addIns(self, i):
69 i.debugLoc = self.loc
70 if not self.bb:
66 raise Exception('No basic block') 71 raise Exception('No basic block')
67 self.bb.addInstruction(i) 72 self.bb.addInstruction(i)
68 73