编译遍(compiler pass),理学-计算机科学技术-计算机软件-系统软件-编译系统,在编译器中,从头到尾遍历一遍源程序或中间语言程序并完成所规定任务的过程。现代编译器一般将不同编译过程以遍的形式实现。编译遍之间顺序执行,前一个遍的输出作为后一个遍的输入。根据编译遍所完成的任务,可以将编译遍分成四类:分析遍、代码转换遍、优化遍及辅助遍。分析遍收集信息,提供给其他遍使用,或用来调试、程序可视化等。编译器中分析遍的具体任务主要有数据流分析、控制流分析、别名分析、数据依赖关系分析、生成函数调用图、构造支配树等。代码转换遍将代码从一种表示方式转换成另一种表示方式。常见的代码转换包括高级语言到编译器中间语言的转换、编译器不同中间语言之间的转换、编译器中间语言到汇编语言的转换等。优化遍对代码进行优化,提高代码执行速度、减少代码体积、降低程序能耗等。对于现代编译器,优化能力是一个很重要的评价指标。当前应用最广泛的两款开源编译器,LLVM编译器(v9.0.0)包含了约58个优化遍,GCC编译器(v9.2)包含了超过100个优化遍。