LLVM 项目博客

LLVM 项目新闻和来自底层的细节

  • LLVM IR 中的可扩展元数据

    前端作者经常会要求能够在 LLVM IR 中添加某种元数据。此元数据可用于影响特定语言的优化过程(例如,C 中的基于类型的别名分析),标记自定义代码生成器的信息或将信息传递给链接时优化。

    阅读更多…
  • LLVM MC 项目简介

    LLVM 的机器代码(简称 MC)子项目是为了解决汇编、反汇编、目标文件格式处理以及 CPU 指令集级工具使用的其他相关领域中的一系列问题而创建的。

    阅读更多…
  • LLVM 中的 ARM 高级 SIMD(NEON)内在函数和类型

    LLVM 现在支持 ARM 为高级 SIMD(又称“NEON”)指令集定义的所有内在函数,但如果您从 GCC 迁移到 LLVM,则可能会遇到一些实现差异。

    阅读更多…
  • 这段代码有什么问题?

    今天,IRC 上的一位用户给我发送了这个有趣的 KLEE 示例,我认为它足够可爱,值得我发布。如果您不熟悉 KLEE,它是一个用于对 LLVM 代码进行符号执行的工具。

    阅读更多…
  • Clang 错误恢复的惊人壮举

    除了在代码有效时解析源文件并生成机器代码之外,编译器前端的职责还包括检测无效代码并提供提示来解释问题所在,以便您可以解决问题。

    阅读更多…
  • Dragonegg 成功自托管!

    Dragonegg GCC 插件可以自托管!Dragonegg 允许您将 LLVM 优化器与 GCC-4.5 一起使用,类似于 llvm-gcc,但与 llvm-gcc 不同的是,它不涉及修改 GCC,这得益于新的 GCC 插件基础架构(目前只需要一个小的补丁)。

    阅读更多…
  • Clang 成功自托管!

    今天,Clang 完成了它的第一个完全自托管!我们用 Clang(超过 550k 行 C++ 代码)构建了所有 LLVM 和 Clang。生成的二进制文件通过了 Clang 和 LLVM 的所有回归测试套件,而用 Clang 构建的 Clang 随后可以再次构建所有 LLVM 和 Clang。

    阅读更多…
  • x86 反汇编器

    反汇编器使二进制分析成为可能。使用可靠的反汇编器,您可以解决从跟踪程序调用堆栈回溯到高级问题,到找出编译器如何展开紧密的浮点循环或声明变量为常量在优化链的另一端实际上有什么优势等低级问题。

    阅读更多…
  • LLVM IR 中的标签地址和间接跳转

    GCC 编译器支持一个有用的“标签作为值”扩展,它允许代码获取标签的地址,然后稍后无条件跳转到指定为 void* 的地址。

    阅读更多…
  • Clang 构建 LLVM

    恰逢圣诞节假期,Clang 项目取得了重大里程碑:Clang 现在可以构建所有 LLVM 和 Clang!生成的用 Clang 构建的 Clang 还没有功能,所以这个 "

    阅读更多…