如何使用 C++ 将元数据字符串添加到 LLVM 模块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'
但正如人们所看到的,元数据没有显示。
我可以以某种方式将字符串添加到模块中吗? 模块本身似乎只提供对命名元数据的访问。现在我不知道还能去哪里寻找。有什么建议吗?
补充:我感觉你不能只在模块中“浮动”一个元数据字符串,似乎你必须将它添加到一个命名的元数据节点中。是这样吗?
I'm trying to add a metadata string to my LLVM module. The stripped down version of what I'm trying is
#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();
}
I can compile and run it:
Desktop% g++ llvm.cc -o llvm `llvm-config --cppflags --ldflags --libs all`
Desktop% ./llvm
; ModuleID = 'test'
But as one can see, the metadata does not show up.
Can I somehow add the string to the module? The module itself only seems to offer access to named metadata. Now I don't know where else I could look. Any suggestions?
Supplement: I got the feeling that you can't just have a metadata string "floating around" in your module, it seems like you have to add it to a named metadata node. Is that right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这个:
我不确定您是否能够像您所说的那样让元数据“漂浮”。如果它没有附加到程序的任何部分,那么它有什么用呢?我最近一直在研究 MD ......我在 lib/Analysis/DIBuilder.cpp 中找到了类似的代码。祝你好运。
Try this:
I am not sure if you are able to have metadata "floating around" as you say. If it's not attached to any part of your program then what good is it doing? I've been looking into MD a bit lately... I found similar code in lib/Analysis/DIBuilder.cpp. Good luck.