code: def add_pass(self, name, opt_pass, before=None, after=None):
          
  
          if before is None:
              before = []
          if after is None:
              after = []
  
          self._known_passes[name] = (opt_pass, before, after)
docs: Add an optimization pass to the optimizer.
  
          Optimization passes have a name that allows them
          to be enabled or disabled by name.  By default all
          optimization passed are enabled and unordered.  You can
          explicitly specify passes by name that this pass must run
          before or after this passs so that they can be properly
          ordered.
  
          Args:
              name (str): The name of the optimization pass to allow for
                  enabling/disabling it by name
              opt_pass (OptimizationPass): The optimization pass class itself
              before (list(str)): A list of the passes that this pass should
                  run before.
              after (list(str)): A list of the passes that this pass should
                  run after.