Pull Request on 2026年06月21日

dotnet/runtimeにマージされたPull RequestをAIで日本語要約

注意点

このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。



#129636 Disable scope info for wasm targets

概要

WebAssembly(WASM)ターゲットではネイティブデバッガが存在せず、仮想レジスタがICorDebugInfoで表現できないため、WASMビルドでスコープ情報(compScopeInfo)の生成を無効化する変更です。あわせてリターン値の収集もこのフラグで制御するようにします。

変更内容

  • src/coreclr/jit/compiler.cpp: WASM ターゲット(TARGET_WASM)でのみcompScopeInfoを無効化するガード処理を追加(+7行)
  • src/coreclr/jit/codegencommon.cpp: リターン値の収集をスコープ情報フラグの制御下に配置(+2/-2行)

パフォーマンスへの影響

WASM ターゲットでスコープ情報生成が不要になることで、JIT コンパイル時間と生成コードサイズがわずかに削減される可能性があります。

関連Issue

#129630

その他

  • WASM ターゲットではネイティブデバッガが存在しないため、スコープ情報の生成は不要です
  • 内部実装(JIT コンパイラのデバッグ情報生成処理)の変更であり、公開 API への影響なし
  • GitHub Copilot の支援により作成されたコントリビューション

#129614 [mono] LLVM backend correctness, NaN-safe FP narrow, and test annotations

  • 作成者: @pavelsavara
  • 作成日時: 2026年06月19日 11:08:47(UTC)
  • マージ日時: 2026年06月21日 12:45:11(UTC)
  • ラベル: area-Build-mono

概要

Emscripten 5.0.6 / LLVM 23へのアップグレードに向けたMono LLVM バックエンドの事前準備PR。LLVM 23の厳格な定数エンコーディングとより積極的な浮動小数点変換の認識に対応させる。すべてのLLVM 23対応コードはLLVM_API_VERSIONガードされており、現在のLLVM 19では動作的に同等であり、アップグレード前に安全にマージ可能。

変更内容

Mono LLVM バックエンド (src/mono/mono/mini/)

  • LLVMContextRef のスレッド化: mono_llvm_create_constant_data_array、mono_llvm_get_ptr_type、構造体リターン/byval属性ヘルパー、デバッグロケーション作成、GCセーフポイントポーリング、イントリンシック登録が、グローバルコンテキスト(LLVMGetGlobalContext())の代わりにモジュール/関数/命令のコンテキストを使用するよう更新。複数コンテキスト使用時の正確性に必須。
  • LLVM 21 イントリンシック宣言API採用: LLVM_API_VERSION >= 2100でIntrinsic::getOrInsertDeclarationを使用、旧バージョンではgetDeclarationにフォールバック。
  • 負の整数定数のマスキング: const_int8とconst_int32がLLVMConstInt呼び出し前に値をターゲット幅にマスク。LLVM 23以降、SignExtendがFALSEの場合に上位ビットが保持され、ZExt結果が誤って折り畳まれることを防止(例:zext i8 -1 to i64が-1ではなく255を返す)。
  • LLVMConstAllOnesの活用: div-check -1比較とil_state初期化で、LLVMConstInt(..., -1, FALSE)の代わりに使用。
  • 符号付き即値の符号拡張: OP_ICOMPARE_IMMでLLVMConstInt(IntPtrType(), ins->inst_imm, TRUE)を使用。
  • NaN保持浮動小数点ナローイング: 新しいemit_fpnarrow/quiet_nan_for_fptypeヘルパーがNaN入力を明示的に検出し、目的地型の正規静かNaNを選択。arm64などのターゲットでハードウェアfptruncがNaN仮数を破棄して±Infinityに変換するケースに対応(LLVM_API_VERSION >= 2300でガード)。
  • 非推奨警告の抑止: mini-llvm.c上部で-Wdeprecated-declarationsを抑止。LLVM-Cグローバルコンテキト型アクセサ(LLVMInt32Type等)が新LLVM版で非推奨化されているため。

ワークロードテスト対象 (WorkloadTesting.Core.targets)

  • ci.dot.net/public → ci.dot.net/devの書き換えをMSBuild経由ではなく、プラットフォーム標準ツール(Unix: sed、Windows: PowerShell)で実行。MSBuild文字列/アイテムリスト解析の落とし

目次