Lobsters | 📄 原文链接 | 2026-10-14 收录

追查 antcc 在 -O2 下的性能倒退

来源:386s.org — 2026-10-12

📋 概述

作者在给自研 C 编译器 antcc 跑 Lua 基准时发现怪事:-O2 比 -O1 慢 1.4 倍。禁用内联后倒退消失,但代码膨胀只是表象——luaV_execute 在 -O2 下膨胀到约 43KB,是 -O1 的 2.4 倍,而优化后的 IR 只大了 11%。他把矛头指向代码生成阶段,最终定位在寄存器分配:线性扫描分配器在寄存器压力下大量溢出,-O2 的 IR 过 regalloc 后膨胀到 +70%,反汇编显示 luaV_execute 里超过 40% 的指令只是栈与寄存器之间的 mov。根因是内联让大量变量的支配写入与 phi 节点被 mem2reg 变成 undef,进而破坏了分支相关性与活跃区间分析。修好之后 antcc 甚至超过了 tcc;期间他用 AI 代理帮忙筛选反汇编与 IR、试不同阈值并测量,但代理在找根因上不行,提了约十个复杂「修复」都无效。

🔑 核心要点

💡 金句

代理在调查、筛选反汇编与 IR、用不同内联阈值跑编译器并测量上帮我省了大量时间;但它不擅长找根因。
← 返回 Lobsters 首页