Randomized stress-testing of link-time optimizers

Randomized stress-testing of link-time optimizers
复制标题

DOI:
10.1145/2771783.2771785
复制
发表时间:
2015-07
期刊:
Proceedings of the 2015 International Symposium on Software Testing and Analysis
影响因子:
--
通讯作者:
Vu Le;Chengnian Sun;Z. Su
Vu Le;Chengnian Sun;Z. Su
中科院分区:
其他
文献类型:
--
作者:
Vu Le;Chengnian Sun;Z. Su

文献摘要

被引文献

相似文献

链接时间优化(LTO)是一种越来越重要的现代优化技术。与更成熟的传统优化相比,测试相对较少。在11个月中,我们发现了37个错误(在LLVM中25个)利用现有的编译器测试工具(CSMITH和ORION)生成单文件测试程序,并针对LTO测试特定的两个重要挑战。优化级别。对于有效的错误报告,我们开发了一种涉及多个文件的LTO错误,我们计划使我们的实用程序不断努力;
Link-time optimization (LTO) is an increasingly important and adopted modern optimization technology. It is currently supported by many production compilers, including GCC, LLVM, and Microsoft Visual C/C++. Despite its complexity, but because it is more recent, LTO is relatively less tested compared to the more mature, traditional optimizations. To evaluate and help improve the quality of LTO, we present the first extensive effort to stress-test the LTO components of GCC and LLVM, the two most widely-used production C compilers. In 11 months, we have discovered and reported 37 bugs (12 in GCC; 25 in LLVM). Developers have confirmed 21 of our bugs, and fixed 11 of them. Our core technique is differential testing and realized in the tool Proteus. We leverage existing compiler testing tools (Csmith and Orion) to generate single-file test programs and address two important challenges specific for LTO testing. First, to thoroughly exercise LTO, Proteus automatically transforms a single-file program into multiple compilation units and stochastically assigns each an optimization level. Second, for effective bug reporting, we develop a practical mechanism to reduce LTO bugs involving multiple files. Our results clearly demonstrate Proteus’s utility; we plan to make ours a continuous effort in validating link-time optimizers.