Using a custom LLVM IR metadata for prototyping purpose. Any caveats I should keep in mind?

The use case is described as follows

  1. In a LLVM middle-end pass ‘foo’, some analysis is added to generate a new form of LLVM IR metadata (not an existing form in LLVM Language Reference Manual — LLVM 17.0.0git documentation)
    • There might be an offline tool that aggregates per-module data and generate summaries by reading this new form of metadata. Ultimately summaries are going to be read by compiler and used to annotated LLVM IR again.
  2. A later middle-end pass ‘bar’ is modified to consume this new custom metadata if it exists for an IR instruction.

This is for prototyping and validation of ideas. Any caveats of adding a new form of custom LLVM IR metadata (e.g., compile errors) in this way? I haven’t done this previously so any experiences (or pointers to existing discussions) from a similar developer flow would be helpful. Thanks!