|
|
5988374ecf
|
phase29aj(p0): expose planner outcome facts for strict observability
|
2025-12-29 12:17:57 +09:00 |
|
|
|
2e1bb938b4
|
phase29ai(p15): observe pattern2 promotion hint under strict
|
2025-12-29 11:37:31 +09:00 |
|
|
|
61bb386b85
|
phase29ai(p14): add pattern2 promotion hint
|
2025-12-29 11:00:55 +09:00 |
|
|
|
b3b01def24
|
phase29ai(p13): memoize planner call in single_planner
|
2025-12-29 10:27:00 +09:00 |
|
|
|
253b4225e8
|
phase29ai(p12): expose loopbodylocal facts via LoopFacts
|
2025-12-29 10:20:15 +09:00 |
|
|
|
678c2c1d14
|
phase29ai(p12): add loopbodylocal facts ssot
|
2025-12-29 10:07:55 +09:00 |
|
|
|
b78564c02d
|
phase29ai: remove unused facts re-exports
|
2025-12-29 10:01:59 +09:00 |
|
|
|
0cf6749b4a
|
phase29ai(p11): planner-first pattern2 break subset
|
2025-12-29 09:55:00 +09:00 |
|
|
|
4d26133d6a
|
phase29ai(p10): move pattern2 extractor into plan layer
|
2025-12-29 09:44:04 +09:00 |
|
|
|
9abc726394
|
phase29ai(p9): planner-first pattern7 split-scan subset
|
2025-12-29 09:17:53 +09:00 |
|
|
|
82b0a87599
|
phase29ai(p8): try planner before legacy pattern6
|
2025-12-29 08:55:17 +09:00 |
|
|
|
c7697edde1
|
phase29ai(p7): planner returns DomainPlan (no hardcoded names)
|
2025-12-29 08:39:33 +09:00 |
|
|
|
2abcd8e32b
|
phase29ai(p6): move pattern6/7 extractors into plan layer
|
2025-12-29 08:18:09 +09:00 |
|
|
|
5ba68da9a0
|
phase29ai(p5): route JoinIR plan extraction via single_planner
|
2025-12-29 08:04:00 +09:00 |
|
|
|
a17a7d7852
|
phase29ai(p4): first LoopFacts + scan_with_init candidate
|
2025-12-29 07:40:57 +09:00 |
|
|
|
3fb5c1a544
|
phase29ai(p3): typed Freeze + candidate-set planner boundary
|
2025-12-29 07:26:08 +09:00 |
|
|
|
c9456646c6
|
phase29ai(p0): add facts->planner skeleton
|
2025-12-29 06:59:50 +09:00 |
|
|
|
1e1679f361
|
phase29ac(p1): normalize pattern6 reverse scan and flip smoke to PASS
|
2025-12-28 16:54:01 +09:00 |
|
|
|
209b04d808
|
docs(phase29ab): closeout P1-P9
|
2025-12-28 16:36:15 +09:00 |
|
|
|
0269fc2ed4
|
Reduce build warnings
|
2025-12-28 01:34:46 +09:00 |
|
|
|
7a575e30cc
|
refactor(joinir): Phase 286 P3.2 cleanup + normalizer modularization
## Legacy Pattern5 削除 (488行)
- pattern5_infinite_early_exit.rs 完全削除
- LOOP_PATTERNS テーブルからエントリ削除
- Plan extractor が SSOT
## Normalizer 分割 (3294行 → 12ファイル)
- helpers.rs: 共通ヘルパー関数
- pattern*.rs: 各パターン専用ファイル
- mod.rs: ディスパッチャ
## ドキュメント更新
- Phase 286 README: クリーンアップ完了・Fail-Fast方針記載
- Phase 287 README: 将来計画
quick smoke 154/154 PASS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 10:30:08 +09:00 |
|
|
|
22945c190c
|
feat(joinir): Phase 286 P3.2 - Pattern5 Plan line (loop(true) + early exit)
- Pattern5InfiniteEarlyExitPlan (Return/Break variants)
- extract_pattern5_plan() for loop(true) literal only
- normalize_pattern5_return(): 5 blocks CFG (header→body→found/step)
- normalize_pattern5_break(): 6 blocks CFG with carrier PHI
- NormalizationPlanBox exclusion for Pattern5-style loops
- Fixtures: phase286_pattern5_{return,break}_min.hako
- quick smoke 154/154 PASS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 09:56:34 +09:00 |
|
|
|
b235a5b6db
|
feat(joinir): Phase 286 P3.1 - Pattern2 Plan line 完走(after_bb PHI)
Pattern2(Loop with Break)を Plan/Frag SSOT へ移行。
主な変更:
- Pattern2BreakPlan 追加(DomainPlan variant)
- extract_pattern2_plan() 実装(PoC サブセット厳守)
- normalize_pattern2_break() 実装(6-block CFG, 3 PHI)
- after_bb PHI が本質: carrier_out = PHI(header: carrier_current, break_then: carrier_break)
- router に Pattern2 追加(Pattern1 より前、より具体的)
テスト:
- Fixture B (break without update): PASS (出力 11)
- quick smoke: 154/154 PASS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 05:56:30 +09:00 |
|
|
|
f76fb6cd3e
|
refactor(joinir): Phase 286 P2.8 - Normalizer Hygiene(小箱化・重複削減)
- LoopBlocksStandard5: 5-block レイアウト(Pattern1/9 で使用)
- LoopBlocksWithIfPhi: 8-block レイアウト(Pattern3 で使用)
- create_phi_bindings(): phi_bindings 作成ヘルパー(全5パターンで使用)
リファクタ適用:
- Pattern1: LoopBlocksStandard5 + create_phi_bindings
- Pattern3: LoopBlocksWithIfPhi + create_phi_bindings
- Pattern4: create_phi_bindings(8-block は別構造のため据え置き)
- Pattern8: create_phi_bindings(6-block は別構造のため据え置き)
- Pattern9: LoopBlocksStandard5 + create_phi_bindings
意味論は完全不変。quick 154/154 PASS。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 05:08:09 +09:00 |
|
|
|
630ed02c48
|
feat(joinir): Phase 286 P2.7 - V10不変条件追加(body_bb effects契約)
- verifier.rs: V10検証追加 - body_bbのblock_effectsは空でなければならない
- 違反時: "[V10] Loop at depth N has non-empty block_effects for body_bb"
- テスト: test_v10_body_bb_effects_in_block_effects_fails
- joinir-plan-frag-ssot.md: V10をPlan段階の不変条件に追加
- README.md: P2.7セクション追加
Phase 286 P2.6.1で発見した「lowererはloop_plan.bodyをemitし、
block_effectsのbody_bbは無視する」問題を契約化し再発防止。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 04:55:14 +09:00 |
|
|
|
0fca2df5be
|
feat(joinir): Phase 286 P2.6.1 - Pattern3 Plan 完走(normalizer 実装 + Fail-Fast 統一)
## 変更内容
### Router Fail-Fast 統一
- Pattern3 stub fallback 特例を撤去
- extract 成功 → normalize/lower 失敗は即 Err(他パターンと統一)
### normalize_pattern3_if_phi() 実装
- CFG 構造: 8 blocks (preheader, header, body, then, else, merge, step, after)
- PHI 構成: 3本(header×2 + merge×1)
- Header: loop_var_current, carrier_current
- Merge: carrier_next (if-else 合流)
- Frag: BranchStub×2 + EdgeStub×4(Pattern1 流儀の直接構築)
### 発見・修正
- lowerer は body_bb の block_effects を無視して loop_plan.body を emit
- body_bb effects は CorePlan::Effect(...) として loop_plan.body に配置
## テスト結果
- Phase 118 smoke: PASS (出力 12)
- quick: 154/154 PASS
- Plan line 完走確認: route=plan ... Pattern3_IfPhi MATCHED
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 04:39:36 +09:00 |
|
|
|
4d17e3d812
|
feat(joinir): Phase 286 P2.6 - Pattern3 Plan 基盤 + Pattern1 退行修正
## Pattern1 退行修正(構造的 Fail-Fast)
- Router に pattern_kind ガード追加(ctx.pattern_kind != Pattern1SimpleWhile → skip)
- has_if_else_statement() ヘルパー追加(再帰版、ScopeBox/Loop 内もチェック)
- Pattern1 extractor に if-else 拒否追加
## Pattern3 Plan 基盤
- DomainPlan: Pattern3IfPhiPlan 構造体追加
- Extractor: extract_pattern3_plan() 追加
- Normalizer: normalize_pattern3_if_phi() スタブ追加(レガシー JoinIR へフォールバック)
- Router: PLAN_EXTRACTORS に Pattern3 追加
## テスト結果
- quick 154 PASS
- Phase 118 smoke PASS(出力 12、退行解消)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 04:01:11 +09:00 |
|
|
|
21daf1b7dd
|
refactor(joinir): Phase 286 コード品質改善 - ヘルパー共通化 + static box フィルタ
## 1. lower_*_ast ヘルパー共通化
- `lower_value_ast()` に MethodCall 対応追加
- Pattern8 normalizer も共有ヘルパーを使用
- Pattern1/8/9 で一貫した lowering ロジック
## 2. PLAN_EXTRACTORS ドキュメント追加
- `WithPostLoop` variant: 将来拡張用として残存理由を明記
- 現在は常に `&[]` を渡すが、post-loop segment analysis 用に保持
## 3. Legacy Pattern8 残存 + static box フィルタ
- Plan extractor は pure 関数(builder にアクセス不可)
- router 側で static box フィルタリングを実装
- static box コンテキストは legacy Pattern8 へ fallback
- legacy 残存理由をドキュメント化
## 検証
- Quick: 154 PASS, 0 FAILED
- Pattern8 integration: exit 7
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 03:35:02 +09:00 |
|
|
|
832d018046
|
feat(joinir): Phase 286 P2.4.1 - Pattern8 normalizer 実装 + Fail-Fast 化
## 概要
Pattern8 (BoolPredicateScan) を Plan line で完走させる。
stub normalizer を完全実装に置き換え、legacy fallback を禁止。
## Step 0: Fixture 簡約
- `?:` ternary → `if/else` に変更(PoC 安定化)
## Step 1: Router Fail-Fast 化
- 文字列判定 `e.contains("[normalizer/pattern8]")` を削除
- extract が Some → normalize/lower 失敗は即 Err(fallback 禁止)
- extract が None → 次の extractor へ(legacy 含む)
## Step 2: Pattern8 normalizer 実装
- CFG: preheader → header(PHI) → body → found/step → after
- found: return false(早期脱出)
- after: return true(ループ完走)
- compose::cleanup() で 2 つの Return exit をマージ
## 検証結果
- Integration: exit 7 ✅
- Plan 完走: route=plan strategy=extract pattern=Pattern8 MATCHED
- Regression: quick 154 PASS, 0 FAILED
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 03:17:48 +09:00 |
|
|
|
064cae169e
|
feat(joinir): Phase 286 P2.4 - Pattern8 BoolPredicateScan Plan化 PoC
## 概要
Pattern8 (BoolPredicateScan) を Plan extraction routing に追加。
static box 除外(Phase 269 決定)を尊重し、非 static box fixture で PoC。
## 実装内容
- Pattern8BoolPredicateScanPlan struct + DomainPlan variant
- extract_pattern8_plan(): 条件・predicate check・increment 抽出
- normalize_pattern8_bool_predicate_scan(): PoC stub(CoreExitPlan::Return 未統合)
- PLAN_EXTRACTORS テーブルに Pattern8 追加(3rd priority)
- エラーフォールバック: Plan normalization 失敗時 → legacy Pattern8 へ
## 動作フロー
Plan extraction MATCHED → normalization failed (PoC stub) → legacy Pattern8 MATCHED
## 検証結果
- Integration: phase286_pattern8_plan_poc_vm PASS (exit 7)
- Regression: quick 154 PASS, 0 FAILED
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 03:01:11 +09:00 |
|
|
|
1d24e9a106
|
feat(joinir): Phase 286 P2.3 + Phase 287 - Pattern9 Plan化 + Router table-driven
## Phase 286 P2.3: Pattern9 AccumConstLoop Plan化 PoC
- DomainPlan::Pattern9AccumConstLoop 追加
- PlanNormalizer::normalize_pattern9_accum_const_loop() 実装
- PHI 2本(loop_var, acc_var)
- const/var 両方 OK(sum = sum + 1 または sum = sum + i)
- Pattern9 は Pattern1 より優先(より具体的なパターン)
- Integration test: phase286_pattern9_frag_poc PASS (return: 3)
- Regression: quick 154 PASS
## Phase 287: Router table-driven Plan extraction
- PLAN_EXTRACTORS static table で Pattern6/7/4/9/1 を統一管理
- PlanExtractorEntry/PlanExtractorVariant 構造体追加
- try_plan_extractors() で ~100行 → 3行に集約
- メンテナンス性向上(新 Pattern 追加はテーブル1行追加のみ)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-26 02:38:09 +09:00 |
|
|
|
a824346e30
|
feat(joinir): Phase 286 P2/P2.1/P2.2 - JoinIR Line Absorption (Pattern1/4 Plan化 PoC + hygiene)
Phase 286 P2: Pattern4 (Loop with Continue) を Plan/Frag SSOT に移行
- DomainPlan::Pattern4Continue 追加
- PlanNormalizer::normalize_pattern4_continue() 実装(phi_bindings による PHI dst 優先参照)
- Router integration(Plan line routing → legacy fallback)
- Integration test PASS (output: 6), quick smoke 154/154 PASS
Phase 286 P2.1: Pattern1 (SimpleWhile) を Plan/Frag SSOT に移行
- DomainPlan::Pattern1SimpleWhile 追加
- PlanNormalizer::normalize_pattern1_simple_while() 実装(4ブロック、1 PHI、phi_bindings 流用)
- Router integration(Plan line routing → legacy fallback)
- Integration test PASS (return: 3), quick smoke 154/154 PASS
Phase 286 P2.2: hygiene(extractor重複排除 + router小整理)
- extractor helper化: extract_loop_increment_plan を common_helpers.rs に統一
- Pattern1/Pattern4 が呼ぶだけに変更(重複排除 ~25行)
- router helper化: lower_via_plan() を追加し Pattern6/7/4/1 で共用
- 3行パターン(normalize→verify→lower)を1関数に集約(ボイラープレート削減 ~40行)
成果物:
- DomainPlan 2パターン新規追加(Pattern1SimpleWhile, Pattern4Continue)
- Normalizer 2つの normalize 関数追加
- Router に Plan line ブロック追加 + lower_via_plan() helper
- Extractor に extract_pattern1_plan() 追加
- Integration fixtures 2個 + smoke tests 2個
検証:
- quick smoke: 154/154 PASS
- integration: phase286_pattern1_frag_poc PASS, phase286_pattern4_frag_poc PASS
- Plan line routing: route=plan strategy=extract で Pattern1/4 検出確認
🤖 Generated with Claude Code
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2025-12-26 02:03:22 +09:00 |
|
|
|
a744be929a
|
feat(edgecfg): Phase 281 P3 - cleanup Normal wiring + docs
|
2025-12-23 04:11:02 +09:00 |
|
|
|
2d5607930c
|
docs(edgecfg): Phase 280 - Frag Composition SSOT Positioning (A→B→C)
## Purpose
Stop pattern number enumeration proliferation by establishing Frag composition API
as the Single Source of Truth (SSOT) for structured control flow → CFG lowering.
Pattern numbers (1-9+) are **symptom labels** for regression tests, NOT architectural
concepts. The architectural SSOT is **Frag composition rules** (seq/if/loop/cleanup).
## Changes Summary
**Phase A (Docs-only, no code)**: SSOT Positioning
- edgecfg-fragments.md: Status Draft → Active SSOT (+243 lines)
- Added 5 sections: Composition SSOT, Rules, Laws, Fail-Fast, Ownership
- Documented 3-tier ownership model (Normalizer/Composition/Lowerer)
- Established composition as pattern absorption destination
- joinir-architecture-overview.md: Pattern absorption documentation (+90 lines)
- Added Section 0.2: Pattern Number Absorption Destination
- JoinIR vs Plan comparison (different extraction, same SSOT)
- Pattern absorption status table (Pattern6/7 as Phase 280 targets)
- phase-280/README.md: Full roadmap (new)
**Phase B (API solidification)**: Contract Verification
- compose.rs: Module-level + function-level Phase 280 docs (+149 lines)
- Documented composition SSOT, ownership model, usage example
- Added constraint/composition law sections to seq/if/loop/cleanup
- Contract verification: All seq/if/loop contracts verified (no gaps)
- Test gap analysis: No missing tests (wires/exits separation explicitly tested)
**Phase C (Pattern preparation)**: Documentation-only
- normalizer.rs: Pattern6/7 TODO comments (+10 lines)
- Pattern6: Early exit doesn't fit compose::if_() → cleanup() target
- Pattern7: 挙動不変保証難 → compose::if_() migration deferred to Phase 281
## Impact
- **Net +460 lines** (docs-heavy, minimal code)
- **4 files modified**, 1 directory created
- **SSOT established**: Frag composition is now THE absorption destination
- **導線固定**: Clear migration path for Pattern6/7 (Phase 281+)
- **No behavior change**: Documentation-only for Phase C (tests not run)
## Phase 280 Goal Achieved
✅ SSOT positioning + 導線固定 (NOT full migration - that's Phase 281)
✅ Phase A complete: Docs updated to "Active SSOT"
✅ Phase B complete: API contract verified and documented
✅ Phase C complete: Pattern6/7 hand-rolled locations documented
## Next Phase (Phase 281+)
- Phase 281: Full Pattern6/7 absorption (replace hand-rolled with compose_*)
- Phase 282: Router shrinkage (pattern numbers → test labels)
- Phase 283+: Pattern8 and beyond
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2025-12-23 01:18:36 +09:00 |
|
|
|
1b7fd7a0ff
|
refactor(plan): Phase 273 P3+ - Legacy code removal
Phase 273 P3+ 完成: レガシーコード削除 + 未使用 import 整理
Removed Legacy Items:
1. emit_scan_with_init_edgecfg() - Pattern6 固有の emission 関数
- File deleted: src/mir/builder/emission/loop_scan_with_init.rs (~144 lines)
- Replaced by: generalized Frag API (Phase 273 P2)
2. CoreCarrierInfo struct - Legacy carrier representation
- Removed from: src/mir/builder/control_flow/plan/mod.rs (~15 lines)
- Replaced by: CorePhiInfo (generalized PHI representation)
3. verify_carrier() function - CoreCarrierInfo validator
- Removed from: src/mir/builder/control_flow/plan/verifier.rs (~15 lines)
- Replaced by: generalized PHI verification (V7-V9)
Code Cleanup:
- cargo fix applied: unused imports removed (~30 files)
- Verifier invariants updated: V1→V2-V9 (carrier→PHI model)
- Module declaration cleanup in emission/mod.rs
Impact:
- Total lines removed: ~174 lines (net reduction)
- Pattern-agnostic architecture strengthened
- All legacy Pattern6 references eliminated
Tests:
- ✅ VM tests PASS (phase254/256/258)
- ✅ LLVM tests PASS (phase256/258)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-23 00:11:20 +09:00 |
|
|
|
0664526d99
|
feat(plan): Phase 273 P3 - Plan Lowering SSOT Finalize
Phase 273 P3 完成: CoreLoopPlan SSOT 化、legacy fallback 撤去
Changes:
- CoreLoopPlan: Option<...> → 必須フィールド化(構造で "揺れ" を消す)
- block_effects, phis, frag, final_values が必須に
- legacy fields 削除 (header_effects, step_effects, carriers, loop_var_name)
- Lowerer: lower_loop_legacy() 撤去、generalized 経路のみ
- emit_scan_with_init_edgecfg() 参照が完全に消えた
- Normalizer: Pattern6/7 両方が generalized fields のみを使用
- Verifier: generalized 専用の不変条件追加 (V7-V9)
- V7: PHI non-empty
- V8: frag.entry == header_bb
- V9: block_effects contains header_bb
Acceptance Criteria:
- ✅ Lowerer から pattern 固有参照が消えている
- ✅ Pattern6/7 が generalized CoreLoopPlan を使用
- ✅ legacy fallback 撤去、欠落時は型エラー (Fail-Fast)
- ✅ VM テスト PASS (phase254/256/258)
- ✅ LLVM テスト PASS (phase256/258)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-23 00:01:58 +09:00 |
|
|
|
e4b5a8e832
|
feat(plan): Phase 273 P2 Step 3-6 - Pattern7 (SplitScan) to Plan line
Migrate Pattern7 from legacy lowering to Plan architecture:
DomainPlan (mod.rs):
- Added SplitScan(SplitScanPlan) variant
- SplitScanPlan: s_var, sep_var, result_var, i_var, start_var
Extractor (pattern7_split_scan.rs):
- extract_split_scan_plan() returning DomainPlan
- Reuses existing extract_split_scan_parts()
Router (router.rs):
- Pattern7 now uses Plan line (Normalize→Verify→Lower)
- Removed from LOOP_PATTERNS table
Normalizer (normalizer.rs):
- normalize_split_scan() - 400+ lines migrated from impl
- 6 blocks: preheader/header/body/then/else/step/after
- 4 PHIs: header(2) + step(2) for i/start carriers
- Side effect: push with EffectMask::MUT
Bug fixes:
- Pattern6 extractor returns Ok(None) for non-match (allows fallback)
- Reverse scan filtered early in extractor (P1 scope)
Tests:
- phase256_p0_split_vm: PASS (exit=3)
- phase258_p0_index_of_string_vm: PASS (exit=6)
Lowerer no longer contains "split" - pattern-agnostic achieved!
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-22 23:35:43 +09:00 |
|
|
|
d16800741f
|
feat(plan): Phase 273 P2 Step 1-2 - CoreLoopPlan generalization
Generalize CoreLoopPlan for Pattern7+ support:
New structures (mod.rs):
- CorePhiInfo: PHI info with block, dst, inputs, tag
- CoreLoopPlan new optional fields:
- block_effects: Vec<(BasicBlockId, Vec<CoreEffectPlan>)>
- phis: Vec<CorePhiInfo>
- frag: Frag (EdgeCFG)
- final_values: Vec<(String, ValueId)>
Normalizer (normalizer.rs):
- Pattern6 now populates all new fields
- Frag construction matches emit_scan_with_init_edgecfg
- SSOT ordering: preheader → header → body → step
Lowerer (lowerer.rs):
- lower_loop() dispatches to generalized or legacy path
- lower_loop_generalized(): emit blocks → PHI → emit_frag()
- lower_loop_legacy(): backward compatible fallback
Test: phase258_p0_index_of_string_vm PASS (exit=6)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-22 23:18:51 +09:00 |
|
|
|
ec792983cc
|
feat(plan): Phase 273 P2 Step 0 - CoreEffectPlan side effect support
Prepare CoreEffectPlan::MethodCall for Pattern7 (split) support:
- dst: ValueId → Option<ValueId> (for void methods like push)
- effects: EffectMask field added (PURE+Io vs MUT)
Changes:
- plan/mod.rs: MethodCall struct updated
- plan/lowerer.rs: emit_effect() uses dst/effects from plan
- plan/normalizer.rs: MethodCall with explicit effects
- plan/verifier.rs: Handle Option<ValueId> dst
Test: phase258_p0_index_of_string_vm PASS (exit=6)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-22 23:07:49 +09:00 |
|
|
|
960241795d
|
feat(mir/llvm): Phase 273 P0-P1 DomainPlan→CorePlan + LLVM arg fix
Phase 273 P0-P1: Two-layer plan architecture
- DomainPlan: Pattern-specific knowledge (ScanWithInit)
- CorePlan: Fixed vocabulary (Seq, Loop, If, Effect, Exit)
- ValueId references only (String expressions forbidden)
- Pipeline: Extractor→Normalizer→Verifier→Lowerer
New plan/ module:
- mod.rs: Type definitions, SSOT spec
- normalizer.rs: DomainPlan→CorePlan + ID allocation
- verifier.rs: V1-V6 invariant checks (fail-fast)
- lowerer.rs: CorePlan→MIR (pattern-agnostic)
LLVM fix (ChatGPT):
- function_lower.py: Fix argument reference bug
- Phase 258 index_of_string now PASS on LLVM backend
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-22 22:42:56 +09:00 |
|