# PR-O4.3 - Semantic Lowering, CFG, and Stack Analysis ## Briefing Trocar lowering executável baseado em coleta de callsites por lowering semântico real com construção de CFG e cálculo formal de `max_stack_slots`. ## Target - `PbsFrontendCompiler` (lowering executável). - Modelo `IRBackendExecutableFunction` para instruções semânticas. - Regras de stack/slot no handoff FE -> BE. ## Method - Introduzir lowering de statements/expressões para instruções executáveis (não apenas calls + RET). - Construir CFG por função e resolver blocos/jumps explicitamente. - Calcular `max_stack_slots` por análise de fluxo em vez de heurística fixa. - Preservar spans por instrução para debug e diagnóstico. ## Acceptance Criteria - Programas com controle de fluxo e expressões produzem IR executável semântico. - `max_stack_slots` é derivado por análise, não constante heurística. - Paths não terminados e inconsistências de stack são detectados no FE/BE boundary. - Contrato de lowering mantém determinismo para o mesmo AST admitido. ## Tests - Fixtures com `if/while/for/switch/handle` e joins de controle. - Testes de stack-depth máximo e mismatch em join. - Regressão de spans e call classification.