[Mlir-commits] [mlir] Improve mlir-query by adding matcher combinators (PR #141423)

Jacques Pienaar llvmlistbot at llvm.org
Mon May 26 08:43:35 PDT 2025


================
@@ -27,12 +27,66 @@ class VariantMatcher::SinglePayload : public VariantMatcher::Payload {
   DynMatcher matcher;
 };
 
+class VariantMatcher::VariadicOpPayload : public VariantMatcher::Payload {
+public:
+  VariadicOpPayload(DynMatcher::VariadicOperator varOp,
+                    std::vector<VariantMatcher> args)
+      : varOp(varOp), args(std::move(args)) {}
+
+  std::optional<DynMatcher> getDynMatcher() const override {
+    std::vector<DynMatcher> dynMatchers;
+    for (auto variantMatcher : args) {
+      std::optional<DynMatcher> dynMatcher = variantMatcher.getDynMatcher();
+      if (dynMatcher)
+        dynMatchers.push_back(dynMatcher.value());
+    }
+    auto result = DynMatcher::constructVariadic(varOp, dynMatchers);
+    return *result;
+  }
+
+  std::string getTypeAsString() const override {
+    std::string inner;
+    for (size_t i = 0, e = args.size(); i != e; ++i) {
----------------
jpienaar wrote:

llvm::interleave could help here. Is spaces needed around the & ?

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


More information about the Mlir-commits mailing list