本文整理汇总了C++中Functions::init方法的典型用法代码示例。如果您正苦于以下问题:C++ Functions::init方法的具体用法?C++ Functions::init怎么用?C++ Functions::init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Functions
的用法示例。
在下文中一共展示了Functions::init方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init
void JITImpl::init()
{
if (initialized)
return;
LLVMLinkInJIT();
LLVMInitializeNativeTarget();
LLVMMemoryBufferRef memBuffer =
LLVMExtraCreateMemoryBufferWithPtr(instructionBitcode,
instructionBitcodeSize);
char *outMessage;
if (LLVMParseBitcode(memBuffer, &module, &outMessage)) {
std::cerr << "Error loading bitcode: " << outMessage << '\n';
std::abort();
}
// TODO experiment with opt level.
if (LLVMCreateJITCompilerForModule(&executionEngine, module, 1,
&outMessage)) {
std::cerr << "Error creating JIT compiler: " << outMessage << '\n';
std::abort();
}
builder = LLVMCreateBuilder();
LLVMValueRef callee = LLVMGetNamedFunction(module, "jitInstructionTemplate");
assert(callee && "jitInstructionTemplate() not found in module");
jitFunctionType = LLVMGetElementType(LLVMTypeOf(callee));
functions.init(module);
FPM = LLVMCreateFunctionPassManagerForModule(module);
LLVMAddTargetData(LLVMGetExecutionEngineTargetData(executionEngine), FPM);
LLVMAddBasicAliasAnalysisPass(FPM);
LLVMAddJumpThreadingPass(FPM);
LLVMAddGVNPass(FPM);
LLVMAddJumpThreadingPass(FPM);
LLVMAddCFGSimplificationPass(FPM);
LLVMAddDeadStoreEliminationPass(FPM);
LLVMAddInstructionCombiningPass(FPM);
LLVMInitializeFunctionPassManager(FPM);
if (DEBUG_JIT) {
LLVMExtraRegisterJitDisassembler(executionEngine, LLVMGetTarget(module));
}
initialized = true;
}