许传奇
阿里云开发工程师
Clang Modules & Serialization Owner,LLVM Committer, C++ 标准委员会成员,阿里云程序语言与编译器团队的开发工程师,负责编译工具链的维护和推广以及对于 C++ 新特性(例如协程与 Modules) 的实现、维护与应用。
演讲主题
clangir:clang编译器的下一个最重要更新
Clang 作为 C++ “新” 生代编译器的代表产物已经诞生了 20 余年。其核心的 AST - LLVM IR 二段式设计,随着 C++ 语义的不断复杂化以及人们对于程序安全性的日渐关心,在某些方面显示出来了力不从心的一面。一方面,C++ 语义的不断演化为 C++ 程序的性能提升提供了新的空间,但 LLVM 不擅长也理论上不应该涉及 C++ 特定的语义去进行优化。另一方面,人们对于程序安全性的担心进一步加深了程序分析的压力,但 AST 的结构设计使得很难在 AST 上进行分析,而在 LLVM 上又很难获得 C++ 语义信息。与此同时,由于人工智能的火热以及硬件算力无条件增长的放缓,提高硬件算力利用率的需求推动了编译器领域的进一步发展,MLIR(Multiple Level Intermediate Representation)以其极强的扩展性获得了开发者们的青睐,获得了长足的发展。在此背景下, ClangIR 应运而生。ClangIR 是基于 MLIR 的方言,通过 MLIR 所提供的能力,编译器开发者们可以在 ClangIR 上基于 C++ 语义对程序进行进一步优化,同时也可以基于 C++ 语义信息进行相应的分析,避免 AST 与 LLVM 的两难抉择。同时,ClangIR 可能还有机会通过 MLIR 其他 Dialect ,在不同的领域复用已有的能力。可以预见,Clang IR 将会是 Clang 近年来在社区规模最大也是最重要的更新。在这次分析中,我们会介绍 ClangIR 的发展现状、近期发展以及长期展望。