论文部分内容阅读
编译优化是现代编译器的重要功能,编译优化测试对保障现代编译器质量有着重要作用。编译优化测试需要编写大量的测试用例程序作为输入,手工完成十分费时费力,因此,有必要研究编译优化测试用例的自动生成方法。
针对编译优化测试,有研究者提出并实现了一种基于分支时序逻辑的测试用例自动生成方法COT。该方法可以有效地生成标量优化测试用例程序,但该方法没有考虑程序中的数组和指针,对优化特征的描述也不能区分循环迭代中的语句实例,更不能刻画语句实例间的数据依赖关系,然而这些是刻画循环优化所必需的,因此,COT不适用于循环优化测试用例的自动生成。
本文针对COT方法的缺陷,首先提出了基于参数化分支时序逻辑pCTL(parameterized computation temporal logic)的循环优化描述方法,通过参数化COT的优化描述体系中的语句谓词、变量引用谓词和变量定义谓词实现了对循环迭代中的语句实例及语句实例间的数据依赖关系的描述。在此基础上,本文提出了基于pCTL描述的循环优化测试用例自动生成方法COT2。该方法根据pCTL公式构造初始的关键节点控制图,再按照公式语义执行公式处理和虚边替换,得到完整的控制流图,最后计算数组引用下标,生成循环优化测试用例程序。
本文实现了COT2的系统原型,并用循环优化模块的覆盖率指标评价生成的测试用例的质量,实验结果表明该方法对循环优化具有针对性,是一种行之有效的方法。本文还用生成的测试用例程序对GCC各版本的循环优化模块进行了测试,并分析了错误发现数与各版本稳定性之间的关系,进一步验证了本文方法的有效性。