refactor(joinir): Phase 242-EX-A - Delete legacy Pattern3 lowerer

Remove hardcoded Pattern3 PoC implementation (loop_with_if_phi_minimal.rs)
and enhance if-sum mode to handle complex conditions like `i % 2 == 1`.

Key changes:
- condition_pattern.rs: Accept BinaryOp in comparison operands (+58 lines)
- loop_with_if_phi_if_sum.rs: Dynamic complex condition lowering (+147 lines)
- pattern3_with_if_phi.rs: Remove lower_pattern3_legacy() (-130 lines)
- loop_with_if_phi_minimal.rs: Delete entire file (-437 lines)
- loop_patterns/with_if_phi.rs: Update stub (-45 lines)
- mod.rs: Remove module reference (-4 lines)

Net reduction: -664 lines of hardcoded PoC code

Test results: 909/909 PASS (legacy mode completely removed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-11 01:27:08 +09:00
parent 811dfebf98
commit 2dfe363365
19 changed files with 539 additions and 662 deletions

View File

@ -83,46 +83,9 @@ pub fn lower_loop_with_conditional_phi_to_joinir(
_loop_form: &LoopForm,
_lowerer: &mut LoopToJoinLowerer,
) -> Option<JoinInst> {
// Phase 188-Impl-3: Delegate to minimal lowerer
// TODO: Extract LoopScopeShape from loop_form for generic implementation
use crate::mir::join_ir::lowering::join_value_space::JoinValueSpace;
use crate::mir::join_ir::lowering::loop_scope_shape::LoopScopeShape;
use crate::mir::join_ir::lowering::loop_with_if_phi_minimal::lower_loop_with_if_phi_pattern;
use crate::mir::BasicBlockId;
use std::collections::{BTreeMap, BTreeSet};
// For now, use a placeholder LoopScopeShape
// TODO: Build actual LoopScopeShape from loop_form
let placeholder_scope = LoopScopeShape {
header: BasicBlockId(0),
body: BasicBlockId(0),
latch: BasicBlockId(0),
exit: BasicBlockId(0),
pinned: BTreeSet::new(),
carriers: BTreeSet::new(),
body_locals: BTreeSet::new(),
exit_live: BTreeSet::new(),
progress_carrier: None,
variable_definitions: BTreeMap::new(),
};
// Phase 202-B: Create JoinValueSpace for unified ValueId allocation
let mut join_value_space = JoinValueSpace::new();
// Generate JoinIR module
// Phase 213: Updated to handle Result<(JoinModule, JoinFragmentMeta), String>
let _result = lower_loop_with_if_phi_pattern(placeholder_scope, &mut join_value_space).ok()?;
// Phase 188-Impl-3: Pattern 3 is now integrated via the router
// This function delegates to loop_with_if_phi_minimal which generates JoinModule
//
// TODO: Either:
// 1. Remove this function and rely only on router integration, OR
// 2. Implement JoinModule → JoinInst conversion here (future phase)
eprintln!("[loop_patterns] Pattern 3: Lowering delegated to loop_with_if_phi_minimal");
// Temporary: Return None to trigger fallback
// Pattern 3 currently works via router which calls minimal lowerer directly
// Phase 242-EX-A: Legacy stub removed
// Pattern 3 is now fully handled via router → pattern3_with_if_phi.rs → loop_with_if_phi_if_sum.rs
// This stub function is unused and kept only for API compatibility
eprintln!("[loop_patterns] Pattern 3: Stub - routing via pattern3_with_if_phi.rs");
None
}