5

基本的なブロックとエッジのセットがあり、新しいエントリ ポイントとエンド ポイントを持つ新しい関数を作成する必要がある場合。

これを LLVM で直接作成できますか?その場合と同じようcreateFunction(F) に、F.insert(bb, edges) bb は基本ブロックで、edges は新しい関数の新しいエッジです。

ありがとう

4

2 に答える 2

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);
于 2013-06-25T12:47:38.370 に答える