LLVM社区已发布LLVM编译器基础结构项目的9.0.0版本。 此更新对内存,模式匹配和C ++进行了优化。
在新版本中,LLVM会在有问题的代码必须失效的情况下将存储移至恒定内存。 对于某些希望能够抛弃const
C / C ++代码库,事实证明这是一个问题。 这是一个不确定的行为,到目前为止,还没有以这种确切的方式积极地用于优化目的。
此外,LLVM现在将对一系列窄存储区存储的宽标量值进行模式匹配。 例如,Clang将编译以下函数,以可移植的方式按大端顺序写入32位值:
void write32be(unsigned char *dst, uint32_t x) {
dst[0] = x >> 24;
dst[1] = x >> 16;
dst[2] = x >> 8;
dst[3] = x >> 0;
)
而且,LLVM优化器现在将在某些情况下将对memcmp
调用转换为bcmp
。
LLVM 9.0.0的其他更改包括:
- 针对OpenCL框架的C ++的实验性支持。
- 插件提供了两个新的扩展点
EP_FullLinkTimeOptimizationEarly
和EP_FullLinkTimeOptimizationLast
,以专用于完整的LTO管道管理器。 - 支持asm
goto
,例如,使x86_64的主线Linux内核可以使用Clang构建。 - CMake的参数
CLANG_ANALYZER_ENABLE_Z3_SOLVER
被取代LLVM_ENABLE_Z3_SOLVER
。 - 现在,当降低具有不可达默认目标的交换机时,LLVM会为跳转表发出范围检查。
- RISCV目标已从“实验”阶段毕业。 现在默认情况下已构建。
- ORCv1 JIT API已弃用。
LLVM 9.0.0仍然存在一个问题,导致GCC 9对Clang进行了错误编译。这是该版本中的一个已知问题 。
LLVM支持用于Rust和Swift语言的编译器以及用于构建新语言的工具包。 LLVM可能增长的领域之一是机器学习,而MLIR(多级中间表示)机器学习编译器基础结构刚刚为LLVM Foundation做出了贡献。 MLIR由TensorFlow机器学习库的开发人员创建。
哪里下载LLVM 9.0.0
您可以从llvm.org 下载LLVM 9.0.0 。
From: https://www.infoworld.com/article/3441079/llvm-900-arrives-with-major-improvements.html