'Using typing and a basic block, search the basic block for array
expressions.
Return True when one or more matches were found, False otherwise.'

def match(self, func_ir, block, typemap, calltypes):

    if (len(calltypes) == 0):
        return False
    self.crnt_block = block
    self.typemap = typemap
    self.array_assigns = OrderedDict()
    self.const_assigns = {}
    assignments = block.find_insts(ir.Assign)
    for instr in assignments:
        target_name = instr.target.name
        expr = instr.value
        if (isinstance(expr, ir.Expr) and isinstance(typemap.get(target_name, None), types.Array)):
            self._match_array_expr(instr, expr, target_name)
        elif isinstance(expr, ir.Const):
            self.const_assigns[target_name] = expr
    return (len(self.array_assigns) > 0)
