LLVM开源编译器框架的6.0.0版本已经发布。 “这个版本是过去六个月社区工作的结果,其中包括:retpoline Spectre variant 2 漏洞缓解,显著改进了Windows的CodeView调试信息,默认情况下GlobalISel在-O0的AArch64,多个x86微架构上的调度改进, Clang默认为 -std=gnu++14而不是 -std=gnu++98,支持一些即将推出的 C++2a特性,改进的优化,新的编译器警告,许多错误修复等等。
修复了许多错误:
- 在使用负整数时,MIPS64上的fpowi给出不正确的结果。
- asm’c’约束的用法与导致断言/崩溃的错误数据类型有关。
- 修复了使用DSP ASE时的转换错误。
- 修正了当micromips函数属性或使用“.set micromips”指令时对象未标记为使用microMIPS的不一致性。
- 将MIPSR6特定的危险调度程序重新排序,以延迟时隙填充符后面的顺序排列,修复了延迟插槽填充符违反ISA限制的一类罕见边界错误。
- 修正了使用gp相对寻址时未知大小的类型时崩溃的问题。
- 更正了microMIPS的j宏。
- 更正了microMIPS32r6的movep编码。
- 修复了使用带有一组无效操作数的插入指令的问题。
- 修复了TLS符号未被标记的问题。
- 由于加载和存储的偏移更短,因此可以使用MSA进行寄存器清理。
- 使用DSP ASE时更正了ELF标头。
新功能:
- 当针对MIPSR6时,长分支传递现在生成一些R6特定指令。
- 如果延迟槽不能被填充,则延迟槽填充器现在执行更多的分支转换。
- 现在完全支持MIPS MT ASE。
- 增加了对lapc伪指令的支持。
- 改进了多个指令的选择(dext, nmadd, nmsub)。
- 进一步改进microMIPS编码大小。
弃用声明:
- 自5.0版开始,microMIPS64R6支持已被弃用,现在已完全删除。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/117293.html