diff options
| author | Camille Mougey <camille.mougey@cea.fr> | 2016-02-26 14:11:14 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2016-02-26 15:53:53 +0100 |
| commit | f0ed13ea3d1a7bc0255c366ca31d38591c5a1aad (patch) | |
| tree | 2258ac5df571524b40fae4e86cc1a91e511d90cc /miasm2/ir/ir.py | |
| parent | 75271c4e1f1917eee58ce71aeaf4bd6acb228ebf (diff) | |
| download | miasm-f0ed13ea3d1a7bc0255c366ca31d38591c5a1aad.tar.gz miasm-f0ed13ea3d1a7bc0255c366ca31d38591c5a1aad.zip | |
Move dead_simp structures into AssignBlock
Diffstat (limited to 'miasm2/ir/ir.py')
| -rw-r--r-- | miasm2/ir/ir.py | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/miasm2/ir/ir.py b/miasm2/ir/ir.py index ffcf5480..6265faeb 100644 --- a/miasm2/ir/ir.py +++ b/miasm2/ir/ir.py @@ -212,33 +212,20 @@ class irbloc(object): Initialize attributes needed for in/out and reach computation. @regs_ids : ids of registers used in IR """ - self.r = [] - self.w = [] - self.cur_reach = [{reg: set() for reg in regs_ids} - for _ in xrange(len(self.irs))] - self.prev_reach = [{reg: set() for reg in regs_ids} - for _ in xrange(len(self.irs))] - self.cur_kill = [{reg: set() for reg in regs_ids} - for _ in xrange(len(self.irs))] - self.prev_kill = [{reg: set() for reg in regs_ids} - for _ in xrange(len(self.irs))] - # LineNumber -> dict: - # Register: set(definition(irb label, index)) - self.defout = [{reg: set() for reg in regs_ids} - for _ in xrange(len(self.irs))] keep_exprid = lambda elts: filter(lambda expr: isinstance(expr, m2_expr.ExprId), elts) for idx, assignblk in enumerate(self.irs): - read, write = map(keep_exprid, - (assignblk.get_r(mem_read=True), - assignblk.get_w())) - - self.defout[idx].update({dst: set([(self.label, idx, dst)]) + assignblk.cur_reach = {reg: set() for reg in regs_ids} + assignblk.prev_reach = {reg: set() for reg in regs_ids} + assignblk.cur_kill = {reg: set() for reg in regs_ids} + assignblk.prev_kill = {reg: set() for reg in regs_ids} + # LineNumber -> dict: + # Register: set(definition(irb label, index)) + assignblk.defout = {reg: set() for reg in regs_ids} + assignblk.defout.update({dst: set([(self.label, idx, dst)]) for dst in assignblk if isinstance(dst, m2_expr.ExprId)}) - self.r.append(read) - self.w.append(write) def __str__(self): out = [] |