Desvantagens da forma intermediária funcional

16

Estou escrevendo um otimizador para uma linguagem semelhante ao JavaScript e preciso escolher uma representação de código intermediária. A escolha óbvia / típica atualmente é a atribuição única estática (SSA).

No entanto, a Implementação do Compilador Moderno em C também discute a forma intermediária funcional, que basicamente significa tornar-se funcional pura para a representação intermediária (pura em termos apenas de variáveis ​​locais, os dados de heap ainda são mutáveis, e não o CPS, apenas letblocos simples e chamadas finais) e tem algumas vantagens em termos de facilidade de raciocínio.

Presumivelmente, não é um acéfalo ou todo mundo já estaria usando essa representação, então minha pergunta é: quais desvantagens a forma intermediária funcional tem em comparação com a SSA?

rwallace
fonte
3
Que tipo de análise você fará sobre essa forma intermediária? O SSA é ótimo para eliminação de código morto, propagação constante, especialização parcial e outros. Se esse tipo de coisa não estiver no seu menu, você pode pular o SSA e usar uma representação mais descontraída para obter análises mais simples. Porém, gerar um formulário SSA é uma tarefa bastante trivial e você pode facilmente converter o SSA em CPS (e vice-versa), o que dobra os benefícios.
SK-logic,
Sim, estou buscando o monty completo, e o idioma de entrada e o formato de saída (inicialmente C ++) são linguagens imperativas.
precisa saber é o seguinte
Gerar um formulário SSA é uma tarefa bastante trivial, e você pode facilmente converter o SSA em CPS, além de converter o CPS em SSA, o que dobra os benefícios.
Leon Alexis Cardinal

Respostas:

1

O SSA é ótimo para eliminação de código morto, propagação constante, especialização parcial e outros. Se esse tipo de coisa não estiver no seu menu, você pode pular o SSA e usar uma representação mais descontraída para passar por análises mais simples

Adromil Balais
fonte