Building the Rust Compiler with GCC
10 months ago
- #Rust
- #Compiler
- #GCC
- 作者热爱从事Rust编译器工作,目前正挑战使用`cg_gcc`(基于GCC的代码生成器)替代LLVM进行编译器自举。
- Rust编译器自举需要复杂的三阶段流程,以确保基于GCC的编译器行为与LLVM版本完全一致。
- 重要里程碑是实现第三阶段构建,这将验证基于GCC的Rust编译器与LLVM版本功能等效。
- 调试技巧如「给编译器做前额叶切除」通过临时注释问题代码来定位和修复错误。
- 一个关键错误涉及递归函数上的`#[inline(always)]`属性,与LLVM不同,GCC无法处理这种情况。
- 临时解决方案将`#[inline(always)]`视为建议而非强制指令,虽避免递归问题但可能导致性能回退。
- 另一个错误是`SwitchInt`终止符对128位整数的错误处理,需改用嵌套`if`语句替代switch结构作为临时方案。
- 修复了Rust编译器内部器中`ScalarInt`类型的对齐问题,通过确保128位整数正确对齐解决。
- 项目已取得阶段性进展,包括修复栈溢出和内存使用问题,但仍面临挑战。
- 未来计划包括用`rustlantis`进行模糊测试、ARM架构自举工作,以及解决ABI和GCC相关缺陷。