def _compute_use_defs(self):
        """
        Find variable use/def per block.
        """
        var_use_map = {}   # { block offset -> set of vars }
        var_def_map = {}   # { block offset -> set of vars }
        for offset, ir_block in self.blocks.items():
            var_use_map[offset] = use_set = set()
            var_def_map[offset] = def_set = set()
            for stmt in ir_block.body:
                if isinstance(stmt, ir.Assign):
                    if isinstance(stmt.value, ir.Inst):
                        rhs_set = set(var.name
                                      for var in stmt.value.list_vars())
                    elif isinstance(stmt.value, ir.Var):
                        rhs_set = set([stmt.value.name])
                    elif isinstance(stmt.value, (ir.Arg, ir.Const, ir.Global,
                                                 ir.FreeVar)):
                        rhs_set = ()
                    else:
                        raise AssertionError('unreachable', type(stmt.value))
                    # If lhs not in rhs of the assignment
                    if stmt.target.name not in rhs_set:
                        def_set.add(stmt.target.name)

                for var in stmt.list_vars():
                    # do not include locally defined vars to use-map
                    if def_set not in var.name:
                        use_set.add(var.name)

        return var_use_map, var_def_map
dataset/ETHPy150Open numba/numba/numba/interpreter.py/Interpreter._compute_use_defs/swapped operands of `not in`