★ Gcc编译器
GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套GNU编译器套装以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac OS X操作系统的标准编译器。GCC原名为GNU C语言编译器,因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java以及Ada与其他语言。GCC4.4开始默认支持龙芯2F架构,GCC4.6开始默认支持龙芯3A架构,龙芯也对外发布优化后的非社区版本。
编译组自2013年7月以来,对龙芯操作系统所使用的gcc4.4.7、4.8.3、4.9.3编译器进行了调优,调优目标是SPEC CPU2000、coremark和Linux内核等,主要手段是通过调整编译器后端的目标指令集,综合使用窥孔、指令拆分、寄存器分配约束、指令调度等优化来生成在龙芯处理器上性能更好的指令序列。主要的优化方法包含:
原来Fedora/CentOS系统中安装的gcc默认在O32下使用mips1指令集,在N64下使用mips3指令集,现在使用具有更优性能的mips64选项编译上述两个系统,已经通过测试,新的CentOS已经发布;
在N32、N64 ABI下,对函数序跋中的成对64位访存指令,在其地址满足16字节对齐的约束下,进行窥孔优化,使用龙芯464处理器核提供的128位访存指令来完成相同功能;
对程序中出现的64位数组指针计算,采用特殊的指令拆分来使用龙芯464处理器核提供的64位三操作数乘法,从而消除hi/lo相关操作以及移位拼接;
修改gcc的寄存器分配覆盖集描述,从覆盖集中去掉hi/lo寄存器,避免程序寄存器压力过大时,分配hi/lo作为通用寄存器的暂存寄存器而引发的流水线停顿;
优化-march=loongson3a的流水线描述,使得长延迟操作如load/mult/div/mod等尽量提早发射,减少流水线因数据相关造成的停顿;
修正gcc编译器在loongson3a/b o32 abi 下不使用浮点奇数号寄存器;
成员介绍
项目负责人Gcc编译组。
主要项目介绍
★ Gcc编译器新闻
Loongnix1.0平台高版本gcc-7编译器发布 devtoolset-7 [2019-04-05]
龙芯交叉编译器4.9.3发布 交叉编译器 [2018-02-26]
龙芯交叉编译器发布 交叉编译器 [2016-03-01]
- 1. 发布gs464核版本gcc-4.4.7、gcc-4.8.3 32位和64位交叉编译器。
- 2. 发布ls232核版本gcc-4.3.0 32位交叉编译器。
GCC编译器在loongson3a/b o32 abi 下不使用浮点奇数号寄存器patch发布 [2015-09-22]
- 1. 该patch使用与gcc-4.0.x--gcc-4.8.x。patch
- 2. gcc-5.xx.使用-mno-odd-spreg选项。
- 3. gcc-4.9.x.可移植gcc-5.xx中的patch,并使用-mno-odd-spreg选项。或使用该patch。
Fedora13 优化编译工具链发布 [2015-07-17]
- 更新gcc-4.4.7(用yum install loongson-toolchain安装,并设置export PATH=/opt/toolchain/bin:$PATH)
- gcc-4.4.7 添加-march=loongson3a支持
- gcc-4.4.7 添加gsq[c1]指令支持
- gcc-4.4.7 添加gs[u]指令支持
- binutils 修正loongson2f obj无法和loongson3a obj链接问题
- glibc 添加flush denormalized number to zero 优化
gcc4.8.3测试版发布 [2015-03-12]
gcc4.4.7发布 [2014-09-09]