Hasty Briefsbeta

双语

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相关缺陷。