[Mlir-commits] [mlir] [MLIR][Transform] Allow ApplyRegisteredPassOp to take options as a param (PR #142683)
Adam Siemieniuk
llvmlistbot at llvm.org
Wed Jun 4 03:10:07 PDT 2025
================
@@ -766,17 +773,38 @@ void transform::ApplyLoopInvariantCodeMotionOp::getEffects(
// ApplyRegisteredPassOp
//===----------------------------------------------------------------------===//
-DiagnosedSilenceableFailure transform::ApplyRegisteredPassOp::applyToOne(
- transform::TransformRewriter &rewriter, Operation *target,
- ApplyToEachResultList &results, transform::TransformState &state) {
- // Make sure that this transform is not applied to itself. Modifying the
- // transform IR while it is being interpreted is generally dangerous. Even
- // more so when applying passes because they may perform a wide range of IR
- // modifications.
- DiagnosedSilenceableFailure payloadCheck =
- ensurePayloadIsSeparateFromTransform(*this, target);
- if (!payloadCheck.succeeded())
- return payloadCheck;
+void transform::ApplyRegisteredPassOp::getEffects(
+ SmallVectorImpl<MemoryEffects::EffectInstance> &effects) {
+ consumesHandle(getTargetMutable(), effects);
+ onlyReadsHandle(getDynamicOptionsMutable(), effects);
+ producesHandle(getOperation()->getOpResults(), effects);
+ modifiesPayload(effects);
+}
+
+DiagnosedSilenceableFailure
+transform::ApplyRegisteredPassOp::apply(transform::TransformRewriter &rewriter,
+ transform::TransformResults &results,
+ transform::TransformState &state) {
+ // Check whether pass options are specified, either as a dynamic param or
+ // a static attribute. In either case, options are passed as a single string.
+ StringRef options;
+ if (auto dynamicOptions = getDynamicOptions()) {
+ ArrayRef<Attribute> dynamicOptionsParam = state.getParams(dynamicOptions);
+ if (dynamicOptionsParam.size() != 1) {
+ return emitSilenceableError()
+ << "options passed as a param must be a single value, got "
+ << dynamicOptionsParam.size();
+ }
+ if (auto optionsStrAttr = dyn_cast<StringAttr>(dynamicOptionsParam[0])) {
+ options = optionsStrAttr.getValue();
+ } else {
+ return emitSilenceableError()
+ << "options passed as a param must be a string, got "
+ << dynamicOptionsParam[0];
+ }
+ } else {
+ options = getStaticOptions();
----------------
adam-smnk wrote:
nit: I'd initialize `options` with the static values to eliminate the else
https://github.com/llvm/llvm-project/pull/142683
More information about the Mlir-commits
mailing list