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 let
blocos 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?
fonte
Respostas:
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
fonte