通常,如果我将两个LLVM传递放入单个命令行调用中,就像这样...
$(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
......或者这两个传球是以某种方式同时进行的?
答案 0 :(得分:1)
如果两个传递是转换传递,如-simplifycfg
和-licm
,那么是的,您可以想到两者之间存在中间文件并按照您的建议运行命令。
但是,也存在分析过程,例如-aa
用于别名分析。这些不会按照您的描述工作,因为他们不按摩IR,他们只是为通行证提供信息(例如-licm
)。
因此,opt -aa -licm
不等同于opt -aa
后跟opt -licm
。