期刊
ACM SIGPLAN NOTICES
卷 51, 期 10, 页码 849-863出版社
ASSOC COMPUTING MACHINERY
DOI: 10.1145/3022671.2984038
关键词
Compiler testing; miscompilation; equivalent program variants; automated testing; Algorithms; Languages; Reliability; Verification
资金
- United States National Science Foundation (NSF) [1117603, 1319187, 1349528, 1528133]
- Google Faculty Research Award
- Direct For Computer & Info Scie & Enginr [1349528, 1117603, 1319187] Funding Source: National Science Foundation
- Direct For Computer & Info Scie & Enginr
- Division of Computing and Communication Foundations [1528133] Funding Source: National Science Foundation
- Division Of Computer and Network Systems [1319187] Funding Source: National Science Foundation
- Division of Computing and Communication Foundations [1349528, 1117603] Funding Source: National Science Foundation
Validating optimizing compilers is challenging because it is hard to generate valid test programs (i.e., those that do not expose any undefined behavior). Equivalence Modulo Inputs (EMI) is an effective, promising methodology to tackle this problem. Given a test program with some inputs, EMI mutates the program to derive variants that are semantically equivalent w.r.t. these inputs. The state-of-the-art instantiations of EMI are Orion and Athena, both of which rely on deleting code from or inserting code into code regions that are not executed under the inputs. Although both have demonstrated their ability in finding many bugs in GCC and LLVM, they are still limited due to their mutation strategies that operate only on dead code regions. This paper presents a novel EMI technique that allows mutation in the entire program (i.e., both live and dead regions). By removing the restriction of mutating only the dead regions, our technique significantly increases the EMI variant space. It also helps to more thoroughly stress test compilers as compilers must optimize mutated live code, whereas mutated dead code might be eliminated. Finally, our technique also makes compiler bugs more noticeable as miscompilations on mutated dead code may not be observable. We have realized the proposed technique in Hermes. The evaluation demonstrates Hermes's effectiveness. In 13 months, Hermes found 168 confirmed, valid bugs in GCC and LLVM, of which 132 have already been fixed.
作者
我是这篇论文的作者
点击您的名字以认领此论文并将其添加到您的个人资料中。
推荐
暂无数据