116 lbl, current_nodes, exec_nodes = todo
120 current_nodes = dict(current_nodes)
123 if not lbl
in ir_arch.blocs:
124 print "cannot find bloc!!", lbl
126 irb = ir_arch.blocs[lbl]
129 for n_r, node_n_r
in irb.in_nodes.items():
130 if not n_r
in current_nodes:
133 flow_graph.add_uniq_edge(current_nodes[n_r], node_n_r)
137 if link_exec_to_data:
138 for n_x_r
in exec_nodes:
139 for n_r, node_n_r
in irb.in_nodes.items():
140 if not n_x_r
in current_nodes:
142 if isinstance(n_r, ExprInt):
144 flow_graph.add_uniq_edge(current_nodes[n_x_r], node_n_r)
147 for n_w, node_n_w
in irb.out_nodes.items():
148 current_nodes[n_w] = node_n_w
151 x_nodes = tuple(sorted(list(irb.dst.get_r())))
154 for lbl_dst
in ir_arch.g.successors(irb.label):
155 todo.add((lbl_dst, tuple(current_nodes.items()), x_nodes))