请注意当前的 C 编译器发行版中以下新增和更改的功能。
ABI 更改要求重新编译:对 C 编译器的更改将纠正以 64 位模式在 SPARC 处理器上传递和返回包含复杂类型的结构的方式。以前,这些结构值有时会传递和返回到错误的寄存器中,并且创建与 gcc 所创建的二进制文件不兼容的二进制文件。因为此更改在 C 编译器中实现时将影响现有 ABI 的元素,所以如果应用程序中的任何源文件使用具有复杂字段的结构时,必须重新编译应用程序的整个源代码库才能避免出现错误应答的可能性。但 32 位 SPARC 处理器和 32/64 位 x86 处理器的编译不受此更改的影响。
添加了对 SPARC-V9 ISA 的 SPARC VIS3 版本的支持。如果使用 -xarch=sparcvis3 选项进行编译,编译器可以使用 SPARC-V9 指令集、UltraSPARC 和 UltraSPARC-III 扩展、混合乘加指令以及可视指令集 (Visual Instruction Set, VIS) 版本 3.0 中的指令。(B.2.74 –xarch=isa)
在基于 x86 的系统上,-xvector 选项的缺省值已更改为 -xvector=simd。(B.2.157 -xvector[= a])
现在,使用 -xarch=amdsse4a 选项可支持 AMD SSE4a 指令集。(B.2.74 –xarch=isa)
-traceback 选项使可执行文件在出现严重错误时列显栈跟踪。(B.2.62 -traceback[={ %none|common|signals_list}])
-mt 选项已更改为 -mt=yes 或 -mt=no。(B.2.50 -mt[={yes |no}])
#warning 编译器会在指令中发出文本作为警告并继续编译。(2.10 警告和错误)
新的 pragma does_not_read_global_data、does_not_write_global_data 以及 no_side_effect。(2.11 Pragma)
现已提供头文件 mbarrier.h。为 SPARC 和 x86 处理器中的多线程代码定义不同的内存边界内部函数。(3.9 内存边界内部函数)
-xprofile=tcov 选项经过增强,支持可选的配置文件目录路径名,还能够生成与 tcov 兼容的反馈数据。(B.2.136 –xprofile=p)
在此发行版中,-xMD 和 -xMMD 选项 (C/C++) 写入的依赖性文件将覆写以前存在的任何文件。(B.2.111 -xMD)