LLVM 9.0の新しいバージョンはすでにリリースされており、これらはそのニュースです

Llvm

開発のXNUMXか月後 LLVM9.0プロジェクトの新しいバージョンの立ち上げが発表されました。 これはGCC互換のツールキット(コンパイラ、オプティマイザ、コードジェネレータ)であり、 プログラムをRISCのような仮想命令の中間ビットコードにコンパイルします (マルチレベル最適化システムを備えた低レベル仮想マシン)。

コンパイル時間を最適化するように設計されています、バインディング時間、ユーザーが定義したいプログラミング言語での実行時間。 もともとCとC ++をコンパイルするために実装されました、LLVMの言語にとらわれない設計、およびプロジェクトの成功 多種多様な言語を生み出しました、Objective-C、Fortran、Ada、Haskell、Javaバイトコード、Python、Ruby、ActionScript、GLSL、Clang、Rust、Gambasなどを含みます。

生成された擬似コードは、JITコンパイラを使用して、プログラムの実行時に直接マシン命令に変換できます。

LLVM9.0の主な新機能

LLVM9.0の新機能のXNUMXつ RISC-Vプラットフォームから実験的な開発タグを削除するためのサポートを見つける、OpenCLのC ++サポート。

もう一つの目新しさ 際立っているのは、プログラムを動的にロードされる部分に分割する機能です LLDで、Linuxカーネルコードで使用される»asmgoto»構造の実装。

さらに、Libc ++がWASIのサポートとともに到着したことも強調されています (WebAssemblyシステムインターフェイス)、およびLLDはWebAssembly動的バインディングの初期サポートを導入しました。 GCC固有の式»asmgoto»の実装が追加されました。これにより、アセンブルされたインラインブロックからCコードのタグに切り替えることができます。

この機能は、x86_64システムでClangを使用して»CONFIG_JUMP_LABEL = y«モードでLinuxカーネルを構築するために必要です。 以前のバージョンで追加された変更を考慮して、Linuxカーネルをx86_64アーキテクチャ用のClangに組み込むことができるようになりました(以前は、arm、aarch64、ppc32、ppc64le、およびmipsアーキテクチャでのみサポートされていました。

BTI命令のサポートが追加されました (ブランチターゲットインジケーター)およびAArch64アーキテクチャ用のPAC(ポインター認証コード)。 MIPS、RISC-V、およびPowerPCプラットフォームのサポートが大幅に改善されました。

さらに、 AndroidおよびChromeOSプロジェクトは、カーネルの構築にClangを使用するようにすでに切り替えられています Googleは、実行中のLinuxシステムのプライマリビルドプラットフォームカーネルとしてClangをテストしています。

将来は、 カーネルのコンパイルプロセス中に、他のコンポーネントを使用できるようになります LLD、llvm-objcopy、llvm-ar、llvm-nm、およびllvm-objdumpを含むLLVM。

実験的なパーティション関数がLLDリンカーに追加されました。これにより、プログラムを複数の部分に分割し、それぞれを個別のELFファイルに配置できます。 この機能を使用すると、プログラムの主要部分を実行できます。必要に応じて、プロセスの残りのコンポーネントが読み込まれます(たとえば、組み込みのPDFビューアを個別のファイルとして選択できます。このファイルは、次の場合にのみダウンロードされます。ユーザーがファイルPDFを開きます)。

一方で、バックエンドの多くの改善も際立っています。 X86、AArch64、ARM、SystemZ、MIPS、AMDGPU、およびPowerPCアーキテクチャー用。

たとえば、AArch2アーキテクチャにSVE64およびMTE(Memory Tagging Extensions)命令のサポートが追加され、ARMバックエンドにArmv8.1-MアーキテクチャおよびMVEアーキテクチャのサポートが追加されました。

AMDGPUの場合、GFX10アーキテクチャのサポートが追加されました (Navi)、デフォルトでは、関数を呼び出して、アクティブ化された結合DPP(Data Primitives-Parallel)を渡すことができます。

LLDBデバッガーは、トレースのカラーハイライトを逆方向に導入しました。 DWARF4debug_typesおよびDWARF5debug_infoブロックのサポートが追加されました。

llvm-objcopyおよびllvm-stripユーティリティは、COFF形式の実行可能ファイルおよびオブジェクトのサポートを追加しました。

RISC-Vアーキテクチャのバックエンドが安定化されている、これは実験的なものとして位置付けられなくなり、デフォルトで構築されます。 MAFDC拡張機能を備えたRV32IおよびRV64I命令セットバリアントのコード生成を完全にサポートします。

出典 http://releases.llvm.org/


コメントを残す

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

*

*

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