def visit_merge(self, merge):
    for (new_name, (left, right)) in merge.iteritems():
      if left.__class__ is Var and right.__class__ is Var:
        left_name = left.name 
        right_name = right.name 
        if left.type.__class__ is ArrayT and \
           left_name in self.local_arrays and \
           right_name in self.local_arrays:
          left_stmt = self.local_arrays[left_name]
          right_stmt = self.local_arrays[right_name]
          if left_stmt == right_stmt:
            self.local_arrays[new_name] = left_stmt 
            if left.name in self.array_to_alloc_name:
              self.array_to_alloc[new_name] = \
                  self.array_to_alloc[left.name]
        elif left.type.__class__ is PtrT and \
             left_name in self.local_allocs and \
             right_name in self.local_allocs:
          left_stmt = self.local_allocs[left_name]
          right_stmt = self.local_allocs[right_name]
          if left_stmt == right_stmt:
            self.local_allocs[new_name] = left_stmt
If both sides of a flow merge are a locally created 
dataset/ETHPy150Open iskandr/parakeet/parakeet/analysis/find_local_arrays.py/FindLocalArrays.visit_merge