在C++中使用LLVM的JIT功能进行代码优化:Optimization passes--PassManagerBuilder

本文介绍了作者在C++中使用LLVM JIT功能进行代码优化的探索过程,包括研究官方教程、Stack Overflow问答以及找到的适用于自己项目的优化方法。重点是通过PassManagerBuilder应用LLVM的优化passes,适用于自定义编译器开发者的参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天找了一天的在LLVM中如何进行代码优化的方法。

一开始在谷歌搜索LLVM JIT,看到了LLVM的官方教程:
1. Building a JIT: Starting out with KaleidoscopeJIT
1.构建JIT:从KaleidoscopeJIT开始
然后我看得头都要大了,而且仍然不知道改怎么进行中间代码优化。
我看到了另一篇博客:编译器架构的王者LLVM——(12)使用JIT引擎,写得不错,但帮助不大。


随后我看了stackoverflow上的 一个提问:Call LLVM Jit from c program
里面的问题是如何在LLVM中读取bc文件,也就是LLVM 中间代码(LLVM ir bitcode),然后进行运行。
示例代码如下:

#include <string>
#include <memory>
#include <iostream>

#include <llvm/LLVMContext.h>
#include <llvm/Target/TargetSelect.h>
#include <llvm/Bitcode/ReaderWriter.h>
#include <llvm/ExecutionEngine/ExecutionEngine.h>
#include <llvm/ModuleProvider.h>
#include <llvm/Support/MemoryBuffer.h>
#include <llvm/ExecutionEngine/JIT.h>

using namespace std;
using namespace llvm;

int main()
{
   
   
    InitializeNativeTarget();
    llvm_start_multithreaded();
    LLVMContext context;
    string error;
    Module *m = ParseBitcodeFile(MemoryBuffer::getFile("tst.bc"), context, &error);
    ExecutionEngine *ee = ExecutionEngine::create(m);

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值