LLVM 18.1.8 Toolset の使用
LLVM 18.1.8 Toolset のインストールおよび使用
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 LLVM Toolset リンクのコピーリンクがクリップボードにコピーされました!
LLVM Toolset は、Red Hat Enterprise Linux (RHEL) 上の開発者向けの Red Hat 製品です。これは、LLVM コンパイラーインフラストラクチャーフレームワーク、C 言語および C++ 言語用の Clang コンパイラー、LLDB デバッガー、コード解析の関連ツールを提供します。
Red Hat Enterprise Linux 8 では、LLVM Toolset はモジュールとして利用できます。LLVM Toolset は、Red Hat Enterprise Linux 9 のパッケージとして利用できます。
1.1. LLVM Toolset コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
以下のコンポーネントは、LLVM Toolset の一部として利用できます。
| 名前 | バージョン | 説明 |
|---|---|---|
| clang | 18.1.8 | C および C++ の LLVM コンパイラーフロントエンド。 |
| lldb | 18.1.8 | LLVM の一部を使用した C および C++ デバッガー。 |
| compiler-rt | 18.1.8 | LLVM および Clang のランタイムライブラリー。 |
| llvm | 18.1.8 | 一連のモジュールおよび再利用可能なコンパイラーおよびツールチェーン技術。 |
| libomp | 18.1.8 | 並列プログラミングに Open MP API 仕様を使用するためのライブラリー。 |
| lld | 18.1.8 | LLVM リンカー。 |
| python-lit | 18.1.8 | LLVM および Clang ベースのテストスイート用のソフトウェアテストツール。 |
CMake ビルドマネージャーは、LLVM Toolset の一部ではありません。Red Hat Enterprise Linux 8 では、CMake がシステムリポジトリーから利用できます。Red Hat Enterprise Linux 9 では、CMake がシステムリポジトリーから利用できます。CMake のインストール方法は、CMake ビルドマネージャーのインストール を参照してください。
1.2. LLVM Toolset の互換性 リンクのコピーリンクがクリップボードにコピーされました!
LLVM Toolset は、Red Hat Enterprise Linux 8 および Red Hat Enterprise Linux 9 では、以下のアーキテクチャーで利用できます。
- AMD および Intel 64 ビット
- 64-bit ARM
- IBM Power Systems (リトルエンディアン)
- 64 ビット IBM Z
1.3. LLVM Toolset のインストール リンクのコピーリンクがクリップボードにコピーされました!
すべての開発ツールおよびデバッグツールと依存パッケージを含む LLVM Toolset をインストールするには、以下の手順を実行します。
前提条件
- 利用可能な Red Hat Enterprise Linux のすべての更新がインストールされている。
手順
Red Hat Enterprise Linux 8 で、以下のコマンドを実行して llvm-toolset モジュールをインストールします。
yum module install llvm-toolset
# yum module install llvm-toolset
LLDB デバッガーまたは python3-lit パッケージは Red Hat Enterprise Linux 8 にインストールされません。LLDB デバッガーと python3-lit パッケージをインストールするには、次を実行します。
yum install lldb python3-lit
# yum install lldb python3-lit
Red Hat Enterprise Linux 9 で、以下のコマンドを実行して llvm-toolset パッケージをインストールします。
dnf install llvm-toolset
# dnf install llvm-toolset
LLDB デバッガーまたは python3-lit パッケージは Red Hat Enterprise Linux 9 にインストールされません。LLDB デバッガーと python3-lit パッケージをインストールするには、次を実行します。
dnf install lldb python3-lit
# dnf install lldb python3-lit
1.4. CMake ビルドマネージャーのインストール リンクのコピーリンクがクリップボードにコピーされました!
CMake ビルドマネージャーは、ソースコードのビルドプロセスをコンパイラーとは別に管理するツールです。CMake は、ソースコードのコンパイル、ライブラリーの作成、ラッパーの生成、実行可能なファイルの構築を行うネイティブビルド環境を生成できます。
CMake ビルドマネージャーをインストールするには、以下の手順を実行します。
前提条件
-
LLVM Toolset がインストールされている。
詳細は、LLVM Toolset のインストール を参照してください。
手順
CMake をインストールするには、以下のコマンドを実行します。
- Red Hat Enterprise Linux 8 の場合
yum install cmake
# yum install cmake
- Red Hat Enterprise Linux 9 の場合
dnf install cmake
# dnf install cmake
関連情報
- CMake ビルドマネージャーの詳細は、CMake の公式ドキュメント About CMake を参照してください。
CMake ビルドマネージャーの使用の概要は、以下を参照してください。
- CMake リファレンスドキュメントの Introduction
- CMake の公式ドキュメント CMake Tutorial
1.5. LLVM Toolset ドキュメントのインストール リンクのコピーリンクがクリップボードにコピーされました!
LLVM Toolset のドキュメントは、ローカルシステムにインストールできます。
前提条件
-
LLVM Toolset がインストールされている。
詳細は、LLVM Toolset のインストール を参照してください。
手順
llvm-doc パッケージをインストールするには、以下のコマンドを実行します。
Red Hat Enterprise Linux 8 の場合
yum install llvm-doc
# yum install llvm-docCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドキュメントは、
/usr/share/doc/llvm/html/index.htmlの下にあります。Red Hat Enterprise Linux 9 の場合
dnf install llvm-doc
# dnf install llvm-docCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドキュメントは、
/usr/share/doc/llvm/html/index.htmlの下にあります。
1.6. CMake ドキュメントのインストール リンクのコピーリンクがクリップボードにコピーされました!
CMake ビルドマネージャーのドキュメントをローカルシステムにインストールできます。
前提条件
-
Cmake がインストールされている。
詳細は、CMake ビルドマネージャーのインストール を参照してください。
手順
cmake-doc パッケージをインストールするには、以下のコマンドを実行します。
Red Hat Enterprise Linux 8 の場合
yum install cmake-doc
# yum install cmake-docCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドキュメントは、
/usr/share/doc/cmake/html/index.htmlの下にあります。Red Hat Enterprise Linux 9 の場合:
dnf install cmake-doc
# dnf install cmake-docCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドキュメントは、
/usr/share/doc/cmake/html/index.htmlの下にあります。
第2章 Clang コンパイラー リンクのコピーリンクがクリップボードにコピーされました!
Clang は、C ベースの言語 C、C ++、Objective C/C++、OpenCL、および Cuda 用の LLVM コンパイラーフロントエンドです。
LLVM Toolset には、Clang 18.1.8 が同梱されています。
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
LLVM Toolset がインストールされている。
詳細は、LLVM Toolset のインストール を参照してください。
2.2. ソースファイルのコンパイル リンクのコピーリンクがクリップボードにコピーされました!
Clang コンパイラーを使用して、アセンブリー言語ソースファイルとソースファイルをコンパイルします。Clang は、コンパイルの結果として実行可能なバイナリーファイルを作成します。コードをデバッグできるようにするには、-g フラグを Clang コマンドに追加してデバッグ情報を有効にします。
C++ プログラムをコンパイルするには、clang の代わりに clang++ を使用します。
手順
プログラムをコンパイルするには、以下のコマンドを実行します。
Red Hat Enterprise Linux 8 の場合
clang -o -g <binary_file> <source_file>
$ clang -o -g <binary_file> <source_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<binary_file>を出力ファイルの必要な名前に、<source_file>をソースファイルの名前に置き換えます。
-
Red Hat Enterprise Linux 9 の場合
clang -o -g <binary_file> <source_file>
$ clang -o -g <binary_file> <source_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<binary_file>を出力ファイルの必要な名前に、<source_file>をソースファイルの名前に置き換えます。
-
2.3. プログラムの実行 リンクのコピーリンクがクリップボードにコピーされました!
Clang コンパイラーは、コンパイルの結果として、実行可能なバイナリーファイルを作成します。このファイルを実行し、プログラムを実行するには、以下の手順に従います。
前提条件
-
プログラムがコンパイルされている。
プログラムをコンパイルする方法は、ソースファイルのコンパイル を参照してください。
手順
プログラムを実行するには、実行ファイルが含まれるディレクトリーで実行します。
./<binary_file>
$ ./<binary_file>
-
<binary_file>は、実行可能ファイルの名前に置き換えます。
2.4. オブジェクトファイルの連結 リンクのコピーリンクがクリップボードにコピーされました!
オブジェクトファイルを連結して、プロジェクト全体ではなく、変更を含むソースファイルのみをコンパイルできます。
複数のソースファイルで設定されるプロジェクトで作業する場合は、Clang コンパイラーを使用して各ソースファイルのオブジェクトファイルをコンパイルします。次のステップとして、これらのオブジェクトファイルを連結します。Clang は、リンクされたオブジェクトファイルを含む実行ファイルを自動的に生成します。コンパイル後に、オブジェクトファイルを再度リンクします。
C++ プログラムをコンパイルするには、clang の代わりに clang++ を使用します。
手順
ソースファイルをオブジェクトファイルにコンパイルするには、以下のコマンドを実行します。
Red Hat Enterprise Linux 8 の場合
clang -o <object_file> -c <source_file>
$ clang -o <object_file> -c <source_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<object_file>をオブジェクトファイルの名前に置き換え、<source_file>をソースファイルの名前に置き換えます。
-
Red Hat Enterprise Linux 9 の場合
clang -o <object_file> -c <source_file>
$ clang -o <object_file> -c <source_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<object_file>をオブジェクトファイルの名前に置き換え、<source_file>をソースファイルの名前に置き換えます。
-
オブジェクトファイルをリンクするには、以下のコマンドを実行します。
Red Hat Enterprise Linux 8 の場合
clang -o <output_file> <object_file_0> <object_file_1>
$ clang -o <output_file> <object_file_0> <object_file_1>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_file>を出力ファイルの必要な名前に置き換え、<object_file>をリンクするオブジェクトファイルの名前に置き換えます。
-
Red Hat Enterprise Linux 9 の場合
clang -o <output_file> <object_file_0> <object_file_1>
$ clang -o <output_file> <object_file_0> <object_file_1>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_file>を出力ファイルの必要な名前に置き換え、<object_file>をリンクするオブジェクトファイルの名前に置き換えます。
-
現時点では、Red Hat Enterprise Linux の複数のバージョンでの実行に対応するために、特定のライブラリー機能は LLVM Toolset で構築されたアプリケーションに静的にリンクされています。これにより、セキュリティーリスクが小さくなります。このリスクによりアプリケーションを再構築する必要がある場合、Red Hat はセキュリティーエラータを発行します。
Red Hat は、アプリケーション全体を静的にリンクしないことを推奨します。
第3章 LLDB デバッガー リンクのコピーリンクがクリップボードにコピーされました!
LLDB デバッガーは、C および C++ プログラムのデバッグを行うためのコマンドラインツールです。LLDB を使用してデバッグするコード内でメモリーを検査し、コードの実行状態を制御して、コードの特定セクションの実行を検出します。
LLVM Toolset には、LLDB {comp-ver-rhel-7} が同梱されています。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
LLVM Toolset がインストールされている。
詳細は、LLVM Toolset のインストール を参照してください。 -
コンパイラーがデバッグ情報を作成するように設定されている。
Clang コンパイラーの設定方法は、Clang Compiler User's Manual の Controlling Debug Information を参照してください。
GCC コンパイラーの設定方法は、Red Hat Developer Toolset User Guide の デバッグプログラムの準備 を参照してください。
3.2. デバッグセッションの開始 リンクのコピーリンクがクリップボードにコピーされました!
LLDB を使用して対話式のデバッグセッションを開始します。
手順
デバッグするプログラムで LLDB を実行するには、以下のコマンドを使用します。
Red Hat Enterprise Linux 8 の場合
lldb <binary_file>
$ lldb <binary_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <binary_file>をコンパイルしたプログラムの名前に置き換えます。対話モードで LLDB デバッグセッションを開始しました。コマンドラインターミナルに、デフォルトのプロンプト
(lldb)が表示されるようになりました。
Red Hat Enterprise Linux 9 の場合
lldb <binary_file>
$ lldb <binary_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <binary_file>をコンパイルしたプログラムの名前に置き換えます。対話モードで LLDB デバッグセッションを開始しました。コマンドラインターミナルに、デフォルトのプロンプト
(lldb)が表示されるようになりました。
- デバッグセッションを終了してシェルプロンプトに戻るには、以下のコマンドを実行します。
(lldb) quit
(lldb) quit
3.3. デバッグセッション中のプログラムの実行 リンクのコピーリンクがクリップボードにコピーされました!
LLDB を使用して、デバッグセッション中にプログラムを実行します。最初のブレークポイントに達するか、エラーが発生した場合、またはプログラムが終了したときにプログラムの実行が停止します。
前提条件
-
インタラクティブなデバッグセッションを開始している。
詳細は、デバッグセッションの開始 を参照してください。
手順
デバッグしているプログラムを実行するには、次のコマンドを実行します。
(lldb) run
(lldb) runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の引数を使用してデバッグするプログラムを実行するには、以下を実行します。
(lldb) run <argument>
(lldb) run <argument>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<argument>を使用するコマンドライン引数に置き換えます。
-
3.4. ブレークポイントの使用 リンクのコピーリンクがクリップボードにコピーされました!
ブレークポイントを使用して、ソースコードの設定ポイントでプログラムの実行を一時停止します。
前提条件
-
インタラクティブなデバッグセッションを開始している。
詳細は、デバッグセッションの開始 を参照してください。
手順
特定の行に新しいブレークポイントを設定するには、以下のコマンドを実行します。
(lldb) breakpoint set --file <source_file_name> --line <line_number>
(lldb) breakpoint set --file <source_file_name> --line <line_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<source_file_name>をソースファイルの名前に置き換え、<line_number>をブレークポイントを設定する行番号に置き換えます。
-
特定の関数にブレークポイントを設定するには、以下のコマンドを実行します。
(lldb) breakpoint set --name <function_name>
(lldb) breakpoint set --name <function_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<function_name>をブレークポイントを設定する関数の名前に置き換えます。
-
現在設定されているブレークポイントのリストを表示するには、以下のコマンドを実行します。
(lldb) breakpoint list
(lldb) breakpoint listCopy to Clipboard Copied! Toggle word wrap Toggle overflow ブレークポイントを削除するには、次のコマンドを実行します。
(lldb) breakpoint clear -f <source_file_name> -l <line_number>
(lldb) breakpoint clear -f <source_file_name> -l <line_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<source_file_name>をソースファイルの名前に置き換え、<line_number>は削除するブレークポイントの行番号に置き換えます。
-
ブレークポイントに達した後にプログラムの実行を再開するには、以下のコマンドを実行します。
(lldb) continue
(lldb) continueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の数のブレークポイントを省略するには、以下のコマンドを実行します。
(lldb) continue -i <breakpoints_to_skip>
(lldb) continue -i <breakpoints_to_skip>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <breakpoints_to_skip>をスキップするブレークポイントの数に置き換えます。注記ループを省略するには、
<breakpoints_to_skip>をループの反復数に一致するように設定します。
3.5. コードのステップ実行 リンクのコピーリンクがクリップボードにコピーされました!
LLDB を使用すると、プログラムのコードをステップ実行して、行ポインターの後のコードを 1 行だけ実行できます。
前提条件
-
インタラクティブなデバッグセッションを開始している。
詳細は、デバッグセッションの開始 を参照してください。
手順
コードの 1 行でステップ実行するには、以下を実行します。
- 行ポインターを実行する行に設定します。
以下のコマンドを実行します。
(lldb) step
(lldb) stepCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コードの特定の数行をステップ実行するには、以下を行います。
- 行ポインターを実行する行に設定します。
以下のコマンドを実行します。
(lldb) step -c <number>
(lldb) step -c <number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<number>を実行する行数に置き換えます。
-
3.6. ソースコードのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
デバッグしているプログラムを実行する前に、LLDB デバッガーにソースコードの最初の 10 行が自動的に表示されます。プログラムの実行が停止するたびに、LLDB は停止するソースコードの行と、周りの行を表示します。LLDB を使用すると、デバッグセッションでソースコードの表示を手動でトリガーできます。
前提条件
-
インタラクティブなデバッグセッションを開始している。
詳細は、デバッグセッションの開始 を参照してください。
手順
デバッグしているプログラムのソースコードの最初の 10 行をリスト表示するには、次のコマンドを実行します。
(lldb) list
(lldb) listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の行からソースコードを表示するには、以下を実行します。
(lldb) list <source_file_name>:<line_number>
(lldb) list <source_file_name>:<line_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<source_file_name>をソースファイルの名前に置き換え、<line_number>は表示する行数に置き換えます。
-
3.7. 現在のプログラムデータの表示 リンクのコピーリンクがクリップボードにコピーされました!
LLDB デバッガーは、複雑さ、有効な式、および関数呼び出しの戻り値の変数にデータを提供します。LLDB を使用して、プログラムの状態に関連するデータを表示できます。
前提条件
-
インタラクティブなデバッグセッションを開始している。
詳細は、デバッグセッションの開始 を参照してください。
手順
特定の変数、式、または戻り値の現在の値を表示するには、以下を実行します。
(lldb) print <data_name>
(lldb) print <data_name>
-
<data_name>を表示するデータに置き換えます。
第4章 RHEL 8 で LLVM Toolset を使用したコンテナーイメージ リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 では、Containerfiles を使用して、独自の LLVM Toolset コンテナーイメージを Red Hat Universal Base Images (UBI) コンテナー上にビルドできます。
4.1. RHEL 8 での LLVM Toolset のコンテナーイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 では、LLVM Toolset パッケージは、Red Hat Universal Base Images (UBI) リポジトリーの一部です。コンテナーイメージのサイズを小さくするには、LLVM Toolset 全体ではなく、個々のパッケージのみをインストールします。
前提条件
-
既存の Containerfile がある。
Containerfiles 作成の詳細は、Dockerfile reference のページを参照してください。
手順
- Red Hat Container Catalog にアクセスします。
- UBI を選択します。
- Get this image をクリックして、指示に従います。
- LLVM Toolset を含むコンテナーイメージを作成するには、以下の行を Containerfile に追加します。
FROM registry.access.redhat.com/ubi8/ubi:latest RUN yum module install -y llvm-toolset
FROM registry.access.redhat.com/ubi8/ubi:latest
RUN yum module install -y llvm-toolset
個々のパッケージのみを含むコンテナーイメージを作成するには、以下の行を Containerfile に追加します。
RUN yum install -y <package-name>
RUN yum install -y <package-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<package-name>をインストールするパッケージの名前に置き換えます。
-
第5章 LLVM Toolset の変更点 リンクのコピーリンクがクリップボードにコピーされました!
LLVM Toolset が、RHEL 8 および RHEL 9 のバージョン 17.0.6 から 18.1.8 に更新されました。
LLVM の主な更新点:
-
以下の命令の定数式バリアントが削除されました。
and、or、lshr、ashr、zext、sext、fptrunc、fpext、fptoui、fptosi、uitofp、sitofp。 -
llvm.exp10組み込み関数が追加されました。 -
グローバル変数の
code_model属性が追加されました。 - AArch64、AMDGPU、PowerPC、RISC-V、SystemZ、x86 アーキテクチャーのバックエンドが改善されました。
- LLVM ツールが改善されました。
Clang の主な機能拡張:
C++20 機能のサポート:
-
Clang は、グローバルモジュールフラグメント内の宣言に対して One Definition Rule (ODR) チェックを実行しなくなりました。より厳密な動作を有効にするには、
-Xclang -fno-skip-odr-check-in-gmfオプションを使用してください。
-
Clang は、グローバルモジュールフラグメント内の宣言に対して One Definition Rule (ODR) チェックを実行しなくなりました。より厳密な動作を有効にするには、
C++23 機能のサポート:
-
ラムダでの属性の使用に関する警告するための新しい診断フラグ
-Wc++23-lambda-attributesが追加されました。
-
ラムダでの属性の使用に関する警告するための新しい診断フラグ
C++2c 機能のサポート:
-
同じスコープ内で、
_文字をプレースホルダー変数名として複数回使用できるようになりました。 - 属性が、文字列リテラルである属性パラメーター内で未評価の文字列を要求するようになりました。
- C++26 の列挙型に対する非推奨の算術変換が削除されました。
- テンプレートパラメーター初期化の仕様が改善されました。
-
同じスコープ内で、
- 変更点の完全なリストは、Clang のアップストリームのリリースノート を参照してください。
Clang の ABI の変更点:
-
x86_64 の SystemV ABI に従い、
__int128引数がレジスターとスタックスロット間で分割されなくなりました。 - 詳細は、Clang の ABI 変更点のリスト を参照してください。
後方互換性のない主な変更点:
- テンプレート化された演算子の引数の逆順に関するバグ修正により、以前は C++17 で受け入れられていたコードが C++20 では機能しなくなります。
-
GCC_INSTALL_PREFIXCMake 変数 (デフォルトの--gcc-toolchain=を設定する変数) が非推奨になり、削除される予定です。代わりに、設定ファイルで--gcc-install-dir=または--gcc-triple=オプションを指定してください。 -
プリコンパイル済みヘッダー (PCH) 生成 (
-c -xc-headerおよび-c -xc++-header) のデフォルトの拡張子名が、.gchではなく.pchになりました。 -
-include a.hがa.h.gchファイルをプローブするときに、そのファイルが Clang PCH ファイルまたは Clang PCH ファイルを含むディレクトリーでない場合、include がa.h.gchを無視するようになりました。 -
__has_cpp_attributeおよび__has_c_attributeが特定の C++-11 スタイルの属性に対して誤った値を返すバグが修正されました。 -
逆の
operator==の追加時に一致するoperator!=を検出する際のバグが修正されました。 - 関数テンプレートの名前マングリングルールが変更され、テンプレートパラメーターリストまたは requires 句で関数をオーバーロードできるようになりました。
-
-Wenum-constexpr-conversion警告が、システムヘッダーとマクロでデフォルトで有効になりました。これは、次の Clang リリースでハード (ダウングレード不可能な) エラーに変更されます。 - C++20 名前付きモジュールのインポートされたモジュールへのパスが、ハードコードできなくなりました。依存するすべてのモジュールをコマンドラインから指定する必要があります。
-
import <module>を使用してモジュールをインポートできなくなりました。Clang は明示的にビルドされたモジュールを使用します。 - 詳細は、互換性を破壊する可能性のある変更点のリスト を参照してください。
更新の詳細については、アップストリームの LLVM リリースノート および Clang リリースノート を参照してください。