LLVMモジュールにmetadata stringを追加しようとしています。私がしようとしているもののストリップダウンバージョン私はそれをコンパイルして実行することができますC++ APIを使用してLLVMモジュールにメタデータ文字列を追加する方法は?
#include <llvm/LLVMContext.h>
#include <llvm/Module.h>
#include <llvm/Metadata.h>
using namespace llvm;
int main() {
Module* module = new Module("test", getGlobalContext());
MDString::get(module->getContext(), "test");
module->dump();
}
です:
Desktop% g++ llvm.cc -o llvm `llvm-config --cppflags --ldflags --libs all`
Desktop% ./llvm
; ModuleID = 'test'
しかし、1が見ることができるように、メタデータは表示されません。
何とか文字列をモジュールに追加できますか? module自体は、指定されたメタデータへのアクセスしか提供していないようです。今どこから見えるかは分かりません。助言がありますか?
補足:あなたのモジュールにメタデータ文字列を浮かべることができないという気持ちがありました。名前付きメタデータノードに追加する必要があるようです。そうですか?私はあなたが言うように「漂って」のメタデータを持つことができるかどうかわからない
#include <llvm/LLVMContext.h>
#include <llvm/Module.h>
#include <llvm/Metadata.h>
using namespace llvm;
int main() {
Module* module = new Module("test", getGlobalContext());
Value *Elts[] = {
MDString::get(module->getContext(), "test1")
};
MDNode *Node = MDNode::get(getGlobalContext(), Elts);
NamedMDNode *NMD = module->getOrInsertNamedMetadata("test2");
NMD->addOperand(Node);
module->dump();
}
:
ありがとう、これはよさそうです。私はそれをモジュールに付け加えることができたと思ったが、もしそれが明確であると思うなら、それが名前を持たないなら、どうすれば後の段階で見つけることができるだろうか? –