code: def _order_pases(self, passes):
          
  
          passes = set(passes)
  
          pass_deps = {}
  
          for opt in passes:
              _, before, after = self._known_passes[opt]
  
              if opt not in pass_deps:
                  pass_deps[opt] = set()
  
              for after_pass in after:
                  pass_deps[opt].add(after_pass)
  
              # For passes that we are before, we may need to
              # preemptively add them to the list early
              for other in before:
                  if other not in passes:
                      continue
  
                  if other not in pass_deps:
                      pass_deps[other] = set()
  
                  pass_deps[other].add(opt)
  
          return toposort_flatten(pass_deps)
docs: Topologically sort optimization passes.
  
          This ensures that the resulting passes are run in order
          respecting before/after constraints.
  
          Args:
              passes (iterable): An iterable of pass names that should
                  be included in the optimization passes run.