【发布时间】:2014-07-31 20:51:59
【问题描述】:
在我通过 LLVM C++ API 生成的一些代码中,有一次我得到了一个函数的原始地址。我把它变成一个函数指针,调用如下:
llvm::FunctionType* ft = llvm::FunctionType::get(...);
llvm::Constant* iptr = llvm::ConstantInt::get(
engine->getDataLayout()->getIntPtrType(state.context, 0), (uint64_t) pointer);
llvm::Value* fptr = llvm::ConstantExpr::getIntToPtr(iptr,
llvm::PointerType::get(ft, 0));
llvm::Value* retval = state.builder.CreateCall(fptr, params);
这很好 --- 但是我希望能够设置一些函数属性来帮助优化:具体来说,readnone。
不幸的是,我发现的唯一 API 是 llvm::Function,而我没有。我希望属性是函数类型的属性,因为这就是它在 C 中的工作方式,但llvm::FunctionType 似乎没有属性 API。
关于如何做到这一点的任何建议?
【问题讨论】:
标签: code-generation llvm