使用者指南

注意:如果您是僅對使用基於 LLVM 的編譯器感興趣的使用者,則應改為查看 Clang。此處的說明文件適用於需要使用 LLVM 中間表示法的使用者。

Clang

如何在 ARM 上建置

關於在 ARM 上建置和測試 LLVM/Clang 的注意事項。

如何使用設定檔導向最佳化建置 Clang 和 LLVM

關於使用 PGO 建置 LLVM/Clang 的注意事項。

如何使用 Clang/LLVM 交叉編譯 Clang/LLVM

關於交叉建置和測試 LLVM/Clang 的注意事項。

如何建置 C、C++、ObjC 和 ObjC++ 前端

從原始碼建置 clang 前端的說明。

LLVM 程式碼覆蓋率對應格式

這描述了 LLVM 的程式碼覆蓋率對應使用的格式和編碼。

控制流程驗證工具設計文件

控制流程完整性驗證工具的說明。

LLVM 組建和發行版

建置 LLVM 發行版

使用 LLVM 的 CMake 建置系統封裝和發布基於 LLVM 的工具的最佳實務指南。

使用 CMake 建置 LLVM

針對使用 CMake 建置系統 的使用者的主要入門指南的補充。

建置 LLVM 的 Dockerfile 指南

使用 LLVM 提供的 Dockerfile 的參考。

支援函式庫

本文檔描述了 LLVM 支援函式庫 (lib/Support) 以及如何保持 LLVM 原始碼的可移植性。

進階組建配置

本文檔描述了更進階的組建配置。

優化

撰寫 LLVM Pass

關於如何在新的 Pass 管理器下撰寫 LLVM 轉換的資訊。

撰寫 LLVM Pass(舊版 PM 版本)

關於如何在舊版 Pass 管理器下撰寫 LLVM 轉換和分析的資訊。

LLVM 的分析和轉換 Pass

LLVM 中實作的優化和分析列表。

堆疊安全分析

本文檔描述了區域變數的堆疊安全分析設計。

MergeFunctions Pass,其工作原理

描述函數合併優化。

LLVM 別名分析基礎結構

關於如何撰寫新的別名分析實作或如何使用現有分析的資訊。

記憶體 SSA

關於 LLVM 中記憶體 SSA 工具的資訊,以及如何使用它。

LLVM 迴圈術語(和規範形式)

描述 LLVM 中使用的迴圈和相關術語的文檔。

LLVM 循環術語

將循環描述為迴圈概括的文檔。

LLVM 中的自動向量化

此文件描述了 LLVM 中向量化的現狀。

LLVM 連結時最佳化:設計與實作

此文件描述了 LLVM 模組間最佳化器和連結器之間的介面及其設計

LLVM gold 外掛

如何在 Linux 上使用連結時最佳化建置程式。

備註

關於 LLVM 中備註實作的參考。

使用 LLVM 進行原始碼級除錯

此文件描述了 LLVM 原始碼級除錯器背後的設計和理念。

如何更新除錯資訊

此文件指定如何在各種程式碼轉換中正確更新除錯資訊。

除錯資訊的指令參考

此文件說明 LLVM 如何使用值追蹤或指令參考,在編譯的最後階段確定除錯資訊的變數位置。

除錯資訊遷移:從內建函式到記錄

這是一份遷移指南,描述如何從使用內建函式(例如 dbg.value)的除錯資訊遷移到使用非指令 DbgRecord 物件。

檢測設定檔格式

此文件說明了兩種基於檢測的設定檔的二進制格式。

InstCombine 貢獻者指南

此文件指定了對 InstCombine 和相關流程的貢獻指南。

程式碼產生

編寫 LLVM 後端

有關如何為機器目標編寫 LLVM 後端的資訊。

LLVM 目標獨立程式碼產生器

LLVM 程式碼產生器的設計與實作。如果您正在將 LLVM 移植到新的架構、設計新的程式碼產生流程或增強現有元件,這將非常有用。

TableGen

描述了 TableGen 工具,LLVM 程式碼產生器大量使用該工具。

GlobalISel

MIR 模式

描述了 MIR 模式的設計以及如何使用它們。

JIT

MCJIT 設計與實作

描述了 MCJIT 執行引擎的內部工作原理。

ORC 設計與實作

描述了 ORC API 的設計和實作,包括一些使用範例,以及從 ORCv1 遷移到 ORCv2 的使用者指南。

JITLink 和 ORC 的 ObjectLinkingLayer

描述了 JITLink 程式庫(ORC 的新 JIT 連結器)的設計和 API。

除錯 JIT 程式碼

如何使用 GDB 除錯 JIT 程式碼。

如何使用 GDB 除錯 JIT 程式碼。

其他主題

CommandLine 2.0 程式庫手冊

提供有關使用命令列解析程式庫的資訊。

擴充 LLVM:新增指令、內建函式、類型等

查看此處以了解如何將指令和內建函式新增到 LLVM。

如何新增受限浮點內建函式

給出了向 LLVM 新增新的受限數學內建函式時所需的步驟。

如何建置 Windows Itanium 應用程式。

有關組裝 Windows Itanium 環境的注意事項。

如何為 Arm 交叉編譯 Compiler-rt 內建函式

有關交叉建置和測試 Arm 的 Compiler-rt 內建函式的注意事項。

在大端模式下使用 ARM NEON 指令

LLVM 對在大端 ARM 目標上產生 NEON 指令的支援有些不直觀。本文檔說明了其實作和原理。

LLVM 中對 AArch64 可擴展矩陣擴展的支援

LLVM 對 AArch64 SME ACLE 和 ABI 的支援。

使用 clang 編譯 CUDA

LLVM 對 CUDA 的支援。

NVPTX 後端使用者指南

此文件描述了如何使用 NVPTX 後端編譯 GPU 核心。

AMDGPU 後端使用者指南

此文件描述了如何使用 AMDGPU 後端編譯 GPU 核心。

用於異構除錯的 DWARF 擴展

此文件描述了 DWARF 擴展,以支援對 AMDGPU 後端等目標進行異構除錯。

允許在 DWARF 表達式堆疊上使用位置描述

本文件描述了一個 DWARF 擴展,允許在 DWARF 表達式堆疊上使用位置描述。它是 異構除錯的 DWARF 擴展 的一部分。

SPIR-V 目標用戶指南

本文件描述如何使用 SPIR-V 目標編譯 GPU 核心。

DirectX 目標用戶指南

本文件描述如何使用 DirectX 目標編譯 DirectX 運行時的 GPU 程式碼。

RISC-V 目標用戶指南

本文件描述如何使用 RISCV-V 目標。

RISC-V 向量擴展

本文件描述如何在 LLVM IR 中表達 RISC-V 向量擴展,以及如何在後端生成程式碼。

沙盒 IR

本文件描述了沙盒 IR 的設計和使用,沙盒 IR 是 LLVM IR 之上的事務層。