Hinzufügen von Metadaten zu Anweisungen in LLVM IR

Zunächst einmal bin ich ein Neuling bei LLVM-Pässen.

Ich versuche, den Anweisungen in LLVM nach einem Transformationsdurchlauf Metadaten hinzuzufügen (mit der C ++ - API). Ich beabsichtige, diese Informationen zur Verwendung durch ein anderes Werkzeug in einer Werkzeugkette zu speichern. Ich habe dazu zwei Fragen.

Ich erwarte, dass die Informationen, die ich als Metadaten speichere, in ein anderes Tool eingehen, das mit LLVM IR funktioniert. Sind Metadaten also eine gute Idee? Ich beabsichtige, Zeichenfolgen mit einigen Anweisungen als Metadaten zu speichern.

Wenn Metadaten der richtige Weg sind, brauche ich Hilfe beim Erstellen eines Metadatenknotens. Ich plane, die Funktion setMedata () zu verwenden, um sie an eine Anweisung anzuhängen. Welche Variante von setMetadata () ist die richtige? Ich bin mir nicht sicher, von welcher MDKind meine Daten stammen sollen. Ich möchte einen MDString erstellen, ihn an meinen MDNode anhängen und dann setMetadata () mit einer Anweisung aufrufen. Welchen Kontext soll ich in setMedata () verwenden, wenn ich die Metadaten an eine Anweisung innerhalb einer Funktion anhängen möchte? Welche Relevanz hat der Kontext für Metadaten?

Ich habe versucht, viele Diskussionen in Foren und in den llvm doxygen docs nachzulesen, aber ich habe keine klare und vollständige Antwort auf alle meine Fragen erhalten. Ich schätze Ihre Hilfe oder irgendein Material, das mir dabei helfen könnte, dies zu verstehen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage