Adición de metadatos a las instrucciones en LLVM IR

En primer lugar, soy un novato en los pases de LLVM.

Estoy tratando de agregar metadatos a las instrucciones en LLVM después de un paso de transformación (con la API de C ++). Tengo la intención de almacenar esta información para que la use otra herramienta en una cadena de herramientas. Tengo dos preguntas con respecto a esto.

Espero que la información que almaceno como metadatos se incorpore a otra herramienta que funciona en LLVM IR. Entonces, ¿los metadatos son una buena idea? Tengo la intención de almacenar cadenas como metadatos con algunas instrucciones.

Si los metadatos son la forma correcta de ir aquí, necesito ayuda para crear un nodo de metadatos. Planeo usar la función setMedata () para adjuntarla a una instrucción. La variante de setMetadata () es la correcta para usar. No estoy seguro de qué MDKind deberían tener mis datos. Quiero crear una MDString, adjuntarla a mi MDNode y luego llamar a setMetadata () con una instrucción. ¿Qué contexto debo usar en setMedata () si quiero adjuntar los metadatos a una instrucción dentro de una función? ¿Cuál es la relevancia del contexto para los metadatos?

Intenté leer muchas discusiones en los foros y los documentos llvm doxygen pero no obtuve una respuesta clara y completa a todas mis preguntas. Aprecio su ayuda o algún material que pueda ayudarme a entender esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta