LLVM

LLVM
原作者クリス・ラトナーヴィクラム・アドヴェ
開発者LLVM 開発者グループ
初回リリース2003 (2003年
安定版リリース
21.1.8 [ 2 ] ウィキデータで編集する / 2025年12月16日
プレビューリリース
22.1.0-rc1 [ 3 ] ウィキデータで編集する / 2026年1月16日
リポジトリ
書かれたC++
オペレーティング·システムクロスプラットフォーム
タイプコンパイラ
ライセンスApache License 2.0 with LLVM Exceptions (v9.0.0以降) [ 4 ] レガシーライセンス: [ 5 ] UIUC ( BSDスタイル)
Webサイトwww.llvm.org

LLVMは、コンパイラツールチェーン技術の集合体[ 6 ]であり、あらゆるプログラミング言語のフロントエンドと、あらゆる命令セットアーキテクチャのバックエンドを開発するために使用できます。LLVMは、言語に依存しない中間表現(IR)を中心に設計されており、移植性の高い高水準アセンブリ言語として機能し、複数のパスにわたる様々な変換によって最適化できます。 [ 7 ] LLVMという名前は、もともとLow Level Virtual Machine(低レベル仮想マシン)の略でしたしかし、その後プロジェクトは拡大し、その名前はもはや頭字語ではなく、孤立した頭字語となっています。[ 8 ]

LLVM はC++で記述されており、コンパイル時リンク時実行時の最適化を目的として設計されています。 LLVM はもともとCおよび C++用に実装されていましたが、言語に依存しない設計により、さまざまなフロントエンドが生まれました。 LLVM を使用するコンパイラーを持つ言語 (または LLVM を直接使用しないが、コンパイルされたプログラムを LLVM IR として生成できる言語) には、ActionScriptAda.NETC#[ 9 ] [ 10 ] [ 11 ] Common Lisp[ 12 ] PicoLispCrystalCUDAD[ 13 ] Delphi[ 14 ] DylanForth[ 15 ] Fortran[ 16 ] FreeBASICFree PascalHalideHaskellIdris[ 17 ] Jai (最適化されたリリースビルドのみ)、Java バイトコードJuliaKotlinLabVIEWの G 言語、[ 18 ] [ 19 ]などがあります。 Objective-COpenCL[ 20 ] PostgreSQLのSQLおよびPL/pgSQL[ 21 ] Ruby[ 22 ] Rust[ 23 ] Scala[ 24 ] [ 25 ] Standard ML[ 26 ] SwiftXojoZig、Odin [ 27 ]

歴史

LLVMプロジェクトは、2000年にイリノイ大学アーバナ・シャンペーン校で、ヴィクラム・アドベクリス・ラトナーの指導の下で始まりました。LLVMはもともと、静的および動的プログラミング言語の動的コンパイル手法を調査するための研究基盤として開発されました。LLVMは、イリノイ大学/NCSAオープンソースライセンス[ 4 ]、つまり寛容なフリーソフトウェアライセンスの下でリリースされました。2005年、アップル社はラトナーを雇用し、アップルの開発システム内での様々な用途のためにLLVMシステムに取り組むチームを結成しました[ 28 ]。LLVMは、2011年のXcode 4以来、macOSiOS向けのアップルのXcode開発ツールの不可欠な部分となっています[ 29 ] 。

2006年、ラトナーはClangという新しいプロジェクトに着手しました。ClangフロントエンドとLLVMバックエンドの組み合わせは、Clang/LLVM、あるいは単にClangと呼ばれています。

LLVMという名称は、もともとLow Level Virtual Machine(低レベル仮想マシン)頭字語でした。しかし、LLVMプロジェクトは、現在の開発者のほとんどが仮想マシンと考えるものとはほとんど関係のない包括的なプロジェクトへと進化しました。このため、頭字語は「紛らわしく」「不適切」なものとなり、2011年以降、LLVMは「正式には頭字語ではなくなり」[ 30 ]、LLVM包括的なプロジェクトに適用されるブランドとなりました[ 31 ] 。このプロジェクトは、LLVM中間表現(IR)、LLVMデバッガ、 C++標準ライブラリのLLVM実装( C++11およびC++14の完全サポート[ 32 ])などを網羅しています。LLVMはLLVM Foundationによって管理されています。コンパイラエンジニアのTanya Lattnerが2014年に会長に就任し[ 33 ]、2025年11月現在も会長兼エグゼクティブディレクターを務めています[ 34 ]。

「LLVMの設計と実装」に対して、ACM (米国計算機学会)はVikram Adve、Chris Lattner、Evan Chengに2012年のACMソフトウェアシステム賞を授与しました。[ 35 ]

このプロジェクトは当初UIUCライセンスの下で利用可能でした。2019年にリリースされたバージョン9.0.0以降、[ 36 ] LLVMはApache License 2.0 with LLVM Exceptionsに再ライセンスされました。[ 4 ] 2022年11月時点で、約400の貢献が再ライセンスされていません。[ 37 ] [ 38 ]

特徴

LLVMは完全なコンパイラシステムの中間層を提供することができ、コンパイラから中間表現(IR)コードを受け取り、最適化されたIRを出力します。この新しいIRは、ターゲットプラットフォームのマシン依存アセンブリ言語コードに変換・リンクすることができます。LLVMはGNUコンパイラコレクション(GCC)ツールチェーンからIRを受け入れることができるため、そのプロジェクト用に作成された様々な既存のコンパイラフロントエンドと併用できます。LLVMはバージョン7.5以降のgccでもビルドできます。[ 39 ]

LLVM は、コンパイル時またはリンク時に 再配置可能なマシン コードを生成することも、実行時にバイナリ マシン コードを生成することもできます。

LLVM は、言語に依存しない命令セット型システムをサポートしています。[ 7 ]各命令は静的単一代入形式(SSA) です。つまり、各変数(型付きレジスタと呼ばれる) は 1 度代入され、その後凍結されます。これにより、変数間の依存関係の分析が簡素化されます。LLVM では、従来の GCC システムのようにコードを静的にコンパイルすることも、Javaのようにジャストインタイムコンパイル(JIT)によって IR からマシンコードに後でコンパイルすることもできます。型システムは、整数浮動小数点数などの基本型と、ポインタ、配列、ベクトル、構造体、関数の 5 つの派生構成ます具体的な言語の型構造は、LLVM でこれらの基本型を組み合わせることで表現できます。たとえば、C++ のクラスは、構造体、関数、関数ポインタの配列を組み合わせて表現できます。

LLVM JITコンパイラは、実行時にプログラムから不要な静的分岐を最適化できるため、プログラムに多くのオプションがあり、そのほとんどは特定の環境では不要であると容易に判断できる場合の部分評価に役立ちます。この機能は、 Mac OS X Leopard (v10.5)のOpenGLパイプラインで、不足しているハードウェア機能のサポートを提供するために使用されています。[ 40 ]

OpenGLスタック内のグラフィックスコードは中間表現のままにしておき、ターゲットマシンで実行する際にコンパイルすることができます。ハイエンドのグラフィックス処理装置(GPU)を搭載したシステムでは、結果として得られるコードは非常に軽量で、最小限の変更で命令をGPUに渡します。ローエンドのGPUを搭載したシステムでは、LLVMはGPUが内部で実行できない命令をエミュレートする、ローカルの中央処理装置(CPU)上で実行されるオプションのプロシージャをコンパイルします。LLVMは、Intel GMAチップセットを搭載したローエンドマシンのパフォーマンスを向上させました。同様のシステムがGallium3D LLVMpipeの下で開発され、 GNOMEシェルに組み込まれ、適切な3Dハードウェアドライバーがロードされていなくても実行できるようになりました。[ 41 ]

2011年には、GCCでコンパイルされたプログラムはLLVMでコンパイルされたプログラムよりも平均で10%優れたパフォーマンスを示しました。[ 42 ] [ 43 ] 2013年には、phoronixがLLVMがGCCに追いつき、ほぼ同等のパフォーマンスのバイナリをコンパイルしたと報告しました。[ 44 ]

コンポーネント

LLVM は複数のコンポーネントを含む包括的なプロジェクトになりました。

フロントエンド

LLVMはもともとGCCスタックの既存のコードジェネレータの代替として書かれたもので、 [ 45 ] GCCフロントエンドの多くがLLVMで動作するように修正され、現在は廃止されているLLVM-GCCスイートが生まれた。この修正には、GIMPLEからLLVMへのIRステップが含まれるのが一般的で、LLVMのオプティマイザとコード生成をGCCのGIMPLEシステムの代わりに使用できるようにした。AppleはXcode 4.x(2013年)を通じてLLVM-GCCの重要なユーザーであった。[ 46 ] [ 47 ] GCCフロントエンドのこの使用は一時的な手段と考えられていたが、LLVM/ Clangのより現代的でモジュール化されたコードベースとコンパイル速度 の出現により、ほとんど廃止された。

LLVM は現在、さまざまなフロントエンドを使用してAdaCC++DDelphiFortranHaskellJuliaObjective-CRust、およびSwiftのコンパイルをサポートしています。

LLVMへの関心が高まったことにより、多くの言語向けの新しいフロントエンドを開発する取り組みがいくつか行われています。そのようなフロントエンドの一つがClangです。これはC、C++、Objective-Cをサポートする新しいコンパイラです。主にAppleによってサポートされているClangは、GCCシステムのC/Objective-Cコンパイラを、統合開発環境(IDE)との統合が容易で、マルチスレッドサポートが幅広いシステムに置き換えることを目指しています。OpenMPディレクティブのサポートは、リリース3.8以降、 Clangに含まれています。[ 48 ]

Utrecht HaskellコンパイラはLLVM用のコードを生成できます。このジェネレータは開発初期段階でしたが、多くの場合、Cコードジェネレータよりも効率的でした。[ 49 ] Glasgow Haskellコンパイラ(GHC)のバックエンドはLLVMを使用しており、GHCまたはCコード生成後にコンパイルするネイティブコードと比較して、コンパイル済みコードの30%の高速化を実現しています。GHCに実装されている多くの最適化手法のうち、1つだけが欠けています。[ 50 ]

その他の多くのコンポーネントもさまざまな開発段階にあります。これには、Rustコンパイラ、Java バイトコードフロントエンド、共通中間言語(CIL) フロントエンド、Ruby 1.9 のMacRuby実装、 Standard MLのさまざまなフロントエンド、新しいグラフ カラーリングレジスタ アロケータなどが含まれますが、これらに限定されません。

中間表現

LLVM IRは、例えばradeonsiやllvmpipeなどで使用されています。どちらもMesa 3Dの一部です。

LLVMの中核は中間表現(IR)であり、これはアセンブリ言語に似た低水準プログラミング言語です。IRは、ターゲットのほとんどの詳細を抽象化する、強く型付けされたRISC(縮小命令セットコンピュータ)命令セットです。例えば、呼び出し規約はcall明示的な引数を持つ命令によって抽象化されますret。また、IRは固定のレジスタセットの代わりに、%0、%1などの形式の無限の一時変数セットを使用します。LLVMは、人間が読めるアセンブリ形式、[ 51 ] 、フロントエンドに適したメモリ内形式、そしてシリアル化のための高密度ビットコード形式という、同等の3つのIR形式をサポートしています。人間が読めるIR形式で記述された 単純な「Hello, world!」プログラム:

@.str =内部定数[ 14 x i8 ] c "Hello, world\0A\00"i32 @printf ( ptr , ...)を宣言します。i32を定義します@main ( i32 %argc , ptr %argv ) nounwind {エントリ: %tmp1 = getelementptr [ 14 x i8 ], ptr @.str , i32 0 , i32 0 %tmp2 = call i32 ( ptr , ...) @printf ( ptr %tmp1 ) nounwind ret i32 0 }

様々なターゲットで使用される様々な規約と提供される機能のため、LLVMは真にターゲットに依存しないIRを生成し、既存のルールに違反することなくそれをリターゲットすることはできません。ドキュメントに明示的に記載されているもの以外のターゲット依存性の例としては、オンライン配布を目的としたLLVM IRの完全にターゲットに依存しない変種である「wordcode」の2011年の提案が挙げられます。[ 52 ]より実用的な例としては、PNaClが挙げられます。[ 53 ]

LLVMプロジェクトでは、MLIR [ 54 ]と呼ばれる別のタイプの中間表現も導入されています。これは、Dialect [ 55 ]と呼ばれるプラグインアーキテクチャを採用することで、再利用可能で拡張可能なコンパイラインフラストラクチャの構築に役立ちます。これにより、多面体コンパイルなどの最適化プロセスでプログラム構造に関する高レベルの情報を利用できるようになります。

バックエンド

バージョン16のLLVMは IA -32x86-64ARMQualcomm HexagonLoongArchM68KMIPSNVIDIA Parallel Thread Execution(PTX、 LLVMのドキュメントではNVPTXとも呼ばれる)、PowerPCAMD TeraScale[ 56 ]最新のAMD GPU( LLVMのドキュメントではAMDGPUとも呼ばれる)、[ 57 ] SPARCz/Architecture (LLVMのドキュメントではSystemZとも呼ばれる)、XCoreなど、多くの命令セットをサポートしています。

一部の機能は一部のプラットフォームでは利用できません。ほとんどの機能はIA-32、x86-64、z/Architecture、ARM、PowerPCで利用可能です。[ 58 ] RISC-Vはバージョン7以降でサポートされています。

過去には、LLVMはCバックエンド、Cell SPUmblaze(MicroBlaze)[ 59 ]、AMD R600、DEC / Compaq AlphaAlpha AXP[ 60 ]Nios2 [ 61 ]などの他のバックエンドも完全にまたは部分的にサポートしていましたが、これらのハードウェアはほとんどが時代遅れであり、LLVM開発者はサポートとメンテナンスのコストがもはや正当化されないと判断しました。

LLVM はWebAssemblyもターゲットとしてサポートしており、コンパイルされたプログラムをGoogle Chrome / ChromiumFirefoxMicrosoft EdgeApple SafariWAVMなどの WebAssembly 対応環境で実行できます。LLVM 準拠の WebAssembly コンパイラは通常、C、C++、D、Rust、Nim、Kotlin などの他の言語で記述された、ほとんど変更されていないソースコードをサポートします。

LLVMマシンコード(MC)サブプロジェクトは、テキスト形式とマシンコード間でマシン命令を変換するためのLLVMのフレームワークです。以前は、LLVMはアセンブリをマシンコードに変換するために、システムアセンブラまたはツールチェーンによって提供されるアセンブラに依存していました。LLVM MCの統合アセンブラは、IA-32、x86-64、ARM、ARM64など、ほとんどのLLVMターゲットをサポートしています。MIPSの各種命令セットを含む一部のターゲットでは、統合アセンブリサポートが利用可能ですが、まだベータ段階です。

リンカ

lldサブプロジェクトは、LLVM用の組み込みでプラットフォームに依存しないリンカーを開発する試みです。[ 62 ] lldはサードパーティ製リンカーへの依存を排除​​することを目的としています。2017年5月現在、lldはELFPE/COFFMach-OWebAssembly [ 63 ]をサポートしています(完成度の高い順に)。lldはGNU ldのどちらのバージョンよりも高速です。

GNUリンカーとは異なり、lldはリンク時最適化(LTO)のサポートを組み込んでいます。これによりリンカープラグインの使用を回避できるため、コード生成が高速化されますが、一方で他のLTOとの相互運用性は損なわれます。[ 64 ]

C++標準ライブラリ

LLVMプロジェクトには、MITライセンスUIUCライセンスのデュアルライセンスであるlibc++というC++標準ライブラリの実装が含まれています。[ 65 ]

バージョン9.0.0以降、 LLVM例外付きのApache License 2.0に再ライセンスされました。 [ 4 ]

ポリー

これは、多面体モデルを使用した自動並列化とベクトル化に加えて、キャッシュ局所性の最適化スイートを実装します。[ 66 ]

デバッガ

C標準ライブラリ

llvm-libcはLLVMプロジェクトのために設計された、未完成で近々リリース予定のABI非依存のC標準ライブラリです。 [ 67 ]

デリバティブ

LLVMは寛容なライセンスを採用しているため、多くのベンダーが独自のLLVMチューニングフォークをリリースしています。これはLLVMのドキュメントでも公式に認められており、機能チェックではバージョン番号を使用しないことが推奨されています。[ 68 ]こうしたベンダーには以下が含まれます。

参照

文学

参考文献

  1. ^ 「LLVMロゴ」。LLVMコンパイラインフラストラクチャプロジェクト
  2. ^ "LLVM 21.1.8" . 2025年12月16日. 2025年12月16日閲覧
  3. ^ "LLVM 22.1.0-rc1" . 2026年1月16日. 2026年1月16日閲覧
  4. ^ a b c d "LICENSE.TXT" . llvm.org . 2019年9月24日閲覧
  5. ^ 「LLVM開発者ポリシー — LLVM 20.0.0gitドキュメント」 . llvm.org . 2024年11月9日閲覧
  6. ^ 「LLVMコンパイラインフラストラクチャプロジェクト」 。 2016年3月11日閲覧
  7. ^ a b「LLVM言語リファレンスマニュアル」 。 2019年6月9日閲覧
  8. ^ “LLVMコンパイラインフラストラクチャプロジェクト” . llvm.org . 2024年12月29日時点のオリジナルよりアーカイブ。 2025年1月13日閲覧
  9. ^ 「LLILCの発表 - .NET向けの新しいLLVMベースのコンパイラ」dotnetfoundation.org . 2021年12月12日時点のオリジナルよりアーカイブ。 2020年9月12日閲覧
  10. ^ 「Mono LLVM」 。 2013年3月10日閲覧
  11. ^ Lattner, Chris (2011). 「LLVM」 . Brown, Amy; Wilson, Greg (編). 『オープンソースアプリケーションのアーキテクチャ』 .
  12. ^ "Clasp" . Clasp Developers . 2024年12月2日閲覧
  13. ^ "LDC" . D Wiki . 2024年12月2日閲覧
  14. ^ 「LLVMベースのDelphiコンパイラ」 . Embarcadero . 2024年11月26日閲覧
  15. ^ “モブフォース” . GitHub。 2021年11月28日。
  16. ^ 「Flangコンパイラ」 . LLVMプロジェクト. 2024年12月2日閲覧
  17. ^ 「Rapid」 . Rapid . 2024年11月22日閲覧
  18. ^ William Wong (2017年5月23日). 「LabVIEW 2017とLabVIEW NXGの違いは何ですか?」 . Electronic Design .
  19. ^ 「NI LabVIEW コンパイラ: 内部構造」
  20. ^ Larabel, Michael (2018年4月11日). 「KhronosがLLVM/SPIR-Vトランスレータを公式発表」 . Phoronix.com .
  21. ^ “32.1. JITコンパイルとは?” . PostgreSQLドキュメント. 2020年11月12日. 2021年1月25日閲覧
  22. ^ 「機能」 . RubyMotion . Scratchwork Development LLC . 2017年6月17日閲覧。RubyMotionは、 LLVMベースの事前(AOT)コンパイラを使用して、プロジェクトのRubyソースコードをマシンコードに変換します。
  23. ^ 「コード生成 - Rustc開発ガイド」 . rust-lang.org . 2023年1月4日閲覧
  24. ^ Reedy, Geoff (2012年9月24日). 「ScalaからLLVMへのコンパイル」 . セントルイス、ミズーリ州、アメリカ合衆国. 2013年2月19日閲覧
  25. ^ 「Scala Native」 . 2023年11月26日閲覧
  26. ^ "LLVMCodegen" . MLton . 2024年11月26日閲覧
  27. ^ 「よくある質問」 . odin-lang.org . 2026年1月26日閲覧
  28. ^ Adam Treat (2005年2月19日)、Qt4のLLVMコンパイル用のmkspecsとパッチ、 2011年10月4日時点のオリジナルよりアーカイブ2012年1月27日閲覧。
  29. ^ 「開発者ツールの概要」。Apple Developer。Apple。 2011年4月23日時点のオリジナルよりアーカイブ。
  30. ^ Lattner, Chris (2011年12月21日). 「LLVMの名前」 . llvm-dev (メーリングリスト) . 2016年3月2日閲覧「LLVM」は正式には頭字語ではなくなりました。かつてLLVMの略称として使われていたこともあり、その頭字語は紛らわしく、ほぼ最初から不適切なものでした。:) LLVMが他のサブプロジェクトを包含するようになるにつれて、その有用性は低下し、意味を失っていきました。
  31. ^ Lattner, Chris (2011年6月1日). 「LLVM」 . Brown, Amy; Wilson, Greg (編).オープンソースアプリケーションのアーキテクチャ. Lulu.com. ISBN 978-1257638017「LLVM」という名前はかつては頭字語でしたが、現在は包括的なプロジェクトのブランドとしてのみ使用されています
  32. ^ "「libc++」C++ 標準ライブラリ
  33. ^ Lattner, Chris (2014年4月3日). 「LLVM Foundation」 . LLVMプロジェクトブログ.
  34. ^ 「取締役会」 . LLVM Foundation . 2025年9月18日閲覧
  35. ^ 「ACMソフトウェアシステム賞」。ACM。
  36. ^ Wennborg, Hans (2019年9月19日). 「[llvm-announce] LLVM 9.0.0 リリース」 .
  37. ^ “Relicensing Long Tail” . foundation.llvm.org . 2022年11月11日. 2024年5月13日時点のオリジナルよりアーカイブ。 2022年4月1日閲覧
  38. ^ 「LLVMの再ライセンス - ロングテール」 . Google Docs . LLVMプロジェクト. 2022年11月27日閲覧
  39. ^ “⚙ D156286 [docs] GCCの最小バージョンを7.5に変更” . reviews.llvm.org . 2023年7月28日閲覧
  40. ^ Lattner, Chris (2006年8月15日). 「AppleにおけるLLVMの優れた活用法:OpenGLスタック」 . llvm-dev (メーリングリスト) . 2016年3月1日閲覧
  41. ^ Michael Larabel、「GNOME Shell は GPU ドライバーのサポートなしでも動作します」 phoronix、2011 年 11 月 6 日
  42. ^ Makarov, V. 「SPEC2000: x86におけるLLVM-2.9とGCC4.6.1の比較」2011年10月3日閲覧
  43. ^ Makarov, V. 「SPEC2000: x86_64におけるLLVM-2.9とGCC4.6.1の比較」2011年10月3日閲覧
  44. ^ Larabel, Michael (2012年12月27日). 「LLVM/Clang 3.2 コンパイラが GCC と競合」 . 2013年3月31日閲覧
  45. ^ Lattner, Chris ; Adve, Vikram (2003年5月). 「次世代GCCのアーキテクチャ」 . 第1回GCC開発者サミット. 2009年9月6日閲覧
  46. ^ 「LLVM コンパイラの概要」 . developer.apple.com .
  47. ^Xcode 5 リリースノート」。Apple Inc.
  48. ^ 「Clang 3.8 リリースノート」 。 2016年8月24日閲覧
  49. ^ 「HaskellをLLVMにコンパイルする」2009年2月22日閲覧。
  50. ^ 「LLVMプロジェクトブログ: グラスゴーHaskellコンパイラとLLVM」 2010年5月17日. 2010年8月13日閲覧
  51. ^ 「LLVM言語リファレンスマニュアル」 . LLVM.org . 2023年1月10日.
  52. ^ Kang, Jin-Gu. 「Wordcode: よりターゲットに依存しないLLVMビットコード」(PDF) . 2019年12月1日閲覧
  53. ^ 「PNaCl: Portable Native Client Executables」(PDF)2012年5月2日時点のオリジナル(PDF)からアーカイブ。 2012年4月25日閲覧
  54. ^ "MLIR" . mlir.llvm.org . 2022年6月7日閲覧
  55. ^ 「方言 - MLIR」 . mlir.llvm.org . 2022年6月7日閲覧
  56. ^ Stellard, Tom (2012年3月26日). 「[LLVMdev] RFC: R600、AMD GPU向けの新しいバックエンド」 . llvm-dev (メーリングリスト).
  57. ^ 「AMDGPU バックエンドのユーザー ガイド — LLVM 15.0.0git ドキュメント」
  58. ^ターゲット固有の実装ノート: ターゲット機能マトリックス// LLVM ターゲットに依存しないコード ジェネレーター、LLVM サイト。
  59. ^ 「llvmからmblazeバックエンドを削除する」 GitHub 2013年7月25日。 2020年1月26日閲覧
  60. ^ 「Alphaバックエンドの削除」 GitHub 2011年10月27日2020年1月26日閲覧
  61. ^ 「[Nios2] Nios2バックエンドの削除」 . GitHub . 2019年1月15日. 2020年1月26日閲覧
  62. ^ 「lld - LLVMリンカー」 . LLVMプロジェクト. 2017年5月10日閲覧
  63. ^ 「WebAssembly lld ポート」
  64. ^ 「42446 – lld は gcc LTO ファイルを処理できません。bugs.llvm.org
  65. ^ "「libc++」C++ 標準ライブラリ
  66. ^ 「Polly - LLVM の多面体最適化」
  67. ^ "llvm-libc: ISO C準拠の標準ライブラリ — libc 15.0.0gitドキュメント" . libc.llvm.org . 2022年7月18日閲覧
  68. ^ 「Clang言語拡張」。Clang 12ドキュメントベンダーによって番号体系が異なるため、言語機能の確認にはマーケティングバージョン番号を使用しないでください。代わりに、機能チェックマクロを使用してください。
  69. ^ “apple/llvm-project” . Apple. 2020年9月5日.
  70. ^ 「IBM C/C++およびFortranコンパイラーがLLVMオープンソースインフラストラクチャを採用」 2022年7月29日。
  71. ^ 「Intel C/C++コンパイラー、LLVMの採用を完了」 Intel 20218月17日閲覧
  72. ^ "lanl/kitsune" . ロスアラモス国立研究所. 2020年2月27日.
  73. ^ 「NVVM IR仕様1.5」現在のNVVM IRはLLVM 5.0に基づいています。
  74. ^ ps4用開発者ツールチェーン(PDF) 、 2015年2月24日閲覧
  75. ^ Lattner, Chris (2012年3月15日). 「第11章」 .オープンソースアプリケーションのアーキテクチャ. Amy Brown, Greg Wilson. ISBN 978-1257638017