LLVM 12.0已经发布,这是其新闻

LLVM

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

在这个新版本中 我们可以找到各种改进和新闻,我们可以突出显示一个新的函数属性“ tune-cpu”以支持-mtune as gcc,以及对不同平台的改进。

LLVM 12.0的主要新功能

在这个新版本中,我们可以找到 支持llvm-build构建工具包 用python编写 已经停产了, 而不是将项目完全转换为使用CMake构建系统。

AArch64体系结构的后端改进了对Windows平台的支持: 为目标Windows系统提供了正确的汇编程序输出生成,优化了unwind调用中的数据生成(此类数据的大小减少了60%),使用seh指令增加了创建数据的能力。

PowerPC体系结构后端包括针对内联和循环部署的新优化,改进了对Power10处理器的支持,对用于处理阵列的MMA指令的附加支持以及对AIX操作系统的改进支持。

x86增加了对AMD Zen 3,Intel Alder Lake和Intel Sapphire Rapids处理器的支持,以及有关HRESET,UINTR和AVXVNNI处理器的说明。 删除了对MPX扩展(内存保护扩展)的支持,以检查指针是否违反内存区域限制(此技术尚未广泛使用,并且已从GCC和clang中删除)。 汇编程序增加了对前缀{disp32}和{disp8}以及后缀.d32和.d8的支持,以控制操作数和转换的偏移量的大小。 添加了新属性“ tune-cpu”以控制微体系结构优化的启用。

另一个引人注目的变化是 添加了新模式“ -fsanitize = unsigned-shift-base” 在左移一位后检测无符号整数溢出。 对于Mach-O(macOS)格式,在处理异常时实现了对arm64,arm和i386体系结构,链接阶段优化(LTO)和堆栈展开的支持。

新的功能属性“ tune-cpu”突出显示 允许o无论“ target-cpu”属性如何,都将应用微体系结构优化 或从TargetMachine CPU中用于选择指令集。 如果该属性不存在,则调整CPU将跟随目标CPU。

Libc ++实现了C ++ 20标准的新功能 并开始开发C ++ 2b规范的功能,以及 添加了对组装的支持,并禁用了对本地化的支持 (“ -DLIBCXX_ENABLE_LOCALIZATION = OFF”)和用于生成伪随机数的设备。

Clang 12的改进,针对AArch64架构的改进中,添加了新的编译器标志 “ -Moutline-atomics”和“ -mno-outline-atomics”来启用和禁用原子助手功能,例如“ __aarch64_cas8_relax”。 这些运行时函数确定是否支持大型系统扩展(LSE),并使用提供的原子处理器指令或回滚来使用LL / SC(装入链接/存储条件的)指令进行同步。

现在使用非空和可解除引用的检查处理“ this”指针 (N)。 当需要空值时,可以使用-fdelete-null-pointer-checks选项删除非空属性。

在Linux中,用于AArch64和PowerPC体系结构,如在GCC中一样,启用了“ -fasynchronous -wind-tables”来生成滚动调用表。

在“ #pragma clang loop vectorize_width”中,添加了指定“固定”(默认)和“可缩放”选项以选择矢量化方法的功能。

在Linux上的clangd缓存服务器(Clang Server)中,长期操作期间的内存消耗已大大减少(提供了对malloc_trim的定期调用,以将可用的内存页返回给操作系统)。

最后 如果您有兴趣了解更多信息 关于这个新版本,您可以 请在下面检查详细信息。 链接。


发表您的评论

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

*

*

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