返回
CPerfSmith: A Randomized C Program Generator for Performance-Oriented Compiler Testing
DOI:10.1145/3771775.3786271.png)
摘要
En 中文
软件测试是软件开发生命周期中的关键阶段,确保程序在不同环境中正确可靠地运行。与通用软件测试不同,编译器测试需要结构良好的输入程序,以系统地测试编译器的各种优化阶段,因为覆盖率不足容易掩盖关键问题。目前,编译器测试存在多种技术,包括差异测试、模糊测试、切片、内存检查器和基于形式方法的验证工具。尽管这些方法能有效检测编译器崩溃、未定义行为或一般正确性错误,但它们大多不适用于系统评估编译器优化。Csmith等工具率先为编译器测试引入了随机程序生成,但它们缺乏对程序结构的精确控制,这在目标为压力测试特定优化阶段或识别性能退化时至关重要。为解决此限制,我们开发了CPERFSMITH,它是Csmith的扩展,可提供对代码结构的精细控制,实现针对特定编译器优化的程序生成。通过实验,CPERFSMITH成功生成了超过100个程序,这些程序在行业标准C编译器(GCC、Clang和AOCC)上表现出显著的运行时差异。此外,我们成功创建了超过30个测试用例,揭示了Clang两个连续发布版本之间的显著性能退化,证明了该工具检测缺失或不当应用优化的能力。
Keyword:
Compiler Testing
Random Program Generation
Performance Bugs
Compiler Optimizations

