如果我有一组基本块和边,我需要为它们创建一个具有新入口和端点的新函数。
我可以直接在 LLVM 中创建它吗,就像createFunction(F)
那时F.insert(bb, edges)
which bb 是基本块, edges 是新函数的新边。
谢谢
如果我有一组基本块和边,我需要为它们创建一个具有新入口和端点的新函数。
我可以直接在 LLVM 中创建它吗,就像createFunction(F)
那时F.insert(bb, edges)
which bb 是基本块, edges 是新函数的新边。
谢谢
您可以使用Function::Create
. 例如,请参阅LLVM 教程中的这个片段:
Function *PrototypeAST::Codegen() {
// Make the function type: double(double,double) etc.
std::vector<Type*> Doubles(Args.size(),
Type::getDoubleTy(getGlobalContext()));
FunctionType *FT = FunctionType::get(Type::getDoubleTy(getGlobalContext()),
Doubles, false);
Function *F = Function::Create(FT, Function::ExternalLinkage, Name, TheModule);
函数创建: http: //llvm.org/docs/doxygen/html/classllvm_1_1Function.html#a162a63c89ac118c8ffef75b3a892efa0
如何使用llvm源码中的create函数:http: //llvm.org/docs/doxygen/html/CloneFunction_8cpp_source.html#l00162