[llvm] [mlir][Transform] Create a transform interpreter and a preloader pass (PR #68661)

Oleksandr Alex Zinenko via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 11 09:28:28 PDT 2023


================
@@ -1761,8 +1761,20 @@ DiagnosedSilenceableFailure
 transform::NamedSequenceOp::apply(transform::TransformRewriter &rewriter,
                                   transform::TransformResults &results,
                                   transform::TransformState &state) {
-  // Nothing to do here.
-  return DiagnosedSilenceableFailure::success();
+  if (isExternal())
+    return emitDefiniteFailure() << "unresolved external named sequence";
+
+  // Map the entry block argument to the list of operations.
+  // Note: this is the same implementation as PossibleTopLevelTransformOp but
+  // without attaching the interface / trait since that is tailored to a
+  // dangling top-level op that does not get "called".
+  auto scope = state.make_region_scope(getBody());
+  if (failed(detail::mapPossibleTopLevelTransformOpBlockArguments(
+          state, this->getOperation(), getBody())))
+    return DiagnosedSilenceableFailure::definiteFailure();
+
+  return applySequenceBlock(getBody().front(),
+                            FailurePropagationMode::Propagate, state, results);
----------------
ftynse wrote:

I don't remember if there is a failure propagation mode on the named sequence (there is one on the include). If there is, let's use it instead of hardcoding here.

https://github.com/llvm/llvm-project/pull/68661


More information about the llvm-commits mailing list