LLVM: The Bad Parts
4 months ago
- #Compiler
- #Optimization
- #LLVM
- LLVM面临评审能力不足的挑战,导致PR审核缓慢且可能合并不良变更
- 该项目C++ API和IR变更频繁,需在创新与稳定性成本间取得平衡
- 由于LLVM的庞大体积和C++编译开销,构建耗时显著,现有部分缓解策略
- 持续集成稳定性问题持续存在,包括不稳定测试和构建节点故障,掩盖了真实失败信号
- 端到端测试覆盖不足,特别是可执行测试和完整操作流程的验证
- 后端分歧问题突出,修复方案常针对特定目标而非通用解决
- 编译时间仍是痛点,尽管近期有改进,-O0级别优化尤其明显
- 性能追踪体系不完善,缺乏官方运行时性能监控基础设施
- IR设计存在缺陷,包括未定义值问题、逻辑不严谨及规范不完整
- 约束编码机制分散,多种实现方式各有取舍
- 非严格IEEE 754标准的浮点语义处理存在问题
- 新Pass管理器等部分迁移工作持续多年仍未完全落地
- ABI和调用约定处理混乱,前后端间缺乏清晰契约
- 内置函数和库函数管理复杂,存在多数据源冲突且缺乏定制能力
- 上下文/模块二分法设计导致数据布局访问等摩擦
- LICM优化增加寄存器压力,却缺乏后端下沉机制有效缓解