C++ 如何在LLVM模块中插入函数

C++ 如何在LLVM模块中插入函数,c++,llvm,C++,Llvm,我正在编写一个LLVM过程,通过调用LLVM::CloneFunction克隆一些函数。现在我还想在模块中插入这些函数。我该怎么做? 使用function::Create或通过其他方式创建新函数。函数的构造函数接受一个要插入新函数的模块 将一个函数克隆到新函数中,或者只在您需要的BBs上复制 您可以使用克隆函数,然后像这样将其插入模块中 Function* duplicateFunction = CloneFunction(F, VMap,

我正在编写一个LLVM过程,通过调用
LLVM::CloneFunction
克隆一些函数。现在我还想在模块中插入这些函数。我该怎么做?

  • 使用
    function::Create
    或通过其他方式创建新函数。
    函数的构造函数接受一个要插入新函数的模块
  • 将一个函数克隆到新函数中,或者只在您需要的BBs上复制

您可以使用克隆函数,然后像这样将其插入模块中

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

示例从llvm源代码中的partialinline.cpp中窃取。

我正在尝试找到一个实现该功能的llvm API函数,但仍然找不到。