LLVM(用于构建跨平台编译器的开源框架)背后的开发人员推出了LLVM 7 。 新版本按计划每六个月发布一次,作为该项目主要版本节奏的一部分。
LLVM支持几种现代语言编译器,包括Apple的Swift,Rust语言和Clang C / C ++编译器。 LLVM 7引入了对其本机功能和配套工具的修订,使构建,调试和分析LLVM生成的软件变得更加容易。
LLVM核心的更改包括:
- 在Microsoft Windows上安装时,LLVM不再提供与Visual Studio的直接集成。 而是通过Visual Studio的LLVM编译器工具链Visual Studio扩展的单独安装的插件来提供集成。
- 改进了用于编译Microsoft Windows可执行文件资源的
llvm-rc
工具,使它更容易使用LLVM生成Windows应用程序,而无需使用许多Microsoft自己的工具。 - 浮点强制转换(通过在小数点后舍弃数据将浮点数转换为整数)已得到优化,但对于依赖于此功能不确定行为的开发人员而言,这可能会引起问题。 Clang有一个新的命令行开关来检测此问题。
LLVM的链接工具lld
受益于速度的大幅提高。 LLVM的创建者声称lld
现在比平台本地链接器(例如Microsoft Windows上的link.exe
)“快得多”,并且它已经可以在生产中生成通用的Unix,Windows和MinGW应用程序。 该项目还将lld
提升为LLVM生成的WebAssembly应用程序的默认链接器,因为WebAssembly旨在成为编译器工具链的一流目标。
LLVM 7新增了llvm-mca
,它是一种性能分析工具,它可以测量生成的机器代码的行为-不仅是指令的吞吐量,还包括处理器资源的使用情况。 使用llvm-mca
,可以评估LLVM生成的代码每个周期使用多少指令。
llvm-mca
工具的工作原理是接受已用内联代码注释(例如,C中的__asm_volatile
) __asm_volatile
,以指示应分析哪些指令。 生成的报告包括有关多次迭代(默认值为100)上的代码的统计信息,以及每条指令在通过处理器的指令流水线时的状态转换的时间线视图。 对于相同的工作,这使得更容易确定LLVM生成的代码是否比手动汇编的效率更高。
LLVM工具集还新增了llvm-exegesis
,它是一种基准测试工具,用于确定给定体系结构的指令集的性能。 它会及时编译一段代码,以在可用硬件上以最高的并行度来测试有问题的指令,并报告已测试指令的延迟。 该工具主要用于验证供应商提供的有关芯片组上指令行为的信息,但是为新架构创建LLVM后端的人可以使用它来微调那里的指令调度。
From: https://www.infoworld.com/article/3305071/llvm-7-improves-performance-analysis-linking.html