GCC/Clang 在 O2 优化下遗留 64 位除法Bug

tetsuoai · x · 2026-08-21

在为 agenc-arena(一个 C11 区域分配器)进行基准测试时,作者发现 GCC 13 和 Clang 18 在 -O2 优化级别下,仍会在快速路径中保留 64 位硬件除法指令。文章展示了 C 源码、生成的汇编代码以及修复方案。问题源于溢出保护逻辑:当 count 为 1 时,PTRDIFFMAX / size 本应被编译器优化为简单的符号测试,但编译器未完全消除昂贵的除法操作。

原文链接 →

「Infra」频道最新

更多「Infra」频道 AI 资讯 →