Adicionando Metadados às Instruções no IR da LLVM

Primeiro, sou novato em passes LLVM.

Eu estou tentando adicionar metadados para instruções no LLVM após uma passagem de transformação (com a API do C ++). Pretendo armazenar essas informações para uso por outra ferramenta em uma cadeia de ferramentas. Eu tenho duas perguntas sobre isso.

Espero que as informações que armazenei como metadados sejam alimentadas em outra ferramenta que funciona no IR da LLVM. Então, os metadados são uma boa ideia? Eu pretendo armazenar seqüências de caracteres como metadados com algumas instruções.

Se os metadados forem o caminho certo, preciso de ajuda para criar um nó de metadados. Eu pretendo usar a função setMedata () para anexá-lo a uma instrução. Qual variante de setMetadata () é a correta para usar. Não tenho certeza de qual MDKind meus dados devem ser. Eu quero criar um MDString, anexá-lo ao meu MDNode e, em seguida, chamar setMetadata () com uma instrução. Qual contexto devo usar no setMedata (), se eu quiser anexar os metadados a uma instrução dentro de uma função. Qual é a relevância do contexto para os metadados?

Eu tentei ler um monte de discussões em fóruns e os docs doxgen llvm, mas eu não consegui uma resposta clara e completa a todas as minhas perguntas. Agradeço sua ajuda ou algum material que possa me ajudar a entender isso.

questionAnswers(1)

yourAnswerToTheQuestion