Move the DWARF debug-info emission out of emit_llvm.zig into a DebugInfo backend *LLVMEmitter facade (field `e`). Behavior-preserving relocation — self.* -> self.e.* only. - src/backend/llvm/debug.zig (DebugInfo): debugEnabled + diFileFor (private) + initDebugInfo / beginFunctionDebug / endFunctionDebug / setInstDebugLocation / finalizeDebugInfo (pub). The mutable DI state (di_builder/di_cu/di_files/ di_scope/current_func_file) + the shared source map (import_sources/main_file) stay on LLVMEmitter; the facade reads/writes them via self.e.*. - Routed the 5 pass-order call sites in LLVMEmitter.emit (init/finalize/ begin/end/setInstDebugLocation) through a new debugInfo() accessor. - setDebugContext stays on LLVMEmitter (shared-state setter; callers in main.zig/ core.zig/test). sourceForFile stays on LLVMEmitter and is widened to pub — it is shared with reflection's trace-frame emission (emitTraceFrame), not debug-only. - No DI logic / module-flag / DWARF-version / scope-line change. Gate: zig build, zig build test, bash tests/run_examples.sh -> 361/0 (no churn).
6.8 KiB
6.8 KiB