prometeu-studio/docs/pbs/pull-requests/PR-O4.3-semantic-lowering-cfg-and-stack-analysis.md
2026-03-24 13:42:27 +00:00

32 lines
1.2 KiB
Markdown

# 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.