注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
#129636 Disable scope info for wasm targets
- 作成者: @AndyAyersMS
- 作成日時: 2026年06月19日 20:10:07(UTC)
- マージ日時: 2026年06月21日 14:47:12(UTC)
- ラベル: area-CodeGen-coreclr
概要
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
その他
- 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文字列/アイテムリスト解析の落とし