如何在LLVM模块中插入函数

时间:2013-02-04 13:03:08

标签: c++ llvm

我正在写一个LLVM传递,我通过调用llvm::CloneFunction来克隆一些函数。现在我也想在模块中插入这些功能。我怎么能这样做?

2 个答案:

答案 0 :(得分:6)

  • 使用Function::Create或其他方式创建新功能。 Function的构造函数接受一个插入新函数的模块。
  • 使用CloneFunctionInto将函数克隆到该新函数中,或者只复制所需的BB。

答案 1 :(得分:0)

您可以使用CloneFunction,然后将其插入模块中

  Function* duplicateFunction = CloneFunction(F, VMap,
                                              /*ModuleLevelChanges=*/false);
  F->getParent()->getFunctionList().push_back(duplicateFunction);

从llvm源中的PartialInlining.cpp中窃取的示例。