LLVM 9.0的新版本已经发布,这是其新闻

LLVM

经过六个月的发展 介绍了新版本的LLVM 9.0项目的启动, 这是与GCC兼容的工具包(编译器,优化器和代码生成器), 将程序编译成类似RISC的虚拟指令的中间位代码 (具有多级优化系统的低级虚拟机)。

它旨在优化编译时间,绑定时间,用户想要定义的任何编程语言的执行时间。 最初实现为编译C和C ++,LLVM的语言不可知论设计和项目成功 产生了各种各样的语言,包括Objective-C,Fortran,Ada,Haskell,Java字节码,Python,Ruby,ActionScript,GLSL,Clang,Rust,Gambas等。

生成的伪代码可以在程序执行时直接使用JIT编译器转换为机器指令。

LLVM 9.0的主要新功能

LLVM 9.0的新功能 找到支持从RISC-V平台删除实验开发标签的支持,C ++对OpenCL的支持。

另一个新颖之处 突出的是将程序划分为动态加载部分的能力 LLD和Linux内核代码中使用的»asm goto»构造的实现。

此外,还要强调的是,Libc ++附带了对WASI的支持 (WebAssembly系统界面)和LLD引入了对WebAssembly动态绑定的初始支持。 添加了GCC特定表达式»asm goto»的实现,该表达式允许您从汇编的内联块切换到C代码中的标记。

要在x86_64系统上使用Clang以»CONFIG_JUMP_LABEL = y«模式构建Linux内核,此功能是必需的。 考虑到以前版本中添加的更改,现在可以在Clang中为x86_64体系结构构建Linux内核(以前,仅ARM,aarch64,ppc32,ppc64le和mips体系结构支持Linux内核。

增加了对BTI指令的支持 (分支目标指示器)和PAC(指针身份验证代码)用于AArch64体系结构。 大大改善了对MIPS,RISC-V和PowerPC平台的支持。

另外, Android和ChromeOS项目已经切换到使用Clang来构建内核 Google正在测试Clang作为其运行Linux系统内核的主要构建平台。

将来, 在内核编译过程中,可以使用其他组件 LLVM,包括LLD,llvm-objcopy,llvm-ar,llvm-nm和llvm-objdump。

实验性分区功能已添加到LLD链接器,该功能允许将程序分为多个部分,每个部分放置在单独的ELF文件中。 此功能使您可以运行程序的主要部分,并根据需要加载该过程中的其余组件(例如,您可以选择将内置的PDF查看器作为单独的文件,只有在以下情况下才下载该文件)用户打开文件PDF)。

另一方面,后端的众多改进也很突出。 适用于X86,AArch64,ARM,SystemZ,MIPS,AMDGPU和PowerPC体系结构。

例如,已为AArch2架构添加了对SVE64和MTE(内存标记扩展)指令的支持,对ARM后端添加了对Armv8.1-M架构和MVE架构的支持。

对于AMDGPU,添加了对GFX10架构的支持 (Navi),则启用默认值以调用功能并传递已激活的组合DPP(Data Primitives-Parallel)。

LLDB调试器向后引入了痕迹的颜色突出显示; 增加了对DWARF4 debug_types和DWARF5 debug_info块的支持;

llvm-objcopy和llvm-strip实用程序增加了对COFF格式可执行文件和对象的支持。

RISC-V架构的后端稳定,它不再定位为实验性,并且默认情况下已构建。 完全支持带有MAFDC扩展的RV32I和RV64I指令集变体的代码生成。

数据来源: http://releases.llvm.org/


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。