用 GCC 引导 Rust 编译器:一场与 Bug 的较量
2025-07-07
本文讲述了作者使用 GCC 而不是 LLVM 来引导 Rust 编译器的经历。这并非易事,作者遭遇了三个主要的 Bug:递归函数的 `#[inline(always)]` 属性、128 位 SwitchInt 终止符的错误实现以及一个与对齐相关的内存访问错误。作者通过“给编译器做开颅手术”式的调试方法,逐步定位并修复了这些问题,最终成功实现了 Rust 编译器的 Stage 2 构建,并朝着 Stage 3 迈进。过程中,作者分享了调试技巧,例如使用 core dump 分析段错误,并探讨了编译器优化的复杂性。
开发