论文《Interleaving Large Language Models for Compiler Testing》总结与翻译
一、文章主要内容总结
1. 研究背景与问题
编译器作为现代软件生态的核心组件,其可靠性至关重要,但现有测试方法存在显著缺陷:传统随机生成或变异测试工具(如Csmith)受限于预定义规则,易陷入“饱和点”;现有基于大语言模型(LLMs)的测试工具(如Fuzz4All、WhiteFox)则面临两大核心挑战——生成的测试程序质量低(存在语法/语义错误,无法检测编译错误类漏洞)、计算成本高(每轮测试需频繁调用LLMs,难以大规模部署)。
2. 核心方案:LegoFuzz框架
提出离线-在线两阶段解耦的编译器测试框架,平衡LLMs的创造性与传统方法的高效性:
- 离线阶段(代码数据库构建):以真实开源项目(如Linux、Redis、Nginx)代码为模板,通过“真实代码对齐提示”引导LLMs生成小而功能丰富的代码片段(函数级),并通过多工具验证(ASan、UBSan、CompCert等)确保语法/语义有效性,最终构建含55.3万余个有效函数的数据库。
- 在线阶段(迭代程序合成):复用离线数据库中的函数作为“积木”,通过两种机制构建函数间依赖(函数调用插入、全局变量






