在llvm中创建新功能

R.O*_*mar 5 llvm

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

我能直接在LLVM创建这个,就像createFunction(F) 那么F.insert(bb, edges) 该BB是一个基本块和边缘是新功能,新的边缘。

谢谢

Eli*_*sky 5

您可以使用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);
Run Code Online (Sandbox Code Playgroud)