ユーザーガイド

注記: 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パスの作成

新しいパス マネージャーでLLVM変換を作成する方法に関する情報。

LLVMパスの作成 (従来のPMバージョン)

従来のパス マネージャーでLLVM変換と分析を作成する方法に関する情報。

LLVMの分析と変換パス

LLVMに実装されている最適化と分析のリスト。

スタック安全分析

このドキュメントでは、ローカル変数のスタック安全分析の設計について説明します。

MergeFunctionsパス、その仕組み

関数のマージ最適化について説明します。

LLVMエイリアス分析インフラストラクチャ

新しいエイリアス分析実装を作成する方法、または既存の分析を使用する方法に関する情報。

MemorySSA

LLVMのMemorySSAユーティリティと、その使用方法に関する情報。

LLVMループの用語(および標準形)

LLVMで使用されるループと関連用語について説明したドキュメント。

LLVMサイクルの用語

サイクルをループの一般化として説明したドキュメント。

LLVMの自動ベクトル化

このドキュメントでは、LLVMにおけるベクトル化の現状について説明します。

LLVMリンク時最適化:設計と実装

このドキュメントでは、LLVMモジュール間オプティマイザとリンカ間のインターフェースとその設計について説明します。

LLVM goldプラグイン

Linuxでリンク時最適化を使用してプログラムをビルドする方法。

備考

LLVMでの備考の実装に関するリファレンス。

LLVMを使用したソースレベルデバッグ

このドキュメントでは、LLVMソースレベルデバッガの設計と哲学について説明します。

デバッグ情報の更新方法

このドキュメントでは、さまざまな種類のコード変換でデバッグ情報を正しく更新する方法について説明します。

デバッグ情報のための命令参照

このドキュメントでは、LLVMが値の追跡、つまり命令参照を使用して、コンパイルの最終段階でデバッグ情報の変数の場所を決定する方法について説明します。

デバッグ情報の移行:組み込み関数からレコードへ

これは、dbg.valueなどの組み込み関数を使用したデバッグ情報から、非命令DbgRecordオブジェクトの使用に移行する方法を説明した移行ガイドです。

インストゥルメンテーションプロファイルフォーマット

このドキュメントでは、インストゥルメンテーションベースのプロファイルの2つのバイナリ形式について説明します。

InstCombineコントリビューターガイド

このドキュメントでは、InstCombineおよび関連パスへの貢献に関するガイドラインを規定しています。

コード生成

LLVMバックエンドの作成

マシンターゲット向けにLLVMバックエンドを作成する方法に関する情報。

LLVMターゲット非依存コードジェネレータ

LLVMコードジェネレータの設計と実装。LLVMを新しいアーキテクチャにリターゲットしたり、新しいcodegenパスを設計したり、既存のコンポーネントを強化したりする場合に役立ちます。

TableGen

LLVMコードジェネレータで多用されるTableGenツールについて説明します。

GlobalISel

MIRパターン

MIRパターンの設計と使用方法について説明します。

JIT

MCJITの設計と実装

MCJIT実行エンジンの内部動作について説明します。

ORCの設計と実装

ORC APIの設計と実装について説明します。いくつかの使用例と、ORCv1からORCv2に移行するユーザー向けのガイドが含まれています。

JITLinkとORCのObjectLinkingLayer

JITLinkライブラリ、ORCの新しいJITリンカの設計とAPIについて説明します。

JITedコードのデバッグ

GDBを使用してJITedコードをデバッグする方法。

GDBを使用してJITedコードをデバッグする方法。

追加トピック

CommandLine 2.0ライブラリマニュアル

コマンドライン解析ライブラリの使用方法に関する情報を提供します。

LLVMの拡張:命令、組み込み関数、型の追加など

LLVMに命令と組み込み関数を追加する方法については、こちらをご覧ください。

制約付き浮動小数点組み込み関数の追加方法

LLVMに新しい制約付き数学組み込み関数を追加する際に必要な手順を示します。

Windows Itaniumアプリケーションのビルド方法。

Windows Itanium環境の構築に関する注意事項。

Arm用Compiler-rt組み込み関数をクロスコンパイルする方法

Arm用compiler-rt組み込み関数のクロスビルドとテストに関する注意事項。

ビッグエンディアンモードでのARM NEON命令の使用

ビッグエンディアンARMターゲットでNEON命令を生成するためのLLVMのサポートはやや直観的ではありません。このドキュメントでは、実装と理論的根拠について説明します。

LLVMにおけるAArch64スケーラブル行列拡張のサポート

AArch64 SME ACLEとABIのLLVMサポート

clangを使ったCUDAのコンパイル

CUDAのLLVMサポート

NVPTXバックエンドのユーザーガイド

このドキュメントでは、NVPTXバックエンドを使用してGPUカーネルをコンパイルする方法について説明します。

AMDGPUバックエンドのユーザーガイド

このドキュメントでは、AMDGPUバックエンドを使用してGPUカーネルをコンパイルする方法について説明します。

ヘテロジニアスデバッグのためのDWARF拡張

このドキュメントでは、AMDGPUバックエンドなどのターゲットのヘテロジニアスデバッグをサポートするためのDWARF拡張について説明します。

DWARF式スタックでの場所記述の許可

このドキュメントでは、DWARF式スタックでの場所記述を許可するためのDWARF拡張について説明します。ヘテロジニアスデバッグのためのDWARF拡張の一部です。

SPIR-Vターゲットのユーザーガイド

このドキュメントでは、SPIR-Vターゲットを使用してGPUカーネルをコンパイルする方法について説明します。

DirectXターゲットのユーザーガイド

このドキュメントでは、DirectXターゲットを使用してDirectXランタイム用のGPUコードをコンパイルする方法について説明します。

RISC-Vターゲットのユーザーガイド

このドキュメントでは、RISC-Vターゲットの使用方法について説明します。

RISC-Vベクトル拡張

このドキュメントでは、RISC-Vベクトル拡張をLLVM IRでどのように表現できるか、およびバックエンドでどのようにコードが生成されるかについて説明します。

サンドボックスIR

このドキュメントでは、LLVM IR上のトランザクションレイヤーであるサンドボックスIRの設計と使用方法について説明します。