基本的なブロックとエッジのセットがあり、新しいエントリ ポイントとエンド ポイントを持つ新しい関数を作成する必要がある場合。
これを LLVM で直接作成できますか?その場合と同じようcreateFunction(F)
に、F.insert(bb, edges)
bb は基本ブロックで、edges は新しい関数の新しいエッジです。
ありがとう
基本的なブロックとエッジのセットがあり、新しいエントリ ポイントとエンド ポイントを持つ新しい関数を作成する必要がある場合。
これを LLVM で直接作成できますか?その場合と同じようcreateFunction(F)
に、F.insert(bb, edges)
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);