LLVMコンパイラインフラストラクチャ
サイトマップ
ダウンロード!
このサイトを検索


役立つリンク
リリースメール
llvm-adminチームが管理
llvm-adminチーム
LLVMの機能

CおよびC++向けのLLVMコンパイラシステムには、以下が含まれます。

  • C、C++、Objective-C、Fortranなどのフロントエンド。これらはANSI標準のCおよびC++言語をサポートします。さらに、多くのGCC拡張機能がサポートされています。
  • オンラインとオフラインの両方のコード表現として機能するLLVM命令セットの安定した実装。アセンブリ(ASCII)およびバイトコード(バイナリ)のリーダーとライター、および検証ツールが含まれます。
  • 依存関係に基づいてパス(分析、変換、コード生成パスを含む)を自動的にシーケンスし、効率のためにパイプライン化する強力なパス管理システム。
  • 幅広いグローバルスカラー最適化。
  • 高度なプログラム全体のポインター解析、コールグラフ構築、プロファイルガイド付き最適化のサポートを含む、豊富な分析および変換機能を備えたリンク時プロシージャ間最適化フレームワーク。
  • X86、X86-64、PowerPC、PowerPC-64、ARM、Thumb、SPARC、Alpha、CellSPU、MIPS、MSP430、SystemZ、WebAssembly、XCoreを現在サポートする、簡単にリターゲット可能なコードジェネレーター。
  • 現在、X86、X86-64、ARM、AArch64、Mips、SystemZ、PowerPC、およびPowerPC-64をサポートするJust-In-Time(JIT)コード生成システム。
  • DWARFデバッグ情報の生成のサポート。
  • gprofに類似したプロファイリングシステム。
  • 多数のベンチマークコードとアプリケーションを備えたテストフレームワーク。
  • LLVMコンポーネントの迅速な開発を簡素化するためのAPIとデバッグツール。
LLVMシステムの強み
  1. LLVMは、厳密に定義されたセマンティクスを持つシンプルな低レベル言語を使用します。
  2. CおよびC++のフロントエンドが含まれています。Java、Scheme、およびその他の言語のフロントエンドは開発中です。
  3. スカラー、プロシージャ間、プロファイル駆動型、およびいくつかの単純なループ最適化を含む、積極的なオプティマイザーが含まれています。
  4. リンク時、インストール時、実行時、およびオフライン最適化を含む、ライフロングコンパイルモデルをサポートします。
  5. LLVMは、正確なガベージコレクションを完全にサポートしています。
  6. LLVMコードジェネレーターは比較的簡単にリターゲットでき、強力なターゲット記述言語を利用しています。
  7. LLVMには豊富なドキュメントがあり、さまざまな種類の多くのプロジェクトをホストしています。
  8. 多くのサードパーティユーザーは、LLVMは操作や開発が簡単であると主張しています。たとえば、(削除された)Stackerフロントエンドは、LLVMについて何も知らなかった人が4日間で記述しました。さらに、LLVMには開発を容易にするツールがあります。
  9. LLVMは活発に開発されており、常に拡張、強化、改善されています。開発の速度を確認するには、左側のバーのステータスアップデートを参照してください。
  10. LLVMは、OSI承認済みの「Apache License Version 2.0」ライセンスの下で無料で利用できます。
  11. LLVMは現在、多くの営利、非営利、または学術団体で使用されており、多くの拡張機能や新機能を提供しています。
LLVMの対象者

LLVMは、さまざまな種類のプロジェクトで使用できます。あなたが以下に該当する場合、LLVMに興味があるかもしれません。

  • CおよびC++プログラムのコンパイル時、リンク時(プロシージャ間)、および実行時変換に興味があるコンパイラ研究者。
  • 移植可能で言語に依存しない命令セットとコンパイルフレームワークに関心のある仮想マシン研究者/開発者。
  • コンパイラ/ハードウェア技術に関心のあるアーキテクチャ研究者。
  • 静的分析や計測に関心のあるセキュリティ研究者。
  • コンパイラ変換の迅速なプロトタイピングのためのシステムに関心のあるインストラクターまたは開発者。
  • コードからより良いパフォーマンスを引き出したいエンドユーザー。
さらに詳しく知りたいですか?

オンラインでドキュメントを閲覧したり、WebブラウザーでLLVMを試したりソースコードをダウンロードしたりできます。