LLVM 16.0 がリリースされ、これらはそのニュースです

LLVM ロゴ

LLVM は、コンパイラを開発するためのフレームワークであり、新しいプログラミング言語の構築と既存の言語の改善を支援します。

半年余りの開発期間を経て、 の発売 プロジェクトの新しいバージョン LLVM 16.0、多数の変更と改善が実装されたバージョン。

LLVM に慣れていない人は、これを知っておく必要があります。 GCC互換コンパイラです プログラムを RISC のような仮想命令中間ビットコード (マルチレベル最適化システムを備えた低レベル仮想マシン) にコンパイルする (コンパイラ、オプティマイザ、およびコード ジェネレータ)。

生成された疑似コードは、プログラムの実行時に JIT コンパイラーによって機械語命令に変換されます。

LLVM16.0の主な新機能

提示されたこの新しいバージョンでは、いくつかの重要な改善点を見つけることができます クラン16.0では、 その中で、デフォルトの C++/ObjC++ 標準が際立っています。 gnu++17 に設定されています (以前は gnu++14)、 デフォルトで GNU 拡張機能を備えた C++17 機能のサポートを意味します. LLVM コードでは、C++17 標準で定義された要素を使用できます。

目立つ変更のもう XNUMX つは、それが追加されたことです。 Cortex-A715、Cortex-X3、Neoverse CPU のサポート AArch2 バックエンドへの V8.3、Armv64 拡張およびマルチバージョン機能。
La プラットフォームの互換性 Armv2、Armv2A、Armv3、および Armv3M は廃止されました ARM アーキテクチャ バックエンドでは、正しいコード生成が保証されていませんでした。 複素数を操作する命令のコードを生成する機能が追加され、追加されました アーキテクチャのサポート 命令セットの (ISA) AMX-FP16、CMPCXADD、AVX-IFMA、AVX-VNNI-INT8、AVX-NE-CONVERT から X86 バックエンドへ。

それに加えて、 LLVM を構築するための要件が​​増えました。 また、ビルドは C++17 標準と互換性があるはずです。つまり、ビルドには少なくとも GCC 7.1、Clang 5.0、Apple Clang 10.0、または Visual Studio 2019 16.7 が必要です。

一方でハイライトも MIPS、PowerPC、および RISC-V アーキテクチャ向けの改良されたバックエンド、および LoongArch アーキテクチャの 64 ビット実行可能ファイルの LLDB デバッガーへのデバッグのサポートと、COFF デバッグ シンボルの処理の改善がサポートされています。

その他の変更点 目立つ:

  • Libc++ ライブラリでは、主な作業は C++20 および C++23 標準の新機能のサポートの実装に集中していました。
  • アドレス再配置スキャンとセクション初期化操作を並列化することにより、LDD リンカでのリンク時間が大幅に短縮されました。 ZSTD アルゴリズムを使用したセクション圧縮のサポートが追加されました。
  • C++20 標準で実装された高度な機能も強調表示されています。
  • ラムダ関数で構造化リンクをキャプチャします。
  • 式内の等価演算子。
  • 一部のコンテキストで typename キーワードを指定しない機能
  • 括弧内に追加された初期化の許可 ("Aggr(val1, val2)")。
  • 将来の C++2b 標準で定義される関数を実装しました。
  • タイプchar8_tで提供されるサポート、
  • 「\N{…}」で使用できる文字の範囲を拡張し、
  • constexpr として宣言された関数で、「静的 constexpr」として宣言された変数を使用する機能が追加されました。
  • 将来の C2x C 標準で定義される実装関数:
  • 複数の構成ファイルをロードするためのサポートが追加されました (デフォルトの構成ファイルが最初にロードされ、次に「–config=」フラグを介して指定されたファイルがロードされ、複数回指定できるようになりました)。
  • デフォルトの構成ファイルのロード順序が変更されました: clang は最初にファイルをロードしようとします- .cfg が見つからない場合は、XNUMX つのファイルをロードしようとします。 .cfg と.cfg。
  • 定期的なフレーム整列配布用の新しいビルド フラグ「-fcoro-aligned-allocation」を追加しました。
  • 標準 C++ モジュールの単一フェーズ ビルド モデルを有効にする「-fmodule-output」フラグが追加されました。
  • スタック フレーム レイアウトの問題を診断するためのモード「-Rpass-analysis=stack-frame-layout」が追加されました。
  • 新しい __attribute__((target_version("cpu_features"))) 属性を追加し、__attribute__((target_clones("cpu_features1″,"cpu_features2",…))) 属性の機能を拡張して、CPU AArch64 によって提供される機能の特定のバージョンを選択します。 .
  • 強化された診断ツール:
  • XNUMX ビットの符号付きビットフィールドに XNUMX を代入する際の暗黙の切り捨てをキャッチするために、警告「-Wsingle-bit-bitfield-constant-conversion」を追加しました。
  • 初期化されていない constexpr 変数の拡張診断。
  • 関数型をキャストする際の潜在的な問題をキャッチするために、「-Wcast-function-type-strict」および「-Wincompatible-function-pointer-types-strict」警告を追加しました。

最後に あなたがそれについてもっと知りたいのなら、 あなたはで詳細を確認することができます 次のリンク。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。