想象这样的场景:凌晨两点,经过数周调试后你终于发现问题所在。在第五杯咖啡的刺激下,你想到一个与目标架构无关的修复方案。...错误复现通过以下步骤可以复现这个错误:使用修复前提交编译clang(称为"stage 1"构建)用新编译的clang自举构建("stage 2"构建)针对AArch64构建附带ASAN和模糊测试工具的复现脚本在输出中获得错误编译结果由于有问题的...最小复现案例我们创建了一个最小复现代码来演示这个问题:int testarr[] = {  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  16 // 第16...个元素(第17个元素!)}...虽然这类错误的根本原因链通常都很深——一个pass生成的代码引发另一个pass生成特定代码,如此循环——但实际修复只需要提供正确的IR和错误的IR对比,添加测试用例即可。