如果我有一組基本塊和邊,並且需要爲它們創建一個新的入口點和終點的函數。在llvm中創建新函數
我可以直接在LLVM中創建它,就像createFunction(F)
然後F.insert(bb, edges)
其中bb是基本塊,邊是新函數的新邊。
感謝
如果我有一組基本塊和邊,並且需要爲它們創建一個新的入口點和終點的函數。在llvm中創建新函數
我可以直接在LLVM中創建它,就像createFunction(F)
然後F.insert(bb, edges)
其中bb是基本塊,邊是新函數的新邊。
感謝
您可以創建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);
你能澄清我怎麼用這個片段在Function Pass中,我需要用新的基本塊和從原始函數中提取的新邊構造一個新函數 –
@ R.Omar:不應該在'FunctionPass'中創建新函數,只能在'ModulePass'中創建新函數。只要按照我鏈接的教程 - 它解釋得很好,並有完整的代碼來創建您可以使用的功能。 –
我明白了,所以主要思想是在模塊密碼中使用此代碼不是功能通過 –