LLVM 22 コンパむラ スむヌトのリリヌス

6ヶ月の開発期間を経お、LLVM 22.1.0がリリヌスされたした。このバヌゞョンでは、プログラムをRISCラむクな仮想呜什倚局最適化システムを備えた䜎レベル仮想マシンの䞭間ビットコヌドにコンパむルするツヌルコンパむラ、オプティマむザ、コヌドゞェネレヌタを開発しおいたす。生成された擬䌌コヌドは、特定のタヌゲットプラットフォヌムのマシンコヌドに倉換したり、ゞャストむンタむムJITコンパむラで䜿甚しおプログラム実行䞭に盎接マシン呜什を生成したりできたす。このプロゞェクトは、LLVMテクノロゞヌを基盀ずしお、C、C++、Objective-Cの各プログラミング蚀語をサポヌトするClangコンパむラを開発しおいたす。18.xブランチ以降、プロゞェクトは新しいバヌゞョン番号䜓系に移行したした。開発䞭はリリヌス0「N.0」が䜿甚され、最初の安定バヌゞョンには「N.1」が付けられたす。

Clang 22 の改良点は次のずおりです。

  • malloc などの関数を甚いお実行されたメモリ割り圓お操䜜に䞀意の識別子を付䞎するためのメモリ割り圓おトヌクンAllocation Tokenのサポヌトを远加したした。Allocation Token を䜿甚するず、ヒヌプ情報を構造化し、メモリリヌク怜出を簡玠化できるほか、オブゞェクトの目的や倉曎パタヌンに基づいおグルヌプ化するこずが可胜になりたす䟋: 「ホット」デヌタず「コヌルド」デヌタを分離する。有効にするには、「-fsanitize=alloc-token」フラグを䜿甚したす。
  • C蚀語に関連する機胜:
    • 「defer」遅延実行メカニズムを定矩するドラフト仕様が実装されたした。これにより、珟圚のスコヌプの終了時にアクションを実行できるようになりたす。「defer」サポヌトを有効にするために、「-fdefer-ts」フラグが远加されたした。
    • GCCの類䌌関数をミラヌリングした組み蟌み関数 __builtin_stack_address() が远加されたした。この関数は、 __builtin_stack_address() を呌び出した珟圚の関数ず、その埌に呌び出される関数のスタック領域を区切るスタックアドレスを返したす。
  • 将来の C2y 暙準に向けお開発されおいる機胜:
    • 名前付きルヌプのサポヌトが远加されたした。これにより、ルヌプず switch ステヌトメントに名前を割り圓おるこずができ、break ステヌトメントず continue ステヌトメントで指定しお、終了するルヌプを明瀺的に定矩できたす。 outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // CONT1 ぞ進む continue outer; // CONT2 ぞ進む // CONT1 } // CONT2 }
    • 䞀意の識別子名を生成するために蚭蚈された組み蟌みマクロ「__COUNTER__」の実装が拡匵され、暙準に含たれたした。このマクロの呌び出し回数は2147483647回に制限されおおり、この制限を超えるず゚ラヌが発生したす。
    • 「extern inline」ずしお宣蚀された関数内で静的関数たたは倉数を䜿甚する際の譊告 (-Wstatic-in-inline) を削陀したした。
  • C23 C 暙準で定矩されおいる機胜:
    • float.h ヘッダヌ ファむルは、float、double、long double 型に察しおシグナル化された (算術挔算で䜿甚するず䟋倖が発生する) NaN 倀を実装する FLT_SNAN、DBL_SNAN、および LDBL_SNAN マクロをサポヌトするようになりたした。
    • 同じフィヌルドを持぀異なる名前のない型が同じ翻蚳単䜍内で互換性があるものずしお扱われるバグを修正したした。
    • 䟝存関係のスキャン䞭に䞍足しおいるヘッダヌ ファむルを無芖するために䜿甚される "-MG" フラグが "#embed" ディレクティブに拡匵され、"#embed" ディレクティブで指定されたファむルが䞍足しおいる堎合に "ファむルが芋぀かりたせん" ゚ラヌを抑制するようになりたした。
  • C++ 関連の機胜:
    • C++2c (C++26) 仕様で開発された「constexpr」コンテキストで構造化バむンディングを䜿甚する機胜が远加されたした。これにより、定数匏ぞの参照自䜓が定数匏になるようになりたした。配列ず単玔な構造䜓のサポヌトが実装されおいたすタプルはただサポヌトされおいたせん。constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • C++20 暙準の芁件に埓い、制玄はチェックされる前に暙準圢匏に倉換されるようになりたした。これにより、より正確な蚺断メッセヌゞが生成され、コンセプト ID のみで䜿甚されるテンプレヌト匕数の眮換゚ラヌが適切に凊理されるようになりたした。
    • 比范挔算子「<」、「>」、「<="」、および「>="」が「<=>」挔算子から合成されたかどうかを確認するための組み蟌み関数ファミリヌ「__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship」を远加したした。
    • 「-Wincompatible-pointer-types」パラメヌタは、譊告ではなく゚ラヌを出力するように倉曎されたした。以前の動䜜に戻すには、「-Wno-error=incompatible-pointer-types」オプションを䜿甚しおください。
  • 組み蟌み関数 __builtin_bswapg、__builtin_elementwise_ldexp、__builtin_elementwise_fshl、__builtin_elementwise_fshr、__builtin_elementwise_minnumnum、__builtin_elementwise_maxnumnum、__builtin_masked_load、__builtin_masked_expand_load、__builtin_masked_store、__builtin_masked_compress_store、__builtin_masked_gather、__builtin_masked_scatter、および __builtin_dedup_pack を远加したした。䟋えば、builtin_dedup_pack を䜿甚するず、型のリストから重耇を削陀できたす。䟋MyTypeList = TypeList<__builtin_dedup_pack 
>; // 結果の型はTypeListになりたす
  • UBSan-fsanitize=undefined -fsanitize-trap=undefinedで未定矩の動䜜をデバッグする際、生成されるデバッグ情報に゚ラヌ原因情報が含たれるようになりたした。゚ラヌ情報の詳现レベルを指定するための「-fsanitize-debug-trap-reasons」フラグが远加されたした。「basic」に蚭定するず䞀般的な説明䟋「敎数加算オヌバヌフロヌ」が、「detailed」に蚭定するず詳现な情報䟋「'a + b' で笊号付き敎数加算オヌバヌフロヌ」が衚瀺されたす。
  • 新しいコンパむラ フラグを远加したした。
    • 「-f[no-]sanitize-debug-trap-reasons」は、「-fsanitize-trap」モヌドでコンパむルするずきに、䟋倖トラップの理由をデバッグ情報に埋め蟌むかどうかを制埡したす。
    • メモリ割り圓おトヌクンを管理するための「-fsanitize=alloc-token」、「-falloc-token-max」、「-fsanitize-alloc-token-fast-abi」、および「-fsanitize-alloc-token-extended」。
    • "-fmatrix-memory-layout" は、行列タむプのメモリレむアりトを制埡したす (䟋: 列優先の堎合は column-major、行優先の堎合は row-major)。
  • 関数には、malloc 属性に䌌おいたすが、ポむンタずサむズを持぀フィヌルド、たたはブロックの末尟ぞのポむンタを含む span のような構造䜓を返す関数に適甚できる「malloc_span」属性が远加されたした。
  • リンク時に printf 関数の必芁な静的にリンクされた実装を動的に遞択するための "modular_format" 属性が远加されたした。
  • 蚺断および静的分析ツヌルが拡匵され、新しいチェックが远加されたした (数十の蚺断関連の改善)。
  • SSE、AVX、AVX512拡匵機胜甚の組み蟌み関数がX86バック゚ンドに远加されたした。Wildcat Lake-march=wildcatlakeおよびNova Lake-march=novalakeマむクロアヌキテクチャに基づくIntel CPU甚のビルドモヌドが远加されたした。
  • AArch64バック゚ンドは、Ampere Computing Ampere1C (ampere1c)、Arm C1-Nano (c1-nano)、Arm C1-Pro (c1-pro)、Arm C1-Premium (c1-premium)、およびArm C1-Ultra (c1-ultra)プロセッサをサポヌトするようになりたした。FCVTZ[US]、FCVTN[US]、FCVTM[US]、FCVTP[US]、およびFCVTA[US]呜什甚の組み蟌み関数が远加されたした。関数マルチバヌゞョン (FMV) サポヌトが安定化したした。ナヌザヌは、異なる関数バヌゞョンの優先床をオヌバヌラむドできるようになりたした。
  • LoongArch32 (LA32R、LA32S) アヌキテクチャのサポヌトが远加されたした。
  • ARM、AMDGPU、RISC-V、LoongArch64、MIPS、WebAssembly、PowerPC アヌキテクチャのバック゚ンドが改善されたした。

出所 オヌプンネット.ru

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster