获取llvm中函数的指针
我试图获取一个指向函数的指针,该函数返回一个void,并且有一个字符串作为参数。代码编译成功,但运行pass时失败,出现以下错误: 断言`(i>=FTy->getNumParams()| | FTy->getParamType(i)==Args[i]->getType())&&“调用具有错误签名的函数!”失败。 有人能帮忙吗。如何正确创建此类函数的签名获取llvm中函数的指针,llvm,Llvm,我试图获取一个指向函数的指针,该函数返回一个void,并且有一个字符串作为参数。代码编译成功,但运行pass时失败,出现以下错误: 断言`(i>=FTy->getNumParams()| | FTy->getParamType(i)==Args[i]->getType())&&“调用具有错误签名的函数!”失败。 有人能帮忙吗。如何正确创建此类函数的签名 StructType *StructTy_class_std__basic_string = mod->getTypeBy
StructType *StructTy_class_std__basic_string = mod->getTypeByName("class.std::basic_string");
if (!StructTy_class_std__basic_string)
{
StructTy_class_std__basic_string = StructType::create(mod->getContext(), "class.std::basic_string");
}
LLVMContext &Context = mod->getContext();
Constant *c = mod->getOrInsertFunction("_Z5countSs",
Type::getVoidTy(Context),
StructTy_class_std__basic_string, NULL);
Function *funtPtr = cast<Function>(c);
你能给我看一下你的通话指示吗?我意识到这就是我做错的地方。你能建议一下他们应该叫什么函数吗?假设我必须使用变量(const char*a=“hello”)中包含的字符串调用此函数。在这种情况下,我的CreateCall应该是什么样子?我更新了代码。你现在能查一下吗。谢谢。
Constant *a = ConstantDataArray::getString(mod->getContext(), instruction->getOpcodeName(), true);
builder.SetInsertPoint(instruction);
builder.CreateCall(count,a);