使用者指南¶
注意:如果您是僅對使用基於 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 之上的事務層。