8

我正在编写一个 LLVM 通行证,我在其中通过调用llvm::CloneFunction. 现在我还想在模块中插入这些功能。我怎样才能做到这一点?

4

3 回答 3

8
  • Function::Create使用或通过其他方式创建新功能。AFunction的构造函数接受插入新函数的模块。
  • 使用CloneFunctionInto将一个函数克隆到该新函数中,或者只是复制您需要的 BB。
于 2013-02-04T13:31:12.617 回答
0

CloneFunction会自动将新函数插入到旧函数的模块中。从doxygen

返回指定函数的副本并将其添加到该函数的模块中。

于 2022-02-11T11:25:05.207 回答
-1

您可以使用 CloneFunction 并将其插入到模块中,如下所示

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

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

于 2014-08-05T06:26:59.847 回答