[Mlir-commits] [mlir] [mlir][dataflow] Update dataflow tutorial doc and add dataflow example code (PR #149296)
Mehdi Amini
llvmlistbot at llvm.org
Sat Aug 9 11:45:23 PDT 2025
================
@@ -0,0 +1,65 @@
+//===-- MetadataAnalysis.h - dataflow tutorial ------------------*- c++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is contains the dataflow tutorial's classes related to metadata.
+//
+//===----------------------------------------------------------------------===//
+
+#include "mlir/Analysis/DataFlow/SparseAnalysis.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace mlir;
+using namespace llvm;
+
+namespace mlir {
+/// The value of our lattice represents the inner structure of a DictionaryAttr,
+/// for the `metadata`.
+struct MetadataLatticeValue {
+ MetadataLatticeValue() = default;
+ /// Compute a lattice value from the provided dictionary.
+ MetadataLatticeValue(DictionaryAttr attr) {
+ for (NamedAttribute pair : attr) {
+ metadata.insert(
+ std::pair<StringAttr, Attribute>(pair.getName(), pair.getValue()));
+ }
+ }
+
+ static MetadataLatticeValue join(const MetadataLatticeValue &lhs,
+ const MetadataLatticeValue &rhs);
+
+ /// A simple comparator that checks to see if this value is equal to the one
+ /// provided.
+ bool operator==(const MetadataLatticeValue &rhs) const;
+
+ /// Print data in metadata.
+ void print(llvm::raw_ostream &os) const;
+
+ /// Our value represents the combined metadata, which is originally a
+ /// DictionaryAttr, so we use a map.
+ llvm::StringMap<Attribute> metadata;
----------------
joker-eph wrote:
StringMap is a hash table, which isn't ordered. Even though it is deterministic somehow based on the hash value.
I would rather copy&sort on the fly inside the print method.
https://github.com/llvm/llvm-project/pull/149296
More information about the Mlir-commits
mailing list