写点什么

LLVM 3.3 完全兼容 C++11

  • 2013-07-01
  • 本文字数:779 字

    阅读完需:约 3 分钟

最近发布的 LLVM 3.3 带来了大量新特性,其中包括通过 Clang 子项目实现的完全兼容 C++11 的编译器。最重要的新特性是支持一些新的 CPU 架构,包括 AArch64(64 位 ARM)、 AMD 的 R600 GPU 和 IBM 的 z/Architecture(s390x),再就是改进了对 MIPS 和 PowerPC 的支持。

LLVM 有两种向量识别器(vectorizer):循环向量识别器和新增的 SLP 向量识别器。在 3.3 版本中,得益于一些改进,循环向量识别器能够生成更好的代码,在使用–O3 标记时会默认启用该特性。新添加的特性包括指针的运行时检查、反向迭代器和 If 转换。SLP(superword-level parallelism)向量识别器可以将“类似的独立指令合并为向量指令”。SLP 向量识别器通过“-fslp-vectorize”标记启用。

Dragon Egg 是 LLVM 的子项目,它将 LLVM 技术带向了 GCC。DragonEgg 将 GCC 的优化器和代码生成器替换成了 LLVM 的。在 3.3 版本中还有一些值得注意的改进,如支持 gcc-4.8.1 及更高版本,提供了更好的调试信息等。LLDB(Low Level Debugger)添加了一些 Linux 特性:

  • 支持观察点
  • 通过一个 vim 插件,在 vim 中集成了 lldb 命令和程序状态
  • 改进了寄存器支持,其中包括向量寄存器
  • 可以使用 make/ninja/auto-tools/clang 3.3/gcc 4.6 构建

使用 C++11 的开发者,或考虑将 C++11 应用于现有项目的开发者,可以研究一下 LLVM 的 C++11 迁移工具——cpp11-migrate。按照 LLVM 博客上的说法,“C++11 迁移程序的意图是通过从源代码到源代码的翻译,将现有的 C++ 代码迁移为使用 C++11 特性的代码,以增强可维护性、可读性、运行时性能和编译时性能。”

LLVM 3.3 以多种格式发布,其中包括源代码和预先构建好的二进制包。Linux、FreeBSD 和 Mac OS X 用户可以直接从项目网站下载安装程序。作为选择,也可以检查操作系统发行包,或从源代码编译。LLVM 团队提供了详细的编译说明

查看英文原文: LLVM 3.3 Achieves Full C++11 Compliance

2013-07-01 10:542297
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

死磕Java并发编程(3):volatile关键字不了解的赶紧看看

Seven七哥

Java Java并发 volatile

如何画一个闹钟

池建强

视觉笔记

关于HSTS - 强制浏览器使用HTTPS与服务器创建连接

遇见

https 安全 浏览器 TLS 证书

最近的一些人生感悟

小智

人生 哲学

【SpringBoot】给你的 CommandLineRunner 排个序

遇见

Java Spring Boot

写作平台使用感受

小天同学

产品 体验 反馈

过滤数组中重复元素,你知道最优方案吗?

麦洛

数据结构 数组 数组去重

太慢是不行的

池建强

创业 产品

Nginx代理Oracle数据库连接

遇见

MySQL nginx oracle 反向代理

dubbo-go 中如何实现路由策略功能

joe

Apache 开源 微服务 dubbo Go 语言

用python爬虫保存美国农业部网站上的水果图片

遇见

Python GitHub 爬虫

Facebook在用户增长到5亿时的扩容策略

Rayjun

团队管理 扩容

回"疫"录(2):不知者无畏

小天同学

疫情 回忆录 现实纪录

软件世界中的个人英雄与团队协作

王泰

团队管理 软件工程 团队协作

程序员陪娃看绘本之启示

孙苏勇

程序员 生活 读书 成长 陪伴

常用手机软件清单

彭宏豪95

效率工具 App 手机 移动应用

理性主义和实证主义

王泰

理性主义 实证主义 哲学 软件工程

敏捷(组织)转型的6个准备条件

Bob Jiang

团队管理 敏捷 组织转型

【SpringBoot】为什么我的 CommandLineRunner 不 run ?

遇见

Java Spring Boot

我敢说 80% 的程序员都掉进了「老鼠赛跑」的陷阱

非著名程序员

读书笔记 程序员 程序人生 提升认知

Disruptor为何这么快

Rayjun

Java Disruptor

软件工程的史前时代 -- Therac-25 事件

王泰

质量管理 软件工程 软件危机 软件测试

个人知识管理精进指南

非著名程序员

学习 读书笔记 知识管理 认知提升

终极 Shell

池建强

Linux Shell

揭秘|为何程序员们能一直保持高收入?

丁长老

学习 程序员 写作 高薪

有关Kotlin Companion 我们需要了解到的几个知识点

王泰

Java 编程 kotlin 编程语言

Zoom的加密算法,到底有什么问题?

X.F

算法 编码习惯 产品设计 安全 编程语言

回"疫"录(1):口罩危机也许是一种进步

小天同学

疫情 回忆录 现实纪录

像经营咖啡店一样扩容 Web 系统

Rayjun

Web 扩容

【SpringBoot】为什么我的定时任务不执行?

遇见

Java Spring Boot 定时任务 debug

死磕Java并发编程(6):从源码分析清楚AQS

Seven七哥

Java Java并发 并发编程 AQS

LLVM 3.3完全兼容C++11_语言 & 开发_Jeff Martin_InfoQ精选文章