def remove_id_assignment(self, JOIN, cfg_node):
lvars = list()
if isinstance(cfg_node, BBorBInode):
lvars.append(cfg_node.left_hand_side)
else:
try:
for expr in cfg_node.ast_node.targets:
vv = VarsVisitor()
vv.visit(expr)
lvars.extend(vv.result)
except AttributeError: # If it is AugAssign
vv = VarsVisitor()
vv.visit(cfg_node.ast_node.target)
lvars.extend(vv.result)
for var in lvars:
if var in self.lattice.get_elements(JOIN):
# Remove var from JOIN
JOIN = JOIN ^ self.lattice.el2bv[var]
return JOIN
评论列表
文章目录