9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

GCC 4.9 发布,完整支持 Go 1.2.1

  • 2014-04-23
  • 本文字数:1107 字

    阅读完需:约 4 分钟

GCC 4.8 发布一年零一个月之后,GCC 4.9 终于发布了。

GCC 4.9 是一个主要版本,提供了大量新功能。下面我们来看一下:

通用的优化器改进

  • AddressSanitizer 这款快速的内存错误检查程序已经支持 ARM。
  • 添加了 UndefinedBehaviorSanitizer(ubsan),这是一款快速的未定义行为检查程序,可以通过 -fsanitize=undefined 开启。它可以在运行时诊断未定义行为,目前支持 C 和 C++。
  • LTO(Link-time optimization,链接时优化)的改进:
    • 重写了类型合并(Type merging),新实现在极大提升速度的同时减少了内存使用量。
    • 提早去掉虚方法,减少了目标文件的大小,而且改进了链接时的内存使用量和编译时间。
    • 函数体可以根据需要提早加载和释放,改进了链接时的内存使用量。
    • C++ 隐含的跟虚函数处理有关的 key 方法现在可以优化掉了。
    • 在使用链接器插件时,使用 -flto 选项编译,会生成较为轻巧的目标文件,其中仅包含支持 LTO 的中间语言表示。可以使用 -ffat-lto-objects 选项来创建包含其他目标代码的文件。 在构建支持调试的 Firefox 时,占用的内存从 15GB 减少到 3.5GB,链接时间从 1700 秒减少到 350 秒。这一点让开发者非常兴奋
  • 跨过程优化的改进:
    • 新的类型继承分析模块,改进了去虚化(Devirtualization,是一种优化机制,指去掉虚函数分派相关操作)。去虚化现在会考虑匿名命名空间和 C++11 的 _final_ 关键字。
    • 新的推测性去虚化遍(使用 -fdevirtualize-speculatively 控制,这里的“遍”指编译器处理时的 Pass)。
    • 对于通过推测做出的直接调用,在代价并不低的地方切换回间接调用。
  • 反馈制导优化的改进:
    • 对使用了 C++ 内联函数的程序的分析更为可靠了。
    • 引入了一个新的函数重排序遍(通过 -freorder-functions 控制),可以极大减少大型应用的启动时间。

新语言与特定于语言的改进

  • 提供了 Go 1.2.1 的完整实现。

  • C 族语言: GCC 现在可以生成彩色的诊断信息。可以通过 -fdiagnostics-color=auto 选项控制在终端中输出彩色信息。下图是一个例子:

    (点击图像放大)

  • C 语言相关: 增加了用于支持 ISO C11 的 _Atomic、_Generic、_Thread_local 等特性。

  • C++ 相关: C++ 前端增加了对 C++1y 一些新特性的支持,比如普通函数的返回类型推导、数字分隔符、多态 Lambda 等。

  • 标准库相关: 最重要的改进是对 C++11 的支持。改进了对即将到来的 C++14 标准的实验性支持。

对于支持的目标平台,也有很多改进,比如:

  • 在 x86-64 和 ia32 平台上,实现了对 AVX-512 指令集的支持。
  • GCC 4.8 引入的局部寄存器分配器(Local Register Allocator,LRA)之前支持的目标平台只有 ia32 和 x86-64,现在在 Aarch64、ARM、S/390 和 ARC 平台上已经默认启用,在 PowerPC 和 RX 平台上也可以选择启用。

更多细节,可以参考相关页面

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2014-04-23 04:253629
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 127.0 次阅读, 收获喜欢 33 次。

关注

评论

发布
暂无评论
发现更多内容

JavaScript实现网页截屏五种方法

锋享前端

java培训JVM基础面试题分享

@零度

Java JVM

2022年了,微信商城小程序还值得做吗?

源字节1号

小程序 微信小程序 开发商城

在 Manjaro 上安装 Chrome

信号量

chrome Linux

如何使用 Checkmk 监控 SSL TLS 证书?

Ethereal

2022年济南正规等保测评公司名单(排名不分先后)

行云管家

等保 等保测评 等保2.0 济南

周边生态|StreamNative 联合 Cloudera 开源 Apache Pulsar+Apache NiFi 集成处理器

Apache Pulsar

cloudera 开源 架构 云原生 Apache Pulsar

征文丨TiDB 社区专栏第一届征文大赛,快来一次性集齐所有周边吧!

PingCAP

这门面向应用开发者的 TiDB 使用教程,TiDB SQL、Connector API、架构体系…你一定不能错过!

PingCAP

私有云与公有云,哪种云模型最适合企业的需求

Ethereal

一站式运维管理工具平台 OCP 到底有多好用,看这篇文章就够了!

OceanBase 数据库

Map-Reduce 思想在 ABAP 编程中的一个实际应用案例

Jerry Wang

mapreduce abap CRM系统 企业级应用 3月月更

netty系列之:java中的base64编码器

程序那些事

Java 程序那些事 3月月更

电科申泰加入龙蜥社区并成为理事单位,共创基础软硬件生态新未来

OpenAnolis小助手

开源 理事单位 申威 软硬件

【三级等保】三级等保服务费用一年大概要多少?一年需要测评一次嘛?

行云管家

网络安全 等保 等级保护 三级等保

从撞“新秀墙”到带团队,XTransfer海归码农升级之路

XTransfer技术

程序员 职场 创业公司

【工具】多人在线协同编辑文档软件

小炮

团队协作 工作效率

并发异步编程之争:协程(asyncio)到底需不需要加锁?(线程/协程安全/挂起/主动切换)Python3

刘悦的技术博客

多线程 协程 Python3 协程原理

社区活动| Apache Pulsar 中文开发者与用户组志愿者招募

Apache Pulsar

开源 架构 云原生 Apache Pulsar pulsar 社区

【C语言】三子棋游戏与多子棋 (保姆级的实现过程)

謓泽

3月月更

安全大讲堂 | 谭晓生:安全即服务,万物互联下的网络安全新机遇

腾讯安全云鼎实验室

网络安全 商业化 产业安全

Rust类型

Shine

读书笔记 rust

Web 键盘输入法应用开发指南(9)—— 标准与实现

天择

JavaScript 键盘 输入法 3月月更

数字化时代,如何做好用户体验与应用性能管理

云智慧AIOps社区

监控宝 监控工具 自动化运维 数字化经济

OceanBase 存储引擎详解

OceanBase 数据库

翻译 | Kubernetes 将改变数据库的管理方式

RadonDB

数据库 Kubernetes RadonDB

VuePress 博客之 SEO 优化(三)标题、链接优化

冴羽

Vue 前端 vuepress SEO 博客搭建

微博系统中”微博评论“的高性能高可用计算架构

Geek_8d5fe5

#架构实战营 「架构实战营」

大数据培训hive数仓存储格式详解

@零度

hive 大数据开发

2022 年值得关注的 9 个最新 Java 趋势

Ethereal

数据对接 - 大屏云极简使用手册

shulinwu

可视化 数据可视化 大屏可视化 数据可视化控件 大屏

  • 扫码添加小助手
    领取最新资料包
GCC 4.9发布,完整支持Go 1.2.1_语言 & 开发_臧秀涛_InfoQ精选文章