Kaleidoscope的第4章,说说自己看的想法
首先是优化,还是调用LLVM的Pass,所以说这些优化是通用的。因为这些优化都是与高级语言无关的,是对LLVM IR 的优化。
优化的方法是增加一个Passmanager。在这个Passmanager中,增加pass,但是你得知道每个pass的作用呀!函数InitializeModuleAndPassManager进行初始化,每行都有注释。
关于JIT(just in time),我没有太多的感觉。可能我层次还不够,看了整个过程之后,没有感受到JIT的特点。
JIT是使用Kaleidoscope的JIT,在主函数的调用,在刚刚那个InitializeModuleAndPassManager函数中,增加JIT的初始化。
最主要的还是函数HandleTopLevelExpression,这里我不明白的是最后删除的范围,不会把前面的都删除吗?