BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

LLVM 3.3完全兼容C++11

| 作者 Jeff Martin 关注 16 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2013年7月2日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT