函数名称在clang中变形

时间:2016-09-01 21:48:28

标签: c++ clang llvm llvm-clang

我想在c上创建函数,在使用clang转换为llvm代码后具有特定的名称。一个问题 - 目标函数名称必须包含点('。')。是否有可能添加“MyName”。更名为mangling,除了“查找和替换”?

1 个答案:

答案 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。