我想在c上创建函数,在使用clang转换为llvm代码后具有特定的名称。一个问题 - 目标函数名称必须包含点('。')。是否有可能添加“MyName”。更名为mangling,除了“查找和替换”?
答案 0 :(得分:0)
名称修改主要由使用dllimport导入该函数/变量的其他二进制文件使用。
如果您没有使用此方法,您可以对名称执行任何操作。如果你是,你将不得不修改任何引用它的东西。
到目前为止,您可能会创建LLVM IR传递(查看opt等)以在目标中设置函数名称。
简单示例:
for(auto f = M.getFunctionList().begin(); f != M.getFunctionList().end(); f = M.getFunctionList().begin()) {
if (F->getName().find("MyMangledFunctionName") != StringRef::npos) {
F->setName(F->getName() + "."); // add "dot"
}
}
“M”变量是llvm :: Module。