refactor(phi_core): Phase 193 - Complete loopform modularization with 4-pass architecture
Phase 193: loopform_builder.rs modularization (1,166 → 102 lines, 91% reduction) ## Module Structure Created ``` src/mir/phi_core/loopform/ ├── mod.rs (102 lines) - Public API coordinator ├── context.rs (148 lines) - ValueId management ├── variable_models.rs (101 lines) - Variable types ├── utils.rs (112 lines) - Utilities ├── exit_phi.rs (96 lines) - Exit PHI builder ├── builder_core.rs (411 lines) - Core builder logic ├── passes/ │ ├── mod.rs (67 lines) - Pass coordinator │ ├── pass1_discovery.rs (156 lines) - Variable discovery │ ├── pass2_preheader.rs (70 lines) - Preheader copies │ ├── pass3_header_phi.rs (106 lines) - Header PHI construction │ └── pass4_seal.rs (276 lines) - PHI completion ``` ## 4-Pass Architecture Explicit ### Pass 1: Variable Discovery (pass1_discovery.rs) - Classify variables as carriers or pinned - Allocate all ValueIds upfront - GUARD protection for invalid ValueIds ### Pass 2: Preheader Copy (pass2_preheader.rs) - Emit deterministic copy instructions - Order: pinned first, carriers second ### Pass 3: Header PHI Construction (pass3_header_phi.rs) - Generate incomplete PHI nodes - First input: preheader_copy (known) - Second input: latch value (unknown) ### Pass 4: PHI Sealing (pass4_seal.rs) - Complete PHI nodes with latch values - Separate pinned/carrier handling - PHI optimization (same-value detection) ## Size Comparison Before: - loopform_builder.rs: 1,166 lines (monolithic) - loopform_passes.rs: 133 lines (documentation stub) - Total: 1,299 lines in 2 files After: - 11 focused modules: 1,645 lines total - Main file (mod.rs): 102 lines (91% reduction) - Largest module: builder_core (411 lines) - Average module size: 150 lines - 4 pass modules: 608 lines (explicit structure) ## Success Criteria Met ✅ Directory structure created with 11 focused modules ✅ 4-pass architecture explicit and clear ✅ cargo build --release succeeds ✅ Loop programs execute correctly ✅ Zero breaking changes (all APIs compatible) ✅ Module documentation comprehensive ✅ All visibility correct (pub/pub(crate) appropriate) ## Files Modified - NEW: src/mir/phi_core/loopform/mod.rs (public API) - NEW: src/mir/phi_core/loopform/builder_core.rs (core builder) - NEW: src/mir/phi_core/loopform/passes/*.rs (4 pass modules) - MOVED: loopform_*.rs → loopform/*.rs (5 files) - DELETED: loopform_builder.rs, loopform_passes.rs - UPDATED: phi_core/mod.rs (import structure) - UPDATED: json_v0_bridge/lowering/loop_.rs (import path) ## Impact - **Maintainability**: Each pass has clear responsibilities - **Testability**: Individual passes can be tested independently - **Documentation**: Comprehensive module and pass documentation - **Modularity**: Clean separation of concerns - **Readability**: No file exceeds 411 lines Phase 1-3 modularization complete. Ready for new feature development.
This commit is contained in:
@ -24,7 +24,7 @@ use super::super::ast::ExprV0;
|
||||
use super::super::ast::StmtV0;
|
||||
use super::{lower_stmt_list_with_vars, new_block, BridgeEnv, LoopContext};
|
||||
use crate::ast::Span;
|
||||
use crate::mir::phi_core::loopform_builder::{LoopFormBuilder, LoopFormOps};
|
||||
use crate::mir::phi_core::loopform::{LoopFormBuilder, LoopFormOps};
|
||||
use crate::mir::{BasicBlockId, MirFunction, MirInstruction, ValueId};
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user