|
|
2fc2cf74d1
|
feat(joinir): Phase 220-B ConditionEnv integration for if-sum lowerer
Integrates ConditionEnv infrastructure into if-sum lowerer to support
variable conditions like `loop(i < len)`.
## Implementation (Following Pattern 2)
### ConditionEnv Construction
- Added early construction via ConditionEnvBuilder::build_for_break_condition_v2()
- Extracts condition variables from loop condition AST
- Creates ConditionBindings for HOST↔JoinIR ValueId mapping
### Variable Support
- Created ValueOrLiteral enum (Literal(i64) | Variable(String, ValueId))
- Added extract_value_or_variable() with ConditionEnv lookup
- Updated extract_loop_condition() and extract_if_condition()
### JoinIR Generation Updates
- Condition-only variables as loop_step function parameters
- Proper parameter passing in recursive calls
- Condition ValueIds in JoinIR param region (100+)
### Boundary Builder Wiring
- Pass condition_bindings to JoinInlineBoundaryBuilder
- Updated call site in pattern3_with_if_phi.rs
- Added variable_map, loop_var_name, loop_var_id parameters
## Build Status
✅ Compilation successful (0 errors, 3 warnings)
## Test Status
⏳ Tests not yet passing - remap issue identified:
- HOST: len = ValueId(6)
- JoinIR: len = ValueId(101)
- After Merge: len = ValueId(10) ❌
Root cause: JoinIRConversionPipeline remap needs investigation
## Files Modified
- src/mir/join_ir/lowering/loop_with_if_phi_if_sum.rs (+80 lines)
- ConditionEnv construction
- Variable support in conditions
- Updated function signatures
- src/mir/builder/control_flow/joinir/patterns/pattern3_with_if_phi.rs (+10 lines)
- Pass builder/loop_var to lowerer
- Wire condition_bindings
## Design Principles
1. Reuse Existing Boxes (ConditionEnv/ConditionBinding)
2. Follow Pattern 2 Structure (proven blueprint)
3. Fail-Fast (variable not in ConditionEnv → error)
4. ParamRole::Condition Routing (separate from carriers)
## Next Steps: Phase 220-C
Fix remap issue in JoinIRConversionPipeline to properly use
condition_bindings.host_value during merge.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2025-12-10 02:54:56 +09:00 |
|