7.2.3 溢出代码 (Spill Code) 插入与优化 在寄存器分配的战场中,溢出(spilling)从来不是失败的代名词,而是编译器在物理资源约束下做出的一次精密权衡。它不像指令选择那样关乎语义等价,也不像循环优化那样追求渐近加速;它是一场发生在每一条中间表示(IR)指令之间、每一组活跃变量生命周期之内、每一个寄存器文件物理槽位之上的微观调度战争——而溢出代码插入与优化,正是这场战争中最富技术张力、最考验工程直觉、也最容易被低估的关键战役。 我们不谈“什么是溢出”,那太浅;也不满足于“图着色失败后插入load/store”,那太糙。