diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-04-14 13:32:59 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-04-20 12:31:33 +0200 |
| commit | 16fc339e53bfc908dbcd73fc912d7d75aed7218c (patch) | |
| tree | f13faa66157ddd4c12dff191d314d81e5f2bf33f /miasm2/analysis | |
| parent | ff981a11ef71960a239ec44295f06bb384124521 (diff) | |
| download | miasm-16fc339e53bfc908dbcd73fc912d7d75aed7218c.tar.gz miasm-16fc339e53bfc908dbcd73fc912d7d75aed7218c.zip | |
Ir: make AssignBlock immutable
Diffstat (limited to 'miasm2/analysis')
| -rw-r--r-- | miasm2/analysis/data_flow.py | 7 | ||||
| -rw-r--r-- | miasm2/analysis/depgraph.py | 6 |
2 files changed, 8 insertions, 5 deletions
diff --git a/miasm2/analysis/data_flow.py b/miasm2/analysis/data_flow.py index b9764daa..3c77fc40 100644 --- a/miasm2/analysis/data_flow.py +++ b/miasm2/analysis/data_flow.py @@ -2,6 +2,7 @@ from collections import namedtuple from miasm2.core.graph import DiGraph +from miasm2.ir.ir import AssignBlock class ReachingDefinitions(dict): """ @@ -247,6 +248,8 @@ def dead_simp(ir_a): useful = set(dead_simp_useful_instrs(defuse, reaching_defs)) for block in ir_a.blocks.itervalues(): for idx, assignblk in enumerate(block.irs): - for lval in assignblk.keys(): + new_assignblk = dict(assignblk) + for lval in assignblk: if InstrNode(block.label, idx, lval) not in useful: - del assignblk[lval] + del new_assignblk[lval] + block.irs[idx] = AssignBlock(new_assignblk) diff --git a/miasm2/analysis/depgraph.py b/miasm2/analysis/depgraph.py index bab4d2bc..d1ac13c8 100644 --- a/miasm2/analysis/depgraph.py +++ b/miasm2/analysis/depgraph.py @@ -263,12 +263,12 @@ class DependencyResult(DependencyState): for line_nb, elements in sorted(line2elements.iteritems()): if max_line is not None and line_nb >= max_line: break - assignblk = AssignBlock() + assignmnts = {} for element in elements: if element in irb.irs[line_nb]: # constants, label, ... are not in destination - assignblk[element] = irb.irs[line_nb][element] - assignblks.append(assignblk) + assignmnts[element] = irb.irs[line_nb][element] + assignblks.append(AssignBlock(assignmnts)) return IRBlock(irb.label, assignblks) |