Как вставить функцию в модуль LLVM
Я пишу проход LLVM, где я клонирую некоторые функции, вызывая llvm::CloneFunction
. Теперь я также хочу вставить эти функции в модуль. Как я могу это сделать?
2 ответов
- создайте новую функцию с помощью
Function::Create
или иным способом. А принимают модуль, в который вставляется новая функция. - клонировать функцию в эту новую функцию с помощью CloneFunctionInto, или просто скопируйте над BBs вам нужно.
вы можете использовать CloneFunction и вставить его в модуль после этого так
Function* duplicateFunction = CloneFunction(F, VMap,
/*ModuleLevelChanges=*/false);
F->getParent()->getFunctionList().push_back(duplicateFunction);
пример украден из PartialInlining.cpp в источнике llvm.