[llvm] [VPlan] Manage instruction medata in VPlan. (PR #135272)

via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 18 03:11:09 PDT 2025


================
@@ -1190,28 +1190,55 @@ struct VPIRPhi : public VPIRInstruction {
 #endif
 };
 
+using MDArrayRef = ArrayRef<std::pair<unsigned, MDNode *>>;
+
+/// Helper to manage IR metadata for recipes. It filters out metadata that
+/// cannot be proagated.
+class VPWithIRMetadata {
+  SmallVector<std::pair<unsigned, MDNode *>> Metadata;
+
+protected:
+  VPWithIRMetadata() {}
+  VPWithIRMetadata(MDArrayRef Metadata) : Metadata(Metadata) {}
+
+  void addMetadata(MDArrayRef Metadata) {
+    append_range(this->Metadata, Metadata);
+  }
+
+public:
+  /// Add all metadata to \p V if it is an instruction.
+  void setMetadata(Value *V) const;
----------------
ayalz wrote:

Perhaps better rename, to applyMetadata()? Typically setMetadata() would be related to getMetadata(). Here addMetadata() rather than setMetadata() is related to getMetadata(), except the former augments rather than sets. Would be good to keep consistent with IRFlags, so better update its setFlags() to applyFlags()? (VPRecipeWithIRFlags has specific get*Flags() compared to one getMetadata()).

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


More information about the llvm-commits mailing list