about summary refs log tree commit diff stats
path: root/miasm2/core/graph.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/core/graph.py')
-rw-r--r--miasm2/core/graph.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/miasm2/core/graph.py b/miasm2/core/graph.py
index 47be1864..c647ede8 100644
--- a/miasm2/core/graph.py
+++ b/miasm2/core/graph.py
@@ -300,3 +300,15 @@ shape = "box"
         return self._walk_generic_dominator(node,
                                             postdominators,
                                             self.successors_iter)
+
+    def compute_immediate_dominators(self, head):
+        """Compute the immediate dominators of the graph"""
+        dominators = self.compute_dominators(head)
+        idoms = {}
+
+        for n in dominators.keys():
+            for p in self.reachable_parents(n):
+                if p in dominators[n] and n != p:
+                    idoms[n] = p
+                    break
+        return idoms