feat(joinir): Phase 183 LoopBodyLocal role separation + test fixes
Phase 183 Implementation: - Added is_var_used_in_condition() helper for AST variable detection - Implemented LoopBodyLocal filtering in TrimLoopLowerer - Created 4 test files for P1/P2 patterns - Added 5 unit tests for variable detection Test Fixes: - Fixed test_is_outer_scope_variable_pinned (BasicBlockId import) - Fixed test_pattern2_accepts_loop_param_only (literal node usage) Refactoring: - Unified pattern detection documentation - Consolidated CarrierInfo initialization - Documented LoopScopeShape construction paths 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -39,10 +39,16 @@ impl MirBuilder {
|
||||
// Phase 170-4: Structure-based routing option
|
||||
// When NYASH_JOINIR_STRUCTURE_ONLY=1, skip function name whitelist
|
||||
// and route purely based on loop structure analysis
|
||||
let structure_only = std::env::var("NYASH_JOINIR_STRUCTURE_ONLY")
|
||||
// Phase 196: Default to structure-first routing now that LoopBuilder is removed.
|
||||
// - Default: ON (structure_only = true) to allow JoinIR patterns to run for all loops.
|
||||
// - To revert to the previous whitelist-only behavior, set NYASH_JOINIR_STRUCTURE_ONLY=0.
|
||||
let structure_only = match std::env::var("NYASH_JOINIR_STRUCTURE_ONLY")
|
||||
.ok()
|
||||
.as_deref()
|
||||
== Some("1");
|
||||
{
|
||||
Some("0") | Some("off") => false,
|
||||
_ => true,
|
||||
};
|
||||
|
||||
if structure_only {
|
||||
trace::trace().routing("router", &func_name, "Structure-only mode enabled, skipping whitelist");
|
||||
|
||||
Reference in New Issue
Block a user