使用者指南

注意:如果您只是想使用基於 LLVM 的編譯器,則應查看 Clang。此處的文件適用於需要使用中介 LLVM 表示法的使用者。

Clang

如何在 ARM 上建置

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

如何使用 Profile-Guided Optimizations 建置 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 的 Dockerfiles 指南

使用 LLVM 提供的 Dockerfiles 的參考。

支援函式庫

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

進階建置設定

本文件描述更進階的建置設定。

最佳化

編寫 LLVM Pass

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

編寫 LLVM Pass (舊版 PM 版本)

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

LLVM 的分析與轉換 Pass

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

堆疊安全分析

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

MergeFunctions pass,其運作方式

描述函數合併最佳化。

LLVM 別名分析基礎架構

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

MemorySSA

關於 LLVM 中的 MemorySSA 工具以及如何使用它的資訊。

LLVM 迴圈術語(與標準形式)

一份文件,描述 LLVM 中使用的迴圈和相關術語。

LLVM 週期術語

一份文件,描述作為迴圈概括化的週期。

LLVM 中的自動向量化

本文件描述 LLVM 中向量化的當前狀態。

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

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

LLVM gold 外掛程式

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

註解

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

使用 LLVM 進行原始碼層級除錯

本文件描述 LLVM 原始碼層級除錯器的設計和理念。

如何更新除錯資訊

本文件說明如何在各種程式碼轉換中正確更新除錯資訊。

除錯資訊的指令參照

本文件解釋 LLVM 如何使用值追蹤或指令參照,以在編譯的最後階段確定除錯資訊的變數位置。

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

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

Instrumentation 描述檔格式

本文件解釋了基於 instrumentation 的描述檔的兩種二進制格式。

InstCombine 貢獻者指南

本文件說明了 InstCombine 和相關 pass 的貢獻指南。

程式碼生成

編寫 LLVM 後端

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

LLVM 目標獨立程式碼產生器

LLVM 程式碼產生器的設計與實作。如果您正在將 LLVM 重新定向到新的架構、設計新的程式碼生成 pass 或增強現有組件,這會很有用。

TableGen

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

GlobalISel

MIRPatterns

描述 MIR Patterns 的設計以及如何使用它們。

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 Builtins

關於為 Arm 交叉建置和測試 compiler-rt builtins 的注意事項。

在大端模式下使用 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 目標使用者指南

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

RISC-V 向量擴展

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

Sandbox IR

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

LLVM 中的遙測框架

本文件描述了 LLVM 中的遙測框架。