LLVM 3.3完全兼容C++11

简介: 作者 Jeff Martin ,译者 臧秀涛 发布于 七月 01, 2013 最近发布的LLVM 3.3带来了大量新特性,其中包括通过Clang子项目实现的完全兼容C++11的编译器。

作者 Jeff Martin ,译者 臧秀涛 发布于 七月 01, 2013

最近发布的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


目录
相关文章
|
16天前
|
编译器 API C语言
深入探究Qt与C++标准的兼容之旅
深入探究Qt与C++标准的兼容之旅
116 3
|
16天前
|
设计模式 算法 测试技术
C++ 创建兼容多个IPC机制的上层接口
C++ 创建兼容多个IPC机制的上层接口
62 1
C++ 继承与派生中的赋值兼容规则问题探究
C++ 继承与派生中的赋值兼容规则问题探究
142 0
C++ 继承与派生中的赋值兼容规则问题探究
|
安全 前端开发 网络安全
【Example】C++ 单例模式 演示代码 (被动模式、兼容VS2022编译)
什么是 Single Instance 单例模式? 单例模式是计算机程序设计当中一种常用思路,即软件系统运行当中,该类只允许拥有一个实例,且它必须在初始化的时候自己创建自己的实例。
154 0
|
数据安全/隐私保护 C语言 C++
【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
505 0
|
C语言 C++
【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)
【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)
154 0
|
编译器 C语言 Android开发
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(三)
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(三)
210 0
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(三)
|
C语言 C++
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(二)
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(二)
211 0
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(二)
|
Android开发 C++
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(一)
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(一)
148 0
【C++ 语言】 C 与 C++ 兼容 ( extern "C" )(一)