[mlir:PassOption] Rework ListOption parsing and add support for std::vector/SmallVect...
authorRiver Riddle <riddleriver@gmail.com>
Fri, 1 Apr 2022 07:55:35 +0000 (00:55 -0700)
committerRiver Riddle <riddleriver@gmail.com>
Sat, 2 Apr 2022 07:45:11 +0000 (00:45 -0700)
commit6edef1356921d9cad1a8cd6169207450741536a6
tree8e24c4a10aafe1e8e41a57187efd898b807e57ce
parente06ca312398d9d02da10dc55e6779d1d5d0f9963
[mlir:PassOption] Rework ListOption parsing and add support for std::vector/SmallVector options

ListOption currently uses llvm::cl::list under the hood, but the usages
of ListOption are generally a tad different from llvm::cl::list. This
commit codifies this by making ListOption implicitly comma separated,
and removes the explicit flag set for all of the current list options.
The new parsing for comma separation of ListOption also adds in support
for skipping over delimited sub-ranges (i.e. {}, [], (), "", ''). This
more easily supports nested options that use those as part of the
format, and this constraint (balanced delimiters) is already codified
in the syntax of pass pipelines.

See https://discourse.llvm.org/t/list-of-lists-pass-option/5950 for
related discussion

Differential Revision: https://reviews.llvm.org/D122879
22 files changed:
mlir/docs/PassManagement.md
mlir/docs/PatternRewriter.md
mlir/include/mlir/Dialect/Affine/Passes.td
mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td
mlir/include/mlir/Dialect/Linalg/Passes.td
mlir/include/mlir/Dialect/SCF/Passes.td
mlir/include/mlir/Pass/PassOptions.h
mlir/include/mlir/Reducer/Passes.td
mlir/include/mlir/Rewrite/PassUtil.td
mlir/include/mlir/Transforms/Passes.td
mlir/lib/Pass/PassRegistry.cpp
mlir/test/Dialect/Linalg/hoist-padding.mlir
mlir/test/lib/Dialect/Affine/TestLoopPermutation.cpp
mlir/test/lib/Dialect/Linalg/TestLinalgCodegenStrategy.cpp
mlir/test/lib/Dialect/Linalg/TestLinalgFusionTransforms.cpp
mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp
mlir/test/lib/Dialect/SCF/TestLoopParametricTiling.cpp
mlir/test/lib/Dialect/SPIRV/TestEntryPointAbi.cpp
mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp
mlir/test/lib/IR/TestDiagnostics.cpp
mlir/test/lib/Pass/TestDynamicPipeline.cpp
mlir/test/lib/Pass/TestPassManager.cpp