在llvm中创建新函数

时间:2013-06-25 12:16:34

标签: llvm

如果我有一组基本的块和边缘,我需要为它们创建一个带有新入口和终点的新函数。

我可以直接在LLVM中创建它,就像createFunction(F)然后F.insert(bb, edges)一样 其中bb是一个基本块,edge是新函数的新边。

由于

2 个答案:

答案 0 :(得分:3)

您可以使用Function::Create创建新功能。请参阅此代码段from the LLVM tutorial,例如:

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);

答案 1 :(得分:0)