Files
hakorune/src/mir/builder/control_flow/debug.rs

31 lines
1.0 KiB
Rust
Raw Normal View History

//! Debug utilities for control flow tracing.
//!
//! This module provides diagnostic tools for tracing and debugging
//! control flow behavior during MIR construction.
//!
feat(joinir): Phase 195 - Unified JoinLoopTrace for all JoinIR debug output Created centralized tracing module for JoinIR loop lowering operations, consolidating scattered eprintln! calls into a single SSOT interface. # Implementation 1. **Created trace.rs module** (~233 lines) - JoinLoopTrace struct with env var controls - Unified API: pattern(), varmap(), joinir_stats(), phi(), merge(), etc. - Global singleton via trace() function - Supports 5 env vars: NYASH_TRACE_VARMAP, NYASH_JOINIR_DEBUG, NYASH_OPTION_C_DEBUG, NYASH_JOINIR_MAINLINE_DEBUG, NYASH_LOOPFORM_DEBUG 2. **Updated debug.rs** - Delegates trace_varmap() to JoinLoopTrace 3. **Updated routing.rs** - All eprintln! replaced with trace calls (10 instances) 4. **Updated pattern routers** - All 3 patterns now use unified trace - pattern1_minimal.rs: 6 replacements - pattern2_with_break.rs: 6 replacements - pattern3_with_if_phi.rs: 6 replacements - router.rs: 2 replacements 5. **Updated merge/block_allocator.rs** - 6 eprintln! → trace calls # Benefits - **Single Source of Truth**: All trace control through environment variables - **Consistent Format**: Unified [trace:*] prefix for easy filtering - **Zero Overhead**: No output when env vars unset - **Easy Extension**: Add new trace points via existing API - **Better Debug Experience**: Structured output with clear categories # Testing ✅ cargo build --release - Success ✅ NYASH_TRACE_VARMAP=1 - Shows varmap traces only ✅ NYASH_JOINIR_DEBUG=1 - Shows joinir + blocks + routing traces ✅ No env vars - No debug output ✅ apps/tests/loop_min_while.hako - All tests pass # Related - Phase 191-194 groundwork (modular merge structure) - NYASH_TRACE_VARMAP added today for variable_map debugging - Consolidates ~80 scattered eprintln! calls across JoinIR 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 22:23:51 +09:00
//! # Phase 195: Unified Tracing
//!
//! All JoinIR tracing now goes through the JoinLoopTrace module.
//! See `joinir/trace.rs` for the unified tracing interface.
//!
//! # Environment Variables
//!
//! - `NYASH_TRACE_VARMAP=1` - Enable variable map tracing
feat(joinir): Phase 195 - Unified JoinLoopTrace for all JoinIR debug output Created centralized tracing module for JoinIR loop lowering operations, consolidating scattered eprintln! calls into a single SSOT interface. # Implementation 1. **Created trace.rs module** (~233 lines) - JoinLoopTrace struct with env var controls - Unified API: pattern(), varmap(), joinir_stats(), phi(), merge(), etc. - Global singleton via trace() function - Supports 5 env vars: NYASH_TRACE_VARMAP, NYASH_JOINIR_DEBUG, NYASH_OPTION_C_DEBUG, NYASH_JOINIR_MAINLINE_DEBUG, NYASH_LOOPFORM_DEBUG 2. **Updated debug.rs** - Delegates trace_varmap() to JoinLoopTrace 3. **Updated routing.rs** - All eprintln! replaced with trace calls (10 instances) 4. **Updated pattern routers** - All 3 patterns now use unified trace - pattern1_minimal.rs: 6 replacements - pattern2_with_break.rs: 6 replacements - pattern3_with_if_phi.rs: 6 replacements - router.rs: 2 replacements 5. **Updated merge/block_allocator.rs** - 6 eprintln! → trace calls # Benefits - **Single Source of Truth**: All trace control through environment variables - **Consistent Format**: Unified [trace:*] prefix for easy filtering - **Zero Overhead**: No output when env vars unset - **Easy Extension**: Add new trace points via existing API - **Better Debug Experience**: Structured output with clear categories # Testing ✅ cargo build --release - Success ✅ NYASH_TRACE_VARMAP=1 - Shows varmap traces only ✅ NYASH_JOINIR_DEBUG=1 - Shows joinir + blocks + routing traces ✅ No env vars - No debug output ✅ apps/tests/loop_min_while.hako - All tests pass # Related - Phase 191-194 groundwork (modular merge structure) - NYASH_TRACE_VARMAP added today for variable_map debugging - Consolidates ~80 scattered eprintln! calls across JoinIR 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 22:23:51 +09:00
//! - `NYASH_JOINIR_DEBUG=1` - Enable general JoinIR debug output
//! - `NYASH_OPTION_C_DEBUG=1` - Enable PHI-related debug
//! - `NYASH_JOINIR_MAINLINE_DEBUG=1` - Enable mainline routing debug
//! - `NYASH_LOOPFORM_DEBUG=1` - Enable LoopForm debug
use super::super::MirBuilder;
impl MirBuilder {
/// Trace variable_map state for debugging
feat(joinir): Phase 195 - Unified JoinLoopTrace for all JoinIR debug output Created centralized tracing module for JoinIR loop lowering operations, consolidating scattered eprintln! calls into a single SSOT interface. # Implementation 1. **Created trace.rs module** (~233 lines) - JoinLoopTrace struct with env var controls - Unified API: pattern(), varmap(), joinir_stats(), phi(), merge(), etc. - Global singleton via trace() function - Supports 5 env vars: NYASH_TRACE_VARMAP, NYASH_JOINIR_DEBUG, NYASH_OPTION_C_DEBUG, NYASH_JOINIR_MAINLINE_DEBUG, NYASH_LOOPFORM_DEBUG 2. **Updated debug.rs** - Delegates trace_varmap() to JoinLoopTrace 3. **Updated routing.rs** - All eprintln! replaced with trace calls (10 instances) 4. **Updated pattern routers** - All 3 patterns now use unified trace - pattern1_minimal.rs: 6 replacements - pattern2_with_break.rs: 6 replacements - pattern3_with_if_phi.rs: 6 replacements - router.rs: 2 replacements 5. **Updated merge/block_allocator.rs** - 6 eprintln! → trace calls # Benefits - **Single Source of Truth**: All trace control through environment variables - **Consistent Format**: Unified [trace:*] prefix for easy filtering - **Zero Overhead**: No output when env vars unset - **Easy Extension**: Add new trace points via existing API - **Better Debug Experience**: Structured output with clear categories # Testing ✅ cargo build --release - Success ✅ NYASH_TRACE_VARMAP=1 - Shows varmap traces only ✅ NYASH_JOINIR_DEBUG=1 - Shows joinir + blocks + routing traces ✅ No env vars - No debug output ✅ apps/tests/loop_min_while.hako - All tests pass # Related - Phase 191-194 groundwork (modular merge structure) - NYASH_TRACE_VARMAP added today for variable_map debugging - Consolidates ~80 scattered eprintln! calls across JoinIR 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 22:23:51 +09:00
///
/// Phase 195: Delegates to JoinLoopTrace for unified tracing.
/// Enable with NYASH_TRACE_VARMAP=1
#[allow(dead_code)]
pub(in crate::mir::builder) fn trace_varmap(&self, context: &str) {
feat(joinir): Phase 195 - Unified JoinLoopTrace for all JoinIR debug output Created centralized tracing module for JoinIR loop lowering operations, consolidating scattered eprintln! calls into a single SSOT interface. # Implementation 1. **Created trace.rs module** (~233 lines) - JoinLoopTrace struct with env var controls - Unified API: pattern(), varmap(), joinir_stats(), phi(), merge(), etc. - Global singleton via trace() function - Supports 5 env vars: NYASH_TRACE_VARMAP, NYASH_JOINIR_DEBUG, NYASH_OPTION_C_DEBUG, NYASH_JOINIR_MAINLINE_DEBUG, NYASH_LOOPFORM_DEBUG 2. **Updated debug.rs** - Delegates trace_varmap() to JoinLoopTrace 3. **Updated routing.rs** - All eprintln! replaced with trace calls (10 instances) 4. **Updated pattern routers** - All 3 patterns now use unified trace - pattern1_minimal.rs: 6 replacements - pattern2_with_break.rs: 6 replacements - pattern3_with_if_phi.rs: 6 replacements - router.rs: 2 replacements 5. **Updated merge/block_allocator.rs** - 6 eprintln! → trace calls # Benefits - **Single Source of Truth**: All trace control through environment variables - **Consistent Format**: Unified [trace:*] prefix for easy filtering - **Zero Overhead**: No output when env vars unset - **Easy Extension**: Add new trace points via existing API - **Better Debug Experience**: Structured output with clear categories # Testing ✅ cargo build --release - Success ✅ NYASH_TRACE_VARMAP=1 - Shows varmap traces only ✅ NYASH_JOINIR_DEBUG=1 - Shows joinir + blocks + routing traces ✅ No env vars - No debug output ✅ apps/tests/loop_min_while.hako - All tests pass # Related - Phase 191-194 groundwork (modular merge structure) - NYASH_TRACE_VARMAP added today for variable_map debugging - Consolidates ~80 scattered eprintln! calls across JoinIR 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 22:23:51 +09:00
super::joinir::trace::trace().varmap(context, &self.variable_map);
}
}