多次 LLVM 通过单次调用

Multiple LLVM passes with single call

一般来说,如果我将两个 LLVM pass 放入单个命令行调用中,就像这样...

$(LLVM_HOME)opt -my-pass -another-pass < foo1.bc > foo2.bc

...这个是不是定义成和运行一模一样的连续两次通过,多了一个中间文件,像这样...

$(LLVM_HOME)opt -my-pass < foo1.bc > foo11.bc
$(LLVM_HOME)opt -another-pass < foo11.bc > foo2.bc

...或者这两个过程是否以某种方式同时执行?

如果这两个过程是转换过程,比如-simplifycfg-licm,那么是的,你可以认为两者之间有一个中间文件和运行命令你建议。

然而,也存在分析通道,如-aa用于别名分析。这些 不会 像您描述的那样工作,因为它们不按摩 IR,它们只是为按摩 IR 提供信息(例如 -licm)。

因此,opt -aa -licm 不等同于 opt -aa 后接 opt -licm