[all-commits] [llvm/llvm-project] c2fb9c: [mlir:Pass] Add support for op-agnostic pass managers

River Riddle via All-commits all-commits at lists.llvm.org
Thu May 12 13:13:23 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c2fb9c29b4076da8f68a27df2bee4a2f3c81c830
      https://github.com/llvm/llvm-project/commit/c2fb9c29b4076da8f68a27df2bee4a2f3c81c830
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-05-12 (Thu, 12 May 2022)

  Changed paths:
    M mlir/docs/PassManagement.md
    M mlir/include/mlir/Pass/PassInstrumentation.h
    M mlir/include/mlir/Pass/PassManager.h
    M mlir/lib/Pass/Pass.cpp
    M mlir/lib/Pass/PassDetail.h
    M mlir/lib/Pass/PassRegistry.cpp
    M mlir/lib/Pass/PassStatistics.cpp
    M mlir/lib/Pass/PassTiming.cpp
    M mlir/lib/Transforms/Inliner.cpp
    A mlir/test/Pass/generic-pipeline.mlir
    M mlir/test/Pass/pipeline-parsing.mlir

  Log Message:
  -----------
  [mlir:Pass] Add support for op-agnostic pass managers

This commit refactors the current pass manager support to allow for
operation agnostic pass managers. This allows for a series of passes
to be executed on any viable pass manager root operation, instead
of one specific operation type. Op-agnostic/generic pass managers
only allow for adding op-agnostic passes.

These types of pass managers are extremely useful when constructing
pass pipelines that can apply to many different types of operations,
e.g., the default inliner simplification pipeline. With the advent of
interface/trait passes, this support can be used to define FunctionOpInterface
pass managers, or other pass managers that effectively operate on
specific interfaces/traits/etc (see #52916 for an example).

Differential Revision: https://reviews.llvm.org/D123536




More information about the All-commits mailing list