74 lines
2.6 KiB
Markdown
74 lines
2.6 KiB
Markdown
# PR-07.1 - OptimizeIRVM Span and Source-Hook Preservation
|
|
|
|
## Briefing
|
|
|
|
A matriz de conformidade ainda marca `G21-7.5` como `partial`.
|
|
|
|
Hoje existe evidencia de spans no lowering, mas falta regressao dedicada provando que passes de `OptimizeIRVM` preservam hooks de atribuicao de origem (spans/source hooks) apos reescritas de instrucoes e remapeamento de saltos.
|
|
|
|
## Motivation
|
|
|
|
### Dor atual que esta PR resolve
|
|
|
|
1. Risco de regressao silenciosa em spans durante otimização.
|
|
2. Evidencia insuficiente para fechar `G21-7.5`.
|
|
3. Diagnosticos pos-otimizacao podem perder rastreabilidade sem prova dedicada.
|
|
|
|
## Target
|
|
|
|
Fechar `G21-7.5` com suite de regressao explicita para preservacao de source hooks/spans no caminho `LowerToIRVM -> OptimizeIRVM -> EmitBytecode`.
|
|
|
|
## Dependencies
|
|
|
|
Prerequisitos diretos:
|
|
|
|
1. `PR-06.2` (harness de equivalencia de otimizacao).
|
|
2. `PR-06.3` (passes reais de reescrita/remocao no optimizer).
|
|
|
|
## Scope
|
|
|
|
1. Testes dedicados para verificacao de span retention por pass:
|
|
- `UnreachableInstructionEliminationPass`,
|
|
- `NormalizeRedundantJumpTargetsPass`,
|
|
- `SimplifyJumpToNextPcPass`.
|
|
2. Assercoes de preservacao de `BytecodeEmitter.Operation.span` para operacoes sobreviventes.
|
|
3. Assercoes de preservacao de spans em operacoes de salto apos remapeamento de target.
|
|
4. Atualizacao da matriz para converter `G21-7.5` de `partial` para `pass`.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao introduz novo formato de source map.
|
|
2. Nao altera contrato de diagnostico fora do backend pipeline.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Criar fixture IRVM com spans distintos por instrucao/op.
|
|
2. Executar optimize com passes reais e comparar mapeamento de spans esperado no output.
|
|
3. Incluir caso com salto reescrito para validar span do salto apos remap.
|
|
4. Incluir caso com eliminacao de instrucoes para validar que operacoes restantes mantem spans originais.
|
|
5. Atualizar matriz (`docs/general/specs/22...`) com referencias aos novos testes.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. Existe suite de teste dedicada para preservacao de spans/source hooks no optimizer.
|
|
2. Reescritas de salto preservam spans da operacao original.
|
|
3. Eliminacao de instrucoes nao corrompe spans das operacoes remanescentes.
|
|
4. `G21-7.5` evolui para `pass`.
|
|
|
|
## Tests
|
|
|
|
1. Novos testes em `backend/irvm` (ex.: `OptimizeIRVMSourceAttributionTest` ou equivalente).
|
|
2. Reexecucao obrigatoria:
|
|
- `:prometeu-compiler:prometeu-build-pipeline:test`
|
|
|
|
## Affected Documents
|
|
|
|
1. `docs/general/specs/21. IRVM Optimization Pipeline Specification.md`
|
|
2. `docs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md`
|
|
|
|
## Open Questions
|
|
|
|
Sem bloqueios arquiteturais.
|