def _compute_live_map(self, var_use_map, var_def_map):
        """
        Find variables that must be alive at the ENTRY of each block.
        We use a simple fix-point algorithm that iterates until the set of
        live variables is unchanged for each block.
        """
        live_map = {}
        for offset in self.blocks.keys():
            live_map[offset] = var_use_map[offset]

        def fix_point_progress():
            return tuple(len(v) for v in live_map.values())

        old_point = None
        new_point = fix_point_progress()
        while old_point != new_point:
            for offset in live_map.keys():
                for inc_blk, _data in self.cfa.graph.predecessors(offset):
                    # substract all variables that are defined in
                    # the incoming block
                    live_map[inc_blk] |= live_map[offset] - var_def_map[inc_blk]
            old_point = new_point
            new_point = fix_point_progress()

        return live_map
dataset/ETHPy150Open numba/numba/numba/interpreter.py/Interpreter._compute_live_map/original