(self, function, data_graph)
Remove assignments to registers that has no consumers, but immediately killed.

        BROKEN - DO NOT USE IT

        :param angr.knowledge.Function function:
        :param networkx.MultiDiGraph data_graph:
        :return: None
Remove assignments to registers that has no consumers, but immediately killed.
Remove assignments to registers that has no consumers but immediately killed .
def _dead_assignment_elimination(self, function, data_graph):  #pylint:disable=unused-argument
        """
        Remove assignments to registers that has no consumers, but immediately killed.

        BROKEN - DO NOT USE IT

        :param angr.knowledge.Function function:
        :param networkx.MultiDiGraph data_graph:
        :return: None
        """

        register_pvs = set()
        for node in data_graph.nodes():
            if isinstance(node.variable, SimRegisterVariable) and \
                    node.variable.reg is not None and \
                    node.variable.reg < 40:
                register_pvs.add(node)

        for reg in register_pvs:
            # does it have a consumer?
            out_edges = data_graph.out_edges(reg, data=True)
            consumers = [ ]
            killers = [ ]
            for _, _, data in out_edges:
                if 'type' in data and data['type'] == 'kill':
                    killers.append(data)
                else:
                    consumers.append(data)

            if not consumers and killers:
                # we can remove the assignment!
                da = DeadAssignment(reg)
                self.dead_assignments.append(da)
def _dead_assignment_elimination ( self , function , data_graph ) : #pylint:disable=unused-argument register_pvs = set ( ) for node in data_graph . nodes ( ) : if isinstance ( node . variable , SimRegisterVariable ) and node . variable . reg is not None and node . variable . reg < 40 : register_pvs . add ( node ) for reg in register_pvs : # does it have a consumer? out_edges = data_graph . out_edges ( reg , data = True ) consumers = [ ] killers = [ ] for _ , _ , data in out_edges : if 'type' in data and data [ 'type' ] == 'kill' : killers . append ( data ) else : consumers . append ( data ) if not consumers and killers : # we can remove the assignment! da = DeadAssignment ( reg ) self . dead_assignments . append ( da )